使用TF-IDF计算文档查询中的相关性得分

  • Post author:
  • Post category:其他


正如该词所示,TF-IDF代表

词频-逆文档频率

,用于计算在文档语料库使用查询中哪些词可能更受偏好。TF-IDF计算每个单词的权值出现在文档中的百分比。具有TF-IDF得分更高的单词,意味着与它们出现的文档有很紧密的关系,也表示如果该词出现在此查询中,该文档可能对相应的人引起更多的兴趣。

从用户定义的查询中检索数据的任务在最近几年变得如此普遍和平常,有些人可能不会再做过多思考。不过,越来越多检索查询的使用,也确保了持续的研究同时促进创造了更好的解决问题的方案。

词频算法类型

TF-IDF算法已经有了许多进展,有许多研究者对此做出贡献并提出了许多他们自己的算法,虽然它们没有被重点进行使用但仍有很多关联在其中。这里是一个涉及词频相关的算法列表:

N(自然) tf_{t,d}
L(算法) 1+\log (tf_{t,d})
B(布尔值) \begin{cases} & 1\text{ if } tf_{t,d}> 0 \\ & 0\; Otherwise \end{cases}

逆文档频率的类型

在逆文档频率算法方面也能看到了许多进展,仅有的问题在于基本的IDF无法识别单数和复数的单词,因此它将它们识别为两个不同的字符,从而无法给出准确的结果。研究人员尝试提出一些其他算法来进行计算:

N(no) 1
T(idf) \log \frac{N}{df_{t}}
P(概率idf) max\left \{ 0|\log\: _{df_{t}}^{N-df_{t}} \right \}

TF-IDF背后的数学理论

基本上,TF-IDF通过计算指定文档中的单词的相对频率,并与整个文档语料库中的该词的反比进行比较。从直觉上,这个计算决定给定单词在指定文档中的相关性。常见词在一篇或一小部分的文档中,往往比普通词如冠词和介词具有更高的TF-IDF得分。TF-IDF权重是一个更好的方法来理解这点,这是由TF权重与IDF权重产出的结果。

W_{t,d} = (1 + \log tf_{t,d})\times \log N/df_{t}

这种类型的权重是信息检索中最好的权重方案,它随着文档中给定单词的出现次数而增加。另一个有助于该因素的是,在其他文献中,随着单词的罕见度增加权重也随之增加。“W”这个值被认为具有很大的识别能力。因此,当查询含有“W”,在“W”很大时所得到的文档“D”,极有可能是用户所要的。

应用

当你有一个文档集,特别是一个很大的文档集,在它需要被归类的时候这个算法是很有用的,而且也容易实现,因为你不需要提前训练模型,并且它会自动记录文档长度的差异。

如果你有一个博客网站里面包含成千上万的用户参与并写博客文章,那么标识在每个博客文章上的标签就会出现在网站页面上的各个部分。虽然作者能够在编写文章时手动标记内容,但在许多情况下他们并不做选择,因此许多博客文章没有被分类。经验主义表明,只有一小部分用户会花时间手动添加标签,并对文章和评论进行分类,这使得自发的组织将不可持续下去。这样的文档集对于TF-IDF来说是一个很好的使用场景,因为它为博客文章生成标签,并有能在站点正确的地方显示它们。最棒的是,不需要新的作家或博主来忍受自己手动标记他们文章的繁琐操作!该快速运行的算法将通过文档集并对所有条目进行排序,从而减少了大量的麻烦操作。

TF-IDF的优点

TF-IDF是一种高效且简单的算法,用于将查询中的单词匹配到与查询相关的文档。从许多学者到现在为止的研究已经证明,TF-IDF能得到与特定查询高度相关的文档。此外,编写TF-IDF的代码也不是一个很困难的工作,从而使其成为更复杂的算法和查询检索系统的基础。多年来,TF-IDF已经在文档查询上开发算法所做的所有研究奠定了基础。

总结

虽然最近出现了许多新的算法,但基本的TF-IDF算法仍然是查询检索方法的参考。不过TF-IDF也有其自身的局限性,比如它无法区分单字和复数词。因此,如果假设你搜索“毒品(drug)”,TF-IDF就不能把“毒品(drug)”这个词等同于“毒品(drugs)”,而是把每一个词分类成单独的词,并稍微降低单词的“Wd”权值。Berger提出的自适应TF-IDF算法结合了爬坡和梯度下降来提高算法效果。在自适应TF-IDF算法中,他们还提出了一种跨语言检索设置,通过将统计翻译应用到TF-IDF的基准。

另一种类型的算法,称为遗传算法,基于遗传编程,变异,交叉和复制展示了改进的效果比基本的TF-IDF权重方案更好。这表明大众在增强基本的TF-IDF算法的效率方面有很大的动力,这也终将迎来查询检索系统的成功。

本文翻译自:

https://www.bluepiit.com/blog/using-tf-idf-algorithm-to-find-relevance-score-in-document-queries/