Измерение сходства между двумя документами с использованием Doc2Vec - PullRequest
0 голосов
/ 27 ноября 2018

Я уже обучил модель gensim doc2Vec, которая находит большинство документов, похожих на неизвестный.

Теперь мне нужно найти значение сходства между двумя неизвестными документами (которых не было в данных обучения, поэтомуна них нельзя ссылаться по идентификатору документа)

d2v_model = doc2vec.Doc2Vec.load(model_file)

string1 = 'this is some random paragraph'
string2 = 'this is another random paragraph'

vec1 = d2v_model.infer_vector(string1.split())
vec2 = d2v_model.infer_vector(string2.split())

в приведенном выше коде vec1 и vec2 успешно инициализируются для некоторых значений и размеров - 'vector_size'

теперь просматривает API-интерфейс gensimи примеры я не мог найти метод, который работает для меня, все они ожидают TaggedDocument

Могу ли я сравнить значение векторов объектов по значению, и если они ближе => тексты более похожи?

1 Ответ

0 голосов
/ 27 ноября 2018

Здравствуйте, просто, если кому-то интересно, для этого вам просто нужно косинусное расстояние между двумя векторами.

Я обнаружил, что большинство людей используют «пространственное» для этой точки потока

Вот небольшой фрагмент кода, который должен хорошо работать, если вы уже обучили doc2vec

from gensim.models import doc2vec
from scipy import spatial

d2v_model = doc2vec.Doc2Vec.load(model_file)

fisrt_text = '..'
second_text = '..'

vec1 = d2v_model.infer_vector(fisrt_text.split())
vec2 = d2v_model.infer_vector(second_text.split())

similairty = spatial.distance.cosine(vec1, vec2)
# similarity is how much two text differ from each other, higher values mean more distinct texts
...