我如何从均值向量中获得 word2vec 相似度?

How do i get word2vec similarity from the mean vector?

例如'apple'、'banana'、'orange'等词。

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

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

但是我想知道的是'apple'和'whole fruits'之间的相似度。 我如何获得苹果和整个水果的相似性?

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

model.similarity 计算单词嵌入向量之间的幕后余弦相似度。如果您已经有了“苹果”和“整个水果”的向量,那么您可以使用 sklearn's pairwise cosine similarity function.

获得余弦相似度

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

如果这样的词向量集 model 已经有字符串标记 'whole fruits' 的向量,那么您可以使用与 'apple''banana':

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

如果您的 'whole fruits' 向量尚未在模型中,而是来自其他地方,则您必须自己计算余弦相似度。您可以使用 ,或使用与 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)