Вы можете точно увидеть, что most_similar()
делает в его исходном коде:
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py#L485
Это не совсем "найти точки в векторном пространстве, которые находятся максимально близко кположительные векторы и как можно дальше от отрицательных ".Скорее, как описано в оригинальных статьях word2vec, он выполняет векторную арифметику: добавляя положительные векторы, вычитая отрицательные, затем из этой результирующей позиции, перечисляя известные векторы, ближайшие к этому углу.
Этого достаточно, чтобы решить аналогии в стиле man : king :: woman :: ?
с помощью вызова, подобного:
sims = wordvecs.most_similar(positive=['king', 'woman'],
negative=['man'])
(Вы можете думать об этом как «начать с« короля »-вектора, добавить'woman'-vector, вычтите' man'-vector, откуда вы попали, сообщите ранжированные слова-векторы, наиболее близкие к этой точке. ")