【发布时间】:2018-09-12 21:06:14
【问题描述】:
我在 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……我真的不明白。为什么这么低的数字?当我连续运行几次负载时,我也没有得到相同的结果。
感谢您的帮助
【问题讨论】:
标签: python nlp gensim doc2vec sentence-similarity