Различные функции сходства косинусов дают разные результаты для векторов 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 реализация сходства?

0 ответов

Другие вопросы по тегам