我在 Doc2Vec 上苦苦挣扎,我看不出我做错了什么。我有一个带有句子的文本文件。我想知道,对于给定的句子,我们可以在该文件中找到的最接近的句子是什么。
下面是创建模型的代码:
sentences = LabeledLineSentence(filename)
model = models.Doc2Vec(size=300, min_count=1, workers=4, window=5, alpha=0.025, min_alpha=0.025)
model.build_vocab(sentences)
model.train(sentences, epochs=50, total_examples=model.corpus_count)
model.save(modelName)
出于测试目的,这是我的文件:
uduidhud duidihdd
dsfsdf sdf sddfv
dcv dfv dfvdf g fgbfgbfdgnb
i like dogs
sgfggggggggggggggggg ggfggg
这是我的测试:
test = "i love dogs".split()
print(model.docvecs.most_similar([model.infer_vector(test)]))
不管训练什么参数,这显然应该告诉我最相似的句子是第 4 个(SENT_3 或 SENT_4,我不知道它们的索引是如何工作的,但句子标签是这种形式)。但结果如下:
[('SENT_0', 0.15669342875480652),
('SENT_2', 0.0008485736325383186),
('SENT_4', -0.009077289141714573)]
我错过了什么?如果我尝试使用相同的句子(我喜欢狗),我有 SENT_2,然后是 1,然后是 4……我真的不明白。为什么这么低的数字?当我连续运行几次负载时,我也没有得到相同的结果。
谢谢你的帮助