我正在尝试实现类似于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
实现相似性有什么问题吗?