Используя библиотеку gensim.models.Word2Vec
, у вас есть возможность предоставить модель и «слово», для которого вы хотите найти список наиболее похожих слов:
model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True)
model.most_similar(positive=[WORD], topn=N)
Интересно, есть ли возможность предоставить системе в качестве входных данных модель и «вектор» и попросить систему вернуть самые популярные похожие слова (их векторы очень близки к заданному вектору). Что-то подобное:
model.most_similar(positive=[VECTOR], topn=N)
Мне нужна эта функция для двуязычной среды, в которой у меня есть 2 модели (английская и немецкая), а также некоторые английские слова, для которых мне нужно найти их наиболее похожих немецких кандидатов. Я хочу получить вектор каждого английского слова из английской модели:
model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True)
vector_w_en=model_EN[WORD_EN]
а затем запросите немецкую модель с этими векторами.
model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True)
model_DE.most_similar(positive=[vector_w_en], topn=N)
Я реализовал это на C, используя исходную функцию расстояния в пакете word2vec. Но теперь мне нужно, чтобы он был на Python, чтобы иметь возможность интегрировать его с другими моими скриптами.
Знаете ли вы, есть ли уже в gensim.models.Word2Vec
библиотеке или других подобных библиотеках метод, который это делает? Надо ли мне реализовать это самостоятельно?
most_similar(..)
также возвращает вам оценки? Я представляю написанную вами настраиваемую функцию, которая вызываетmost_similar
для каждого слова в векторе, добавляет результаты из ВСЕХ в тот же список, а затем сортирует по счету и возвращает. - person nbryans   schedule 14.06.2016