如何从平均向量中获得word2vec相似度



例如,有单词表示"apple"、"banana"one_answers"orange"。

我们将执行下面的代码来节省苹果和香蕉之间的距离。

model.similarity('apple', 'banana')

但我想知道的是"苹果"one_answers"整颗水果"之间的相似性。我如何得到苹果和整个水果的相似性?

我已经得到了整个水果的载体。例如whole fruits=[0, 0.4, 0.2, 0.2, 0.5, .....]

model.similarity计算单词嵌入向量之间的幕后余弦相似度。如果你已经有了"0"的向量;苹果;以及";全果";然后可以使用sklearn的成对余弦相似度函数来获得余弦相似度。

看起来您可能正在使用gensim库的单词向量支持,因此您的model是其KeyedVectors类型的变体。

如果这样一组单词向量model已经有了字符串标记'whole fruits'的向量,那么您可以使用与'apple''banana':完全相同的调用

model.similarity('apple', 'whole fruits')

相反,如果'whole fruits'的向量不在模型中,而是来自其他地方,则必须自己计算余弦相似度。你可以在Adnan S的答案中使用scikit学习实用程序函数,或者使用与gensim.similarity()方法相同的计算方法:

import numpy as np
from gensim import matutils
vec1 = model.word_vec('apple', use_norm=True)
vec2 = matutils.unitvec(your_whole_fruits_vector)
cos_sim = ns.dot(vec1, vec2)

最新更新