【问题标题】:Cosines similarity on large data sets大型数据集上的余弦相似度
【发布时间】:2015-09-30 20:11:36
【问题描述】:

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

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

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

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

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

问题

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-21
      • 2017-01-14
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-01
      • 2017-12-12
      • 1970-01-01
      相关资源
      最近更新 更多