如何为a描述的项目实现“类似项目”系统 一组标签?
在我的数据库中,我有三个表,Article,ArticleTag和Tag。每 文章通过多对多与许多标签相关 关系。对于每篇文章我想找到五个最相似的 文章实施“如果你喜欢这篇文章,你会喜欢这些 太“系统。
我熟悉Cosine similarity 并使用该算法非常有效。但这是缓慢的方式。对于 每篇文章,我需要迭代所有文章,计算出来 文章对的余弦相似度然后选择五个 相似度最高的文章。
有20万篇文章和30k标签,我需要半分钟 计算单篇文章的类似文章。所以我需要 另一种算法产生与余弦一样好的结果 相似性,但可以实时运行,不需要 我每次都要遍历整个文档语料库。
也许有人可以为此建议一个现成的解决方案?大多数 我看过的搜索引擎无法实现文档相似性 搜索。
答案 0 :(得分:1)
有些问题,
对答案的初步直觉 - 我会说,一个在线聚类算法(可能对共生矩阵进行主成分分析,它将近似于K均值聚类?)。一旦你回答了上面的一些问题,就会更好地完善。
干杯。
答案 1 :(得分:0)
您可以使用Lemur工具包执行此操作。使用KeyfileIncIndex
,您必须从其来源重新检索文档; IndriIndex
支持从索引中检索文档。
但无论如何,您索引文档,然后从要查找类似文档的文档构建查询。然后,您可以使用该查询进行搜索,并对其他文档进行相似性评分。根据我的经验,这是非常快的。它将源文档和基本查询都视为文档,因此找到相似之处就是它的功能(除非你使用的是Indri解析器的东西 - 这有点不同,我不确定它是如何工作的。)