例如,有单词表示"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)