Я пытаюсь выяснить сходство между 2 документами .Я использую Doc2vec Gensim для обучения 10К документов .Есть около 10 строковых тегов .Каждый тег состоит из уникального слова и содержит какие-то документы.Модель обучается с использованием метода распределенной памяти .
Doc2Vec(alpha=0.025, min_alpha=0.0001, min_count=2, window=10, dm=1, dm_mean=1, epochs=50, seed=25, vector_size=100, workers=1)
Я также пробовал dm и dbow . дм дает лучший результат (оценка сходства) по сравнению с dbow .Я понял понятия дм против дбоу .Но не знаю, какой метод подходит для измерения сходства между двумя документами.
Первый вопрос: Какой метод лучше всего подходит для сходства?
model.wv.n_similarity(<words_1>, <words_2>)
дает оценку сходства с использованием векторов слов .
model.docvecs.similarity_unseen_docs(model, doc1, doc2)
дает оценку сходства, используя векторы doc , где doc1 и doc2 не являются тегами / или индексами doctag. Каждый документ doc1 и doc2 содержит 10-20 словосочетаний.
Оба wv.n_sdentifity и docvecs.simility_unseen_docs обеспечивают различные оценки сходства дляодинаковые типы документов.
docvecs.simility_unseen_docs дает немного хорошие результаты по сравнению с wv.n_shoity , но wv.n_shoity иногда также дает хорошие результаты.
Вопрос: В чем разница между docvecs.simility_unseen_docs и wv.n_simility?Могу ли я использовать docvecs.simility_unseen_docs, чтобы найти оценку сходства между невидимыми данными (это может быть глупый вопрос)?
Почему я спросил, потому что docvecs.shoity_unseen_docs предоставляет оценку сходства тегов, а не на реальных словах, принадлежащих их тегам.Я не уверен, пожалуйста, поправьте меня здесь, если я ошибаюсь.
Как я могу преобразовать косинусное сходство в вероятность?
Спасибо.
model = Doc2Vec(alpha=0.025, min_alpha=0.0001, min_count=2, window=10, dm=1, dm_mean=1, epochs=50, seed=25, vector_size=100, workers=4)
# Training of the model
tagged_data = [TaggedDocument(words=_d, tags=[str(i)]) for i, _d in enumerate(<list_of_list_of_tokens>)]
model.build_vocab(tagged_data)
model.train(tagged_data, total_examples=model.corpus_count, epochs=model.epochs)
# Finding similarity score
model.wv.n_similarity(<doc_words1>, <doc_words2>)
model.random.seed(25)
model.docvecs.similarity_unseen_docs(model, <doc_words1>, <doc_words2>)