如何解决来自 doc2vec 的正确答案
我执行 doc2vec 模型以获得文本相似度 我的代码并没有获得 reslt
it = LabeledLinesentence(datafiles,labels1)
model = gensim.models.doc2vec(vector_size=300,min_count=0,alpha=0.025,min_alpha=0.025)
model.build_vocab(it)
#training of model
for epoch in range(100):
print ('iteration '+str(epoch+1))
model.train(it,total_examples=model.corpus_count,epochs=model.epochs)
model.alpha -= 0.002
model.min_alpha = model.alpha
#saving the created model
model.save('doc2vec.model')
print ("model saved")
#loading the model
d2v_model = gensim.models.doc2vec.doc2vec.load('doc2vec.model')
#start testing
seed_text = "consider illegal immoral plagiarism do varIoUs"
tokens1 = seed_text.lower().split()
vector1 = d2v_model.infer_vector(tokens1)
#to get most similar document with similarity scores using document-index
most_similar = d2v_model.docvecs.most_similar(positive = [vector1] )
# output_sentences(most_similar)
print(u'%s %s: %s\n' % ("Most",most_similar[0][1],data[int(most_similar[0][0])]))
大多数 0.14691241085529327:M
为什么不只打印数据 bt 是什么意思,我该怎么做才能解决问题 问候
解决方法
您使用的 LabeledLineSentence
版本与过去在 Gensim 中的代码不匹配。您的版本采用了额外的 labels1
参数。因此,它是非标准的,您应该展示其代码或解释您的代码所基于的在线示例。同样,不清楚 datafiles
和 labels1
的值或间接内容是什么。
输出中的 M
是代码 data[int[most_similar[0][0])]
的结果。您的代码没有显示 data
是什么,但它可能是一个字符串,并且字符 M
位于 int(most_similar[0][0])
计算的任何位置。
(most_similar[0][0]
的值应该是与您推断的文本向量最相似的文档标签,它可能是一个整数或字符串,具体取决于您如何准备训练数据,在未显示的 { {1}} 代码。trining 集中肯定有一个文档以它作为标签。)
数字 LabeledLineSentence
是相似度。这不是很多,因此您的探测推断文本与任何培训文档都不太相似。 (也许这表明存在其他问题。)
您的代码还显示了一些不好的做法:
- 多次调用
0.14691241085529327
并使用非默认train()
您正在操纵自己 - 有关详细信息,请参阅答案 My Doc2Vec code,after many loops of training,isn't giving good results. What might be wrong? - 设置
min_alpha
- 几乎总是一个坏主意,min_count=0
和类似的算法受益于忽略稀有词 - 使用大
Doc2Vec
- 这仅适用于一些非常大的训练语料库,您最有可能使用比默认值大得多的vector_size=300
并且仅尝试在通过较小的实验获得成功之后
我建议您不要相信或使用任何激发此代码的在线文章,而是从 Gensim 文档中的示例开始,逐步根据您的需要构建它们。
其他通用的好步骤:
- 在 INFO 级别启用日志记录,观察输出:它可能会提示未按应有方式(通过进度计数或计时)运行的步骤
- 仔细检查您的输入,尤其是您创建的
min_count
。
例如,如果您运行:
it
它是否打印了您打算用作培训材料的第一个文档,并带有正确的字词和标签?如果不是,则说明您的数据源存在问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。