Различные функции сходства косинусов дают разные результаты для векторов Word2vec
Я пытаюсь реализовать функцию сходства / расстояния Cosine, аналогичную gensim.similarity
функция или cosine
функция (от scipy.spatial.distance
). Вот пример:
x = model.wv['best']
y = model.wv['amber']
print(cosine(x,y))
Результат равен '1,0', согласно документации, что означает, что скалярное произведение равно 0.
Когда я использую gensim.similarity
Функция я получаю другой результат:
print(model.wv.similarity('amber','best'))
0.0757624812318
Отсюда я могу найти Расстояние, вычитая значение подобия из 1. Я попытался реализовать косинусное подобие самостоятельно, написав код выше:
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
реализация сходства?