Понимание gensim word2vec's most_s Similar

Я не уверен, как я должен использовать самый-похожий метод Word2Vec от gensim. Допустим, вы хотите проверить проверенный пример: мужчина - король, а женщина - Х; найти X. Я думал, что это то, что вы могли бы сделать с этим методом, но из результатов, которые я получаю, я не думаю, что это правда.

Документация гласит:

Найдите топ-N самых похожих слов. Положительные слова положительно влияют на сходство, отрицательные слова отрицательно.

Этот метод вычисляет косинусное сходство между простым средним вектором весов проекции заданных слов и векторами для каждого слова в модели. Метод соответствует словесно-аналогичным и дистанционным скриптам в оригинальной реализации word2vec.

Я предполагаю, что most_similar берет положительные и отрицательные примеры и пытается найти точки в векторном пространстве, которые как можно ближе к положительным векторам и как можно дальше от отрицательных. Это верно?

Кроме того, существует ли метод, который позволяет нам отобразить отношение между двумя точками к другой точке и получить результат (см. Пример мужчина-король женщина-Х)?

1 ответ

Решение

Вы можете посмотреть, что именно most_similar() делает в своем исходном коде:

https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py

Это не совсем "найти точки в векторном пространстве, которые как можно ближе к положительным векторам и как можно дальше от отрицательных". Скорее, как описано в оригинальных статьях word2vec, он выполняет векторную арифметику: добавляя положительные векторы, вычитая отрицательные, затем из этой результирующей позиции, перечисляя известные векторы, ближайшие к этому углу.

Этого достаточно, чтобы решить man : king :: woman :: ?в стиле аналогий, через вызов как:

sims = wordvecs.most_similar(positive=['king', 'woman'], 
                             negative=['man'])

(Вы можете думать об этом как: "начните с" короля "-вектора, добавьте" женщины "-вектора, вычтите" мужика-вектора ", из которого вы попадаете, сообщите ранговые векторы слов, наиболее близкие к этой точке".)

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