0

目前我正在研究数据挖掘、文本比较并找到了这个:https ://en.wikipedia.org/wiki/Cosine_similarity 。

因为我已经成功地实现了这个算法来比较两个字符串,所以我决定尝试一些更复杂的任务来实现。我已经迭代了包含大约250k文档的数据库,并将数据库中的一个随机文档与该数据库中的整个文档进行了比较。

比较所有这些项目的时间:316.35898590088 秒,即 - > 5 分钟来比较所有 250k 文档!

由于这个结果,出现了许多问题,我不想提出一些建议。为了清楚起见,首先我将描述一些可能有用的细节。

  • 作为编程语言选择了PHP。
  • 文档存储在 MySQL 中。
  • 余弦相似度函数的实现只包含这个函数,没有停用词和任何其他花哨的东西。

问题

  • 有什么办法可以达到更好的性能吗?我应该从哪里开始,通过调整算法(即提前准备向量等),通过使用其他技术等?
  • 我应该如何以及在哪里存储这些比较结果。例如,我想打印一些图表,我可以通过相似度分数查看所有这些 250k 文档,以便我可以识别哪些最相似等等。
4

1 回答 1

1

PHP 和 MySQL 都是您可能做出的最糟糕的选择。

高效的余弦相似度是 Lucene 的核心。关键的加速技术是 comoressed 倒排索引。但是你真的不想在 PHP 中重新实现它们......

于 2015-07-12T21:07:06.797 回答