来自 doc2vec 的正确答案

如何解决来自 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 参数。因此,它是非标准的,您应该展示其代码或解释您的代码所基于的在线示例。同样,不清楚 datafileslabels1 的值或间接内容是什么。

输出中的 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?