Я пытаюсь понять doc2vec и могу ли я использовать его для решения своего сценария. Я хочу пометить предложения с 1 или более тегами, используя TaggedSentences([слова], [теги]), но я не уверен, правильно ли я понимаю.
в общем, мне нужно, чтобы это произошло (или я совсем не в теме)
Я создаю 2 TaggedDocuments
TaggedDocument(words=["the", "bird", "flew", "over", "the", "coocoos", "nest", labels=["animal","tree"])
TaggedDocument(words=["this", "car", "is", "over", "one", "million", "dollars", labels=["motor","money"])
Я строю свою модель
model = gensim.models.Doc2Vec(documents, dm=0, alpha=0.025, size=20, min_alpha=0.025, min_count=0)
Затем я тренирую свою модель
model.train(documents, total_examples=len(documents), epochs=1)
Итак, когда я все это сделал, я ожидаю, когда я выполню
model.most_similar(positive=["bird", "flew", "over", "nest])
это [животное,дерево], но я получаю
[('the', 0.4732949137687683),
('million', 0.34103643894195557),
('dollars', 0.26223617792129517),
('one', 0.16558100283145905),
('this', 0.07230066508054733),
('is', 0.012532509863376617),
('cocos', -0.1093338280916214),
('car', -0.13764989376068115)]
ОБНОВЛЕНИЕ: когда я делаю вывод
vec_model = model.Word2Vec.load(os.path.join("save","vec.w2v"))
infer = vec_model.infer_vector(["bird", "flew", "over", "nest"])
print(vec_model.most_similar(positive=[infer], topn=10))
я получил
[('bird', 0.5196993350982666),
('car', 0.3320297598838806),
('the', 0.1573483943939209),
('one', 0.1546170711517334),
('million', 0.05099521577358246),
('over', -0.0021460093557834625),
('is', -0.02949431538581848),
('dollars', -0.03168443590402603),
('flew', -0.08121247589588165),
('nest', -0.30139490962028503)]
Итак, слон в комнате. Является ли doc2vec тем, что мне нужно для выполнения описанного выше сценария, или мне следует вернуться в постель и хорошенько подумать о том, чего я пытаюсь достичь в жизни :)
Любая помощь очень ценится