Как найти наиболее похожий на массив в gensim - PullRequest
0 голосов
/ 10 июля 2020

Я знаю, что метод most_similar работает при вводе ранее добавленной строки, но как вы переверните поиск в массиве numpy некоторых слов?

modelw2v = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz',binary=True)
differenceArr = modelw2v["King"] - modelw2v["Queen"]


# This line does not work
modelw2v.most_similar(differenceArr) 

1 Ответ

0 голосов
/ 10 июля 2020

Метод most_similar() может принимать векторы в качестве источника поиска, но вы должны явно указать их как один член списка, предоставленного для параметра positive метода, чтобы его logi c для более простой обработки происхождение (например, строка или список строк) не путается.

В частности, это должно работать с вашим другим кодом:

model23v.most_similar(positive=[differenceArr,])

В более общем плане вы можете предоставить списки векторов ( или словарные ключи для поиска векторов) к параметрам positive и negative этого метода, и метод объединит их (в соответствии с точными logi c, которые вы можете увидеть в исходном коде). Так, например, выдающийся пример word2ve c ...

wv('king') - wv('man') + wv('woman') = ?

... может быть выполнен с помощью метода most_similar() без выполнения ваших собственных других векторных арифметических операций c:

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