2015-07-12 87 views
0

当前我正在研究数据挖掘,文本比较,并发现了这一个:https://en.wikipedia.org/wiki/Cosine_similarity大数据集上的余弦相似

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

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

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

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

问题

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

回答

1

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

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