当前位置:   article > 正文

bm25算法

bm25算法

bm25算法,常用作搜索相关性评分。

bm25算法主要思想

对Query进行语素解析,生成语素qi(词);然后,对于每个搜索结果d,计算每个语素qi与d的相关性得分,最后,将“一个Query各个qi相对于d的相关性得分”加权求和,从而得到“Query与d的相关性得分”。

bm25算法原理及公式推导

一条Query与搜索结果的任意doc之间相关性分数
S c o r e ( Q , d ) = ∑ i n W i R ( q i , d ) Score(Q,d)=\sum\limits_{i}^n W_i R(q_i, d) Score(Q,d)=inWiR(qi,d)
上式, Q Q Q表示Query, q i q_i qi表示根据 Q Q Q解析获得的语素, d d d表示搜索结果的一条文档, W i W_i Wi表示语素 q i q_i qi的权重, R ( q i , d ) R(q_i, d) R(qi,d)表示 q i q_i qi d d d的相关性得分。

(1) W i W_i Wi的定义
定义一个语素与一个文档的相关性权重,较常用的是
I D F ( q i ) = l o g N − n ( q i ) + 0.5 n ( q i ) + 0.5 IDF(q_i)=log\frac{N-n(q_i)+0.5}{n(q_i)+0.5} IDF(qi)=logn(qi)+0.5Nn(qi)+0.5
上式, N N N是索引中的全部文档数, n ( q i ) n(q_i) n(qi)是包含 q i q_i qi的文档数。
很显然, n ( q i ) n(q_i) n(qi) I D F ( q i ) IDF(q_i) IDF(qi)成反相关,即当给定的文档集合里,很多文档都包含 q i q_i qi时, q i q_i qi的区分度就不高,则使用 q i q_i qi来判断相关性的重要度就较低。

(2) R ( q i , d ) R(q_i, d) R(qi,d)的定义
定义一个语素与一个文档的相关性得分,一般形式如下
R ( q i , d ) = f i ( k 1 + 1 ) f i + K q f i ( k 2 + 1 ) q f i + k 2 R(q_i, d)=\frac{f_i (k_1 +1)}{f_i + K}\frac{qf_i (k_2 +1)}{qf_i + k_2} R(qi,d)=fi+Kfi(k1+1)qfi+k2qfi(k2+1)
K = k 1 ( 1 − b + b d l a v g d l ) K=k_1(1-b+b\frac{dl}{avgdl}) K=k1(1b+bavgdldl)
上式, k 1 k_1 k1 k 2 k_2 k2 b b b是可根据经验设置的调节因子,一般 k 1 ∈ [ 1.2 , 2 ] k_1\in[1.2,2] k1[1.2,2] b = 0.75 b=0.75 b=0.75 f i f_i fi q i q_i qi d d d中出现的频率, q f i qf_i qfi q i q_i qi Q Q Q中的出现频率。 d l dl dl d d d的长度, a v g d l avgdl avgdl为文档集中所有 d d d的平均长度。在多数情况下, q i q_i qi Q Q Q中只会出现一次,即 q f i = 1 qf_i=1 qfi=1,公式可简化为:
R ( q i , d ) = f i ( k 1 + 1 ) f i + K R(q_i, d)=\frac{f_i (k_1 +1)}{f_i + K} R(qi,d)=fi+Kfi(k1+1)
K K K的表达式可知, b b b的作用是调整 d l dl dl对“相关性的影响”的大小,即b越大, d l dl dl对“相关性得分的影响”越大;而 d l dl dl越长, K K K值越大,相关性得分越小。
可如下解释,当文档较长时,包含 q i q_i qi的机会越大,则同等 f i f_i fi的情况下,“长文档与 q i q_i qi的相关性”应该比“短文档与 q i q_i qi的相关性”弱。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/791134
推荐阅读
相关标签
  

闽ICP备14008679号