TF-IDF & BM25

175 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 29 天,点击查看活动详情

TF-IDF

TF-IDF是一种在文本挖掘中广泛使用的特征提取方法,它能够反映一个词对于文本的重要程度。TF代表词频(Term Frequency),IDF代表逆文档频率(Inverse Document Frequency)。其主要思想是如果某个词或短语在一篇文章中出现的频率较高,并且在其他文章中出现的频率较低,则认为它具有很好的类别区分能力。

相关性=TFIDF相关性 = TF*IDF

  • TF :词频,在单个文档中出现的频率

    • TF越高,说明这个文档与这个词相关性越高
    • TF(t,d)=词t在文档d中出现的次数文档d中所有词的出现次数之和\text{TF}(t,d) = \frac{\text{词t在文档d中出现的次数}}{\text{文档d中所有词的出现次数之和}}
  • DF:文档频率,这个词项出现在了多少个文档中

    • DF越高,这个词越不重要
  • IDF :逆文档频率,1/DF

    • IDF越高,词越罕见,重要程度越高
    • IDF(t,D)=log语料库中文档总数包含词t的文档数+1\text{IDF}(t,D) = \log\frac{\text{语料库中文档总数}}{\text{包含词t的文档数+1}}
    • 其中加1的目的是为了避免分母为0的情况,同时这里采用的是log函数,是为了缩小IDF值的范围,避免IDF值过大而影响TF-IDF的效果。

TF-IDF值越大,代表该词越重要,越能代表文本的主题。在文本分类、信息检索等领域中,TF-IDF是一个常用的特征表示方法。

局限性:

  • 认为词频与相关性成正比,其实不一定是
  • 没有考虑文章的长短,也就是词的频率
  • 没有考虑每个词的权重不同

BM25算法

BM25(Best Matching 25)是一种用于信息检索的算法,它在搜索引擎中得到了广泛的应用。与TF-IDF算法不同,BM25不仅考虑了查询词在文档中出现的频率,还考虑了文档的长度和查询词在所有文档中的出现频率。

BM25算法的核心是通过计算查询词与文档中各个词的匹配程度,从而确定文档的相关性得分。BM25得分公式如下:

image.png

image.png score(D,Q)=i=1nIDF(qi)f(qi,D)(k1+1)f(qi,D)+k1(1b+bDavgdl)score(D,Q) = \sum_{i=1}^{n} IDF(q_i) \cdot \frac{f(q_i, D) \cdot (k_1 + 1)}{f(q_i, D) + k_1 \cdot (1 - b + b \cdot \frac{|D|}{avgdl})}

其中,DD表示文档,QQ表示查询,qiq_i表示查询中的第ii个词,f(qi,D)f(q_i, D)表示文档DDqiq_i出现的次数,D|D|表示文档DD的长度,avgdlavgdl表示所有文档的平均长度,k1k_1bb是调节参数,IDF(qi)IDF(q_i)表示qiq_i的逆文档频率:

IDF(qi)=logNn(qi)+0.5n(qi)+0.5IDF(q_i) = \log \frac{N - n(q_i) + 0.5}{n(q_i) + 0.5}

其中,NN是文档总数,n(qi)n(q_i)是包含qiq_i的文档数。

BM25算法相对于TF-IDF算法,考虑了文档长度和查询词在所有文档中的出现频率,可以更好地评估文档的相关性得分,因此在信息检索中得到了广泛的应用。