自然语言处理-BM25相关度打分

转自:https://blog.csdn.net/weixin_41090915/article/details/79053584

自然语言处理-BM25相关度打分

(注:文中大写Query、Document等代表集合,小写query、document等代表集合中的个体)

一、优缺点

适用于:在文档包含查询词的情况下,或者说查询词精确命中文档的前提下,如何计算相似度,如何对内容进行排序。

不适用于:基于传统检索模型的方法会存在一个固有缺陷,就是检索模型只能处理 Query 与 Document 有重合词的情况,传统检索模型无法处理词语的语义相关性。

白话举例:提出一个query:当下最火的女网红是谁?
Document集合document1的内容为:[当下最火的男明星为鹿晗];
document2的内容为:[女网红能火的只是一小部分]。
显然document1和document2中都包含[火]、[当下]、[网红]等词语。但是document3的内容可能是:[如今最众所周知的网络女主播是周二柯]。很显然与当前Query能最好匹配的应该是document3,可是document3中却没有一个词是与query中的词相同的(即上文所说的没有“精确命中”),此时就无法应用BM25检索模型。

二、算法核心

BM25算法是一种常见用来做相关度打分的公式,思路比较简单,主要就是计算一个query里面所有词q1,q2...qnq1,q2...qn和文档的相关度,然后再把分数做累加操作。公式如下:

Score(Q,d)=∑inWi⋅R(qi,d)Score(Q,d)=∑inWi⋅R(qi,d)


其中R(qi,d)R(qi,d)是查询语句query中每个词qiqi和文档d的相关度值,WiWi是该词的权重,最后将所有词的Wi∗R(qi,d)Wi∗R(qi,d)相加。

 

WiWi一般情况下为IDF(InverseDocumentFrequency)IDF(InverseDocumentFrequency)值,即逆向文档频率,公式如下:

IDF(qi)=logN+0.5n(qi)+0.5IDF(qi)=logN+0.5n(qi)+0.5


其中NN是文档总数,n(qi)n(qi)是包含该词的文档数,0.5是调教系数,避免n(qi)=0n(qi)=0的情况。loglog函数是为了让IDF的值受NN和n(qi)n(qi)的影响更加平滑。
从公式中显然能看出IDF值的含义:即总文档数越大,包含词qiqi的文档数越小,则qiqi的IDF值越大。
白话举例就是:比如我们有1万篇文档,而单词basketball,Kobe Bryant几乎只在和体育运动有关的文档中出现,说明这两个词的IDF值比较大,而单词is, are, what几乎在所有文档中都有出现,那么这几个单词的IDF值就非常小。

 

解决了WiWi,现在再来解决R(qi,d)R(qi,d)。R(qi,d)R(qi,d)公式如下:

R(qi,d)=fi⋅(k1+1)fi+K⋅qfi⋅(k2+1)qfi+k2R(qi,d)=fi⋅(k1+1)fi+K⋅qfi⋅(k2+1)qfi+k2


其中k1,k2,bk1,k2,b都是调节因子,一般k1=1,k2=1,b=0.75k1=1,k2=1,b=0.75。
式中qfiqfi为词qiqi在查询语句queryquery中的出现频率,fifi为qiqi在文档dd中的出现频率。由于绝大多数情况下一条简短的查询语句queryquery中,词qiqi只会出现一次,即qfi=1qfi=1,因此公式可化简为:

R(qi,d)=fi⋅(k1+1)fi+KR(qi,d)=fi⋅(k1+1)fi+K


其中

K=k1⋅(1−b+b⋅dlavgdl)K=k1⋅(1−b+b⋅dlavgdl)


dldl为文档dd的长度,avgdlavgdl为所有文档的平均长度。意即该文档dd的长度和平均长度比越大,则KK越大,则相关度R(qi,d)R(qi,d)越小,bb为调节因子,bb越大,则文档长度所占的影响因素越大,反之则越小。
白话举例就是:一个queryquery为:诸葛亮在哪里去世的?
document1的内容为:诸葛亮在五丈原积劳成疾,最终去世;
document2的内容为:司马懿与诸葛亮多次在五丈原交锋;
document3为一整本中国历史书的内容。
显然document3中肯定包含了大量[诸葛亮]、[哪里]、[去世]这些词语,可是由于document3文档长度太大,所以KK非常大,所以和queryquery中每个词qiqi的相关度R(qi,d)R(qi,d)非常小。

 

综上所述,可将BM25相关度打分算法的公式整理为:

Score(Q,d)=∑inIDF(qi)⋅fi⋅(k1+1)fi+k1⋅(1−b+b⋅dlavgdl)

--------------------- 本文来自 weixin_41090915 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/weixin_41090915/article/details/79053584?utm_source=copy

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值