目前我正在研究数据挖掘、文本比较并找到了这个:https ://en.wikipedia.org/wiki/Cosine_similarity 。
因为我已经成功地实现了这个算法来比较两个字符串,所以我决定尝试一些更复杂的任务来实现。我已经迭代了包含大约250k文档的数据库,并将数据库中的一个随机文档与该数据库中的整个文档进行了比较。
比较所有这些项目的时间:316.35898590088 秒,即 - > 5 分钟来比较所有 250k 文档!
由于这个结果,出现了许多问题,我不想提出一些建议。为了清楚起见,首先我将描述一些可能有用的细节。
- 作为编程语言选择了PHP。
- 文档存储在 MySQL 中。
- 余弦相似度函数的实现只包含这个函数,没有停用词和任何其他花哨的东西。
问题
- 有什么办法可以达到更好的性能吗?我应该从哪里开始,通过调整算法(即提前准备向量等),通过使用其他技术等?
- 我应该如何以及在哪里存储这些比较结果。例如,我想打印一些图表,我可以通过相似度分数查看所有这些 250k 文档,以便我可以识别哪些最相似等等。