首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生产环境中的文档相似性

生产环境中的文档相似性
EN

Stack Overflow用户
提问于 2018-05-10 01:53:40
回答 1查看 433关注 0票数 3

我们有许多文件。在用户提交新文档时,我们的目标是告知他现有文档可能重复的情况(就像stackoverflow建议的问题可能已经有答案一样)。

在我们的系统中,新文档每分钟上传一次,而且大部分都是关于同一个主题的(在这个主题中,重复的可能性更大)。

我们当前的实现包括对文档进行培训的gensim doc2vec模型(带有唯一文档ids的标记)。我们推断出新文档的向量,并使用它找到most_similar文档(ids)。选择doc2vec模型的原因在于我们希望利用语义来提高结果。据我们所知,它不支持在线培训,因此我们可能需要安排一个cron或一些定期更新模型的内容。但是,当文件爆出时,调度cron将是不利的。用户可以上传副本,而模型还没有培训为新的数据。同时,如果有大量的数据,培训时间就会更长。

因此,我想知道这些案件是如何在大公司处理的。还有什么更好的选择吗?还是更好的算法来解决这样的问题?

EN

Stack Overflow用户

回答已采纳

发布于 2018-05-10 04:45:59

你不需要把旧的模型降下来就开始训练一个新的模型,所以尽管有任何的训练滞后,或者新文档的爆发,你总会有一个活的模型尽它最大的努力。

根据文档空间随时间变化的程度,您可能会发现再培训的好处微乎其微。(一种建立在大量历史记录基础上的好模型,对于无限期地推断新的向量来说,可能仍然是很好的。)

注意,调优推理来使用更多的steps (特别是对短文档),或者使用较低的启动alpha (更像是训练缺省值0.025),可能会带来更好的结果。

如果文字向量可用,也有“字移动距离”(WMD)计算文件的相似性,这可能会更好地识别相近的重复。但是请注意,计算起来可能相当昂贵--您可能只想对可能的候选子集进行计算,或者必须添加许多并行处理器才能批量执行。另一种新的距离度量叫做“软余弦相似性”(在最近的gensim中可用),它介于简单向量到矢量余弦相似性和大规模毁灭性武器的复杂性之间,这可能值得一试。

在词汇表没有扩展的情况下,您可以加载一个旧的Doc2Vec模型,并继续使用train()模型--从一个已经在工作的模型开始,可以帮助您以更少的传递获得类似的结果。但请注意:它目前不支持学习任何新词,最安全的做法是重新训练所有已知的例子交织在一起。(如果您只对增量的新示例进行培训,该模型可能会失去对不再重新呈现的旧文档的平衡理解。)

(如果你主要关注的是那些重复准确的字数的文档,而不是仅仅类似的模糊主题,那么你可能会考虑混合--在其他技术中,比如将文档分解成一个字符包--ngram,或者像剽窃检测应用中的共同之处那样,使用“瓦印”。)

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50264369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档