大数据集上的余弦相似性

时间:2015-07-12 13:55:58

标签: php full-text-search cosine-similarity text-search

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

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

比较所有这些项目的时间:316.35898590088秒,那个,> 5分钟比较所有250k文件!

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

  • 选择编程语言PHP。
  • 文档存储在MySQL中。
  • 余弦相似函数的实现仅包含此项 功能,没有停止的词和任何其他花哨的东西。

问题

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

1 个答案:

答案 0 :(得分:1)

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

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