我有一组文件,我已经计算了两个
现在我需要计算特定查询和文档之间的相似性,该文档将产生一个分数,该分数将文档从最高相似度排序到最低相似度朝向查询。
我搜索了很多信息,但我不理解这个公式。
来源:http://en.wikipedia.org/wiki/Vector_space_model
任何人都可以指导我吗?我只需要知道如何从目前的进展出发。
答案 0 :(得分:3)
Lucene是一个开源库,可以为您完成所有这些工作。
答案 1 :(得分:1)
您链接的Vector空间模型的基本假设是每个文档都可以表示为N维空间中的向量,其中每个维度是文档范围中的不同单词。给定单词的文档值是该文档对相关单词的排名。在该模型中,查询可以被认为是非常短的文档,因此也表示为N空间中的向量。余弦度量只是查询向量和给定文档向量之间角度的余弦。
导出N维三角学本身可能是一门数学课程,但如果您理解基本思想,对于实际计算,您可以根据信仰采用维基百科公式(或者如果您愿意,可以查看标准文本) 。计算步骤(矢量点积和规范)也是单独记录的,并不是非常难以实现。我确信还有可用的标准库实现。
余弦背后的逻辑是,随着文档之间的相似性增加,两个向量之间的角度接近零(因此余弦接近1)。您可以手动验证笛卡尔平面上的两个单词。所有的矢量数学确实将相同的概念外推到N维。
我希望这可以解决这个有趣话题的一些困惑。为了实际实施,我再次向您推荐Pangea建议使用Lucene。