不同的余弦相似度函数为Word2vec向量提供不同的结果

时间:2018-03-22 09:05:13

标签: python-3.x scipy word2vec cosine-similarity

我正在尝试实现类似于gensim.similarity函数或cosine函数(来自scipy.spatial.distance)的余弦相似度/距离函数。 这是一个例子:

x = model.wv['best']
y = model.wv['amber']
print(cosine(x,y))

根据documentation,结果为'1.0',表示点积为0.

当我使用gensim.similarity函数时,我会得到不同的结果:

print(model.wv.similarity('amber','best'))
0.0757624812318

从这里我可以通过从1中减去相似度值来找到距离。 我试着通过编写上面的代码来实现Cosine Similarity:

 cosine_similarity = np.dot(model.wv['best'], model.wv['amber'])/(np.linalg.norm(model.wv['best'])* np.linalg.norm(model.wv['amber']))

输出:

nan
/Users/art/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:42: RuntimeWarning: invalid value encountered in float_scalars

当我这样做时:

amber = model.wv['amber']
best = model.wv['best']
res= np.dot(amber, best)

我没有收到任何警告信息,但结果为0

我的实现和scipy实现相似性有什么问题吗?

0 个答案:

没有答案