我得到了四个300维的word2vec向量,比如:
v1=model.wv.get_vector('A')
v2=model.wv.get_vector('B')
v3=model.wv.get_vector('C')
v4=model.wv.get_vector('D')
我想比较v1+v2
和v3+v4
的余弦相似性。
我应该先把它们减少两个二元向量吗?
我应该使用什么numpy
函数?
您可以使用简单的Python数学运算符添加向量:
va = v1 + v2
vb = v3 + v4
numpy
实际上没有余弦相似性(或余弦距离(函数,所以你必须使用从点积&单位范数(numpy
同时具有:
cossim = np.dot(va, vb) / (np.linalg.norm(va) * np.linalg.norm(vb))
或者,您可以利用scipy
中的余弦距离函数,并通过从1:中减去它来将其转换为余弦相似性
cosdist = scipy.spatial.distance.cosine(va, vb)
cossim = 1 - cosdist