doc2vec получить наиболее похожий документ - PullRequest
0 голосов
/ 20 мая 2018

Я изо всех сил пытаюсь понять использование doc2vec.Я обучил игрушечную модель на наборе документов, используя некоторый пример кода, который я видел при поиске в Google.Далее я хочу найти документ, который модель считает наиболее близким к документам в моих данных обучения.Скажем, мой документ «Это образец документа».

test_data = word_tokenize("This is a sample document".lower())
v = model.infer_vector(test_data)
print(v)
# prints a numpy array.

# to find most similar doc using tags
similar_doc = model.docvecs.most_similar('1')
print(similar_doc)
# prints [('0', 0.8838234543800354), ('1', 0.875300943851471), ('3', 
#          0.8752948641777039), ('2', 0.865660548210144)]

Я искал справедливо, но не понимаю, как интерпретировать Similar_doc.Я хочу ответить на вопрос: «какие документы в моих обучающих данных наиболее точно соответствуют документу« Это образец документа »», так как я могу отобразить вывод Similar_doc обратно на обучающие данные?Я не понял массив кортежей, вторая половина каждого кортежа должна быть вероятностью, но что такое «0», «1» и т. Д.?

1 Ответ

0 голосов
/ 21 мая 2018

При поставке с тегом doc, известным из обучения, most_similar() вернет список из 10 наиболее похожих тегов документов с их значениями косинусного сходства.Чтобы затем получить векторы, вы должны просмотреть возвращенные теги:

vector_for_1 = model.docvecs['1']

Модель не хранит исходные тексты;если вам нужно их найти, вам нужно запомнить собственную ассоциацию тегов к текстам.

Важные примечания:

  • Doc2Vec / Word2Vec don 'хорошо работают с примерами размером с игрушку: полезное относительное расположение конечных векторов требует множества разнообразных примеров.(Иногда вы можете выжать средние результаты из небольших наборов данных, как это делается в некоторых тестовых примерах gensim и демонстрациях для начинающих, используя гораздо меньшие векторы и множество других обучающих итераций - но даже там, этот код использует сотни текстов, каждый ссотни слов.)

  • Будьте осторожны, копируя обучающий код со случайных сайтов, множество таких примеров очень испорчены или устарели.

  • infer_vector() обычно выигрывает от использования большего значения steps, чем значение по умолчанию 5, особенно для коротких текстов.Кроме того, он часто лучше работает с нестандартным начальным значением alpha, таким как 0,025 (то же самое, что и тренировочное значение по умолчанию).

...