【发布时间】:2015-11-18 16:05:36
【问题描述】:
据我所知,simhash 和 minhash 可用于此任务。但是所有这些算法都必须遍历整个文本数据库,这将是非常可怕的。 是否有任何优化或其他算法可以加速任务? 我想出的只是将文本数据库分成几个部分并并行获得成对相似度。 我的文本数据库有大约 10 亿条记录。
【问题讨论】:
-
我使用 mongodb 来存储文本。 mongodb有什么东西可以帮助减少遍历整个数据库的负载,比如预存文本的hashcode,这在我的试用后没有多大帮助。
-
您必须至少遍历数据库一次才能做任何有用的事情。
-
@Juan Lopes,谢谢,我已将程序迁移到 spark 进行分布式计算,效果很好。
-
但是所有这些算法都必须遍历整个文本数据库,这将是非常糟糕的。 实际上,使用 minhash 您首先只需与文档的某个部分进行比较,然后就可以了它使用哈希,因此您实际上是与每个文档的部分进行比较,而不是与数据库中所有文档的整个文档进行比较。
-
对文档中的前 100-2000 个单词进行标记,并将标记编号存储到数据库中。使用令牌,您可以快速计算文档的 simhash,但令牌化还提供了其他不错的工具,例如快速关键字或短语搜索。
标签: text similarity minhash simhash