文档搜索中的 TF-IDF 与余弦相似度

机器算法验证 机器学习 排行 相似之处 余弦距离 余弦相似度
2022-04-11 11:34:44

我想知道是否有人可以帮助我或指出一些资源以了解有关 TF-IDF 和文档搜索的更多信息。

我正在尝试实现一个基本的文档搜索,并试图更好地理解我的方法的差异和权衡。

我目前的方法是解析/提取一组文档中的所有单词,并为每个文档-单词对计算一个标准化的 TF-IDF 值。当我使用关键字进行查询时,我只需查找关键字中的每个单词,将每个文档单词的 TF-IDF 值相加,然后以这种方式对它们进行排名。

使用这种方法是否有任何权衡/差异/错误?它与为每个文档创建一个向量、为搜索查询创建一个向量以及使用余弦相似度来找到最接近的匹配项相比如何?

2个回答

Xeon 是正确的,因为 TF-IDF 和余弦相似度是两个不同的东西。TF-IDF 将为您提供文档中给定术语的表示。余弦相似度将为您提供共享相同表示的两个不同文档的分数。然而,“最简单的排名函数之一是通过对每个查询词的 tf–idf 求和来计算的”此解决方案偏向于出现更多术语的长文档(例如,大英百科全书)。此外,还有更多基于类似想法的先进方法(最著名的是Okapi BM25)。

一般来说,如果您要比较具有相同性质的元素(例如,文档与文档),或者当您需要分数本身具有一些有意义的值时,您应该使用余弦相似度。在余弦相似度的情况下,1.0 表示这两个元素基于它们的表示完全相同。我会推荐这些资源以了解有关该主题的更多信息:

现代信息检索,Ricardo Baeza-Yates 等人,
信息检索导论,Christopher Manning 等人。

TF-IDF 是关于特征及其规范化的。余弦度量是您将用来评分的度量。

如果我的记忆很好,TF 会使向量中的字数归一化。然后,您可以使用余弦度量比较 TF 归一化向量。添加 DF 权重是为了降低过于频繁的术语(例如停用词)的权重,这样它们就不会支配其他不太频繁(并且通常信息量更大)的特征。

在创建 TF-IDF 向量之前清理你的语料库。例如进行词干提取(例如使用波特词干分析器)。这将减少词汇量并使词向量的正交性降低。