Акт обучения модели Doc2Vec
оставляет ее с записью векторов документов, извлеченных из данных обучения, и да, most_similar()
просто смотрит среди этих векторов.
Как правило, выполнение любых операций с новыми документами, которые не были частью обучения, потребует использования infer_vector()
.Обратите внимание, что такой вывод:
- игнорирует любые неизвестные слова в новом документе
- может выиграть от настройки параметров, особенно для коротких документов
- в настоящее время выполняется только один документвремя в одном потоке - таким образом, получение выводимых векторов для большой партии из N-тысяч документов может на самом деле медленнее, чем обучение новой модели на тех же N-тысячах документов
- не обязательно является детерминированным,если вы не предпримете дополнительных шагов, потому что лежащие в основе алгоритмы используют случайную инициализацию и процессы случайного выбора во время обучения / вывода
- просто дает вам вектор, не загружая его в любой удобный объект хранения для выполнения далее
most_similar()
-подобногосравнения
С другой стороны, такой вывод из «замороженной» модели может быть распараллелен между процессами или машинами.
Упомянутый вами метод n_similarity()
не совсем подходит для ваших нужд: он ожидает списки ключей поиска («тегов») для существующих векторов документов, не необработанных векторов, таких какВы предоставляете.
Метод similarity_unseen_docs()
, который вы упомянули в своем ответе, несколько уместен, но он просто берет пару документов, каждый раз пересчитывая их векторы - несколько расточительно, если документ одного нового документавектор нужно сравнивать с документами многих других новых документов.
Возможно, вы просто захотите обучить совершенно новой модели с вашими «учебными документами» и вашими «тестовыми документами».Затем все «тестовые документы» рассчитывают свои векторы документов и сохраняют их внутри модели как часть массового обучения.Это подходящий выбор для многих возможных приложений, и он действительно может выучить интересные отношения, основанные на словах, которые появляются только в «тестовых документах» совершенно без присмотра.И еще нет ни одной части вашего вопроса, которая объясняет причины, по которым это не может быть рассмотрено здесь.
В качестве альтернативы, вы можете infer_vector()
добавить все новые "тестовые документы" и поместить их вструктура, подобная различным KeyedVectors
служебным классам в gensim
- запоминание всех векторов в одном массиве, запоминание отображения от doc-ключа к vector-index и предоставление эффективного набора most_similar()
по набору векторов.