я хочу получить список семантически похожих слов из двух встроенных документов в python - PullRequest
1 голос
/ 10 апреля 2020

Я работаю над внедрением текста в python. Где я нашел сходство между двумя документами с моделью Doc2ve c. код выглядит следующим образом:

for doc_id in range(len(train_corpus)):
    inferred_vector = model.infer_vector(train_corpus[doc_id].words) # it takes each document words as a input and produce vector of each document
    sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs)) # it takes list of all document's vector as a input and compare those with the trained vectors and gives the most similarity of 1st document to other and then second to other and so on .
    print('Document ({}): «{}»\n'.format(doc_id, ' '.join(train_corpus[doc_id].words)))
    print(u'SIMILAR/DISSIMILAR DOCS PER MODEL %s:\n' % model)
    for label, index in [('MOST', 0), ('SECOND-MOST', 1), ('MEDIAN', len(sims)//2), ('LEAST', len(sims) - 1)]:
        print(u'%s %s: «%s»\n' % (label, sims[index], ' '.join(train_corpus[sims[index][0]].words)))

теперь, из этих двух встроенных документов, как я могу извлечь набор семантически похожих слов этих конкретных документов.

, пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 12 апреля 2020

Только некоторые режимы Doc2Vec также обучают слова-векторы: dm=1 (по умолчанию) или dm=0, dbow_words=1 (DBOW do c -векторы, но добавлены пропускаемые слова-векторы. Если вы использовали такие режиме, тогда в вашем свойстве model.wv будут слова-векторы.

Вызов метода model.wv.similarity(word1, word2) даст вам попарное сходство для любых двух слов.

Итак, вы мог бы перебрать все слова в doc1, затем собрать сходства для каждого слова в doc2 и сообщить единственное наибольшее сходство для каждого слова.

...