- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Gensim 库使用 doc2vec 训练一些数据文件,同时尝试使用方法 model.docvecs.most_similar("file")
测试其中一个文件的相似性,我总是得到 91% 以上的所有结果,它们之间几乎没有差异(这不符合逻辑),因为文件之间没有相似之处。所以结果不准确。
这是训练模型的代码
model = gensim.models.Doc2Vec(vector_size=300, min_count=0, alpha=0.025, min_alpha=0.00025,dm=1)
model.build_vocab(it)
for epoch in range(100):
model.train(it,epochs=model.iter, total_examples=model.corpus_count)
model.alpha -= 0.0002
model.min_alpha = model.alpha
model.save('doc2vecs.model')
model_d2v = gensim.models.doc2vec.Doc2Vec.load('doc2vecs.model')
sim = model_d2v.docvecs.most_similar('file1.txt')
print sim
[('file2.txt', 0.9279470443725586), ('file6.txt', 0.9258157014846802), ('file3.txt', 0.92499840259552), ('file5.txt', 0.9209873676300049), ('file4.txt', 0.9180108308792114), ('file7.txt', 0.9141069650650024)]
我做错了什么?如何提高结果的准确性?
最佳答案
您的it
数据是什么?它是如何准备的? (例如,print(iter(it).next())
会做什么,特别是如果连续调用它两次?)
通过调用 train()
100 次,并保留默认的 model.iter
5,您实际上对数据进行了 500 次传递。前 5 遍将使用 train()
内部有效的 alpha
管理将学习率逐渐降低到您声明的 min_alpha
值。然后,您接下来的 495 次通过将按照您自己管理笨拙的 alpha 速率进行,首先回升至 0.025
附近,然后降低每批 5 次,直到达到 0.005
。
这都不是一个好主意。您只需调用一次train()
,并将您想要的epochs
数量传递给它即可。已发表作品的典型 epoch 数量为 10-20。 (多一点可能对小数据集有帮助,但如果您认为需要数百个数据集,则数据或设置可能有其他问题。)
如果数据量很小,您将不会得到非常有趣的 Word2Vec
/Doc2Vec
结果,因为这些算法依赖于大量不同的示例。已发表的结果往往使用包含数万到数百万个文档的训练集,每个文档至少有几十个,但最好是数百个单词长。对于较小的数据集,有时您可以通过使用更多的训练遍数和更小的向量来获得足够的结果。此外,使用更简单的 PV-DBOW 模式 (dm=0
) 可能有助于处理较小的语料库/文档。
most_similar()
报告的值不是相似性“百分比”。它们是余弦相似度值,从 -1.0 到 1.0,它们的绝对值不如不同结果的相对排名重要。因此,即使存在大量相似度 >0.9 的结果也没关系,只要这些文档比排名较低的文档更像查询文档即可。
因此,查看建议的最相似的各个文档才是真正的测试。如果它们看起来像是无稽之谈,则可能是您的数据或其准备或训练参数存在问题。
对于具有足够真实自然语言文本的数据集,通常需要较高的 min_count
值来提供更好的结果。真实文本往往包含大量低频单词,如果没有更多示例,这些单词并不意味着强有力的事物,因此在训练期间保留它们会成为噪音,使模型变得不那么强大。
关于python - 使用 gensim 库的 doc2vec 的相似度结果不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52286330/
我遇到了一个让我非常难过的问题。但现在看来这一定是一个普遍的问题,我很惊讶我找不到关于它的另一个问题。 基本上,我的网站上会出现一些图标。我希望它们在每台设备上都显示出大致相同的大小——大致是可触摸的
我是一名 Java 专业人士。现在我喜欢转向其他编程语言。谁能建议我哪种编程语言更容易消化,并且该语言具有 Web 开发功能。我对 Web 开发感兴趣。 最佳答案 C# - 网络开发非常好(只需看看这
我需要为不同的 url 发送不同的响应。但是我正在使用的正则表达式不起作用。 有问题的两个正则表达式是 "/v1/users/[^/]+/permissions/domain/HTTP/" (例
让我描述一下我的问题。有一个输入字符串和一个包含数千个字符串的表。我正在寻找搜索与输入字符串最相似* 字符串的最佳方法。搜索应该返回一个包含 ~10 个建议字符串的列表,按相似度排序。字符串在数据库中
我在使用 crypt() 时遇到问题,如果用户有密码(本例中为 password1),并且他们将其更改为 password2,则散列会返回相同的结果。您可以在此处进行测试:旧链接输入 password
我问这个是因为我发现 XML 在视觉上没有吸引力。我知道 XML 非常有名,很有用,而且它被大多数(如果不是全部)程序员接受为一种非常有用的定义和结构化数据的语言;然而,我真的不觉得盯着它看、看着它或
我有工作需要在 14 天内完成。我有5名 worker 。一天正好需要3个 worker 。每个 worker 最多只能工作 9 天。每个 worker 都有自己的日期偏好,每个 worker 每天都
FileStream 或 DB 句柄类型的对象必须正确关闭,因为它在内部使用 Windows 句柄。同样,Threads 也使用 Windows 句柄吧?线程是否有一些内部机制来释放那些 Window
如果这是非常基本的,请原谅。我一直在尝试遍历行数组中的每个单元格包括标题单元格。我可以在 Nokogiri CSS 选择器中使用 OR 运算符吗? thang= Nokogiri::HTML(IO.r
默认情况下,RichTextFx(顶部控件)看起来不像 TextArea(底部控件): 我找到了一种添加圆角的方法(只需从 modena.css 复制并配置 some styles): .virtua
在 64 位 Java 中,每个对象实例往往包含一个 192-bit header , 包含 类指针, 标志和 锁(每个 64 位)。 这可能会导致小对象的大量内存开销。 尼姆的情况是否类似?用两种语
我正在开发一个具有多个功能(通过 tableview 选择)的应用程序,这些功能几乎都做同样的事情,相似的布局、相似的按钮、相似的输入字段等等。但在我相信它们自己的地方有足够的不同类(class)。每
题目地址:https://leetcode-cn.com/problems/similar-rgb-color/ 题目描述 Inthe following, every capital lette
我正在编写 R 代码,我希望它在“非调试”或“调试”模式下运行。在 Debug模式下,我希望代码打印出运行时信息。 在其他语言中,我通常会有某种打印功能,除非打开标志(用于编译或运行时),否则什么都不
我不明白这个OP接受的答案的一部分: Javascript function scoping and hoisting 作者说: " 此外,在这种情况下, function a() {} 行为与相同
我正在做一个bcmp(&v6_addr1,&v6_addr2,sizeof(v6_addr1)) (gdb) p v6_addr2 $15 = {u = {b = "0\001", '\000' ,
我有一个充满按钮的 Canvas,我将其 ID 存储在字典中。 Canvas 很长,带有垂直滚动条。有一种方法可以自动将 View 定位在给定的按钮上吗? 当使用 Text 时,txt.see(pos
我正在尝试使用 Python 2.6 和 PIL 计算两个图像的相似度(读作:Levenshtein 距离)。 我打算给我们e python-levenshtein用于快速比较的库。 主要问题: 什么
换句话说,php $object->method(); 和 $object->property = 'someValue'; 相当于,js: $object.method(); 和 $object.p
我写了一个简单的函数,它接收实现 .index() 的东西和要检查的字符列表。 我的假设是,由于字符串和元组都是不可变的,因此它们具有相似的性能(或者至少,元组的性能优于列表)。相反,元组似乎等同于列
我是一名优秀的程序员,十分优秀!