BM25相关度打分公式

BM25算法是一种常见用来作相关度打分的公式,思路比较简单,主要就是计算一个query里面全部词和文档的相关度,而后在把分数作累加操做,而每一个词的相关度分数主要仍是受到tf/idf的影响。公式以下:算法

R(qi,d)是每一个词和文档的相关度值,其中qi表明每一个词,d表明相关的文档,Wi是这个词的权重,而后全部词的乘积再作累加。文档

 

Wi可由外部设置,默认的话是idf值,公式以下,N是文档总数,n(qi)是包含该词的文档数,0.5是调教系数,避免n(qi)为0的状况,从这个公式能够看出N越大,n(qi)越小的花idf值越大,这也符合了"词的重要程度和其出如今总文档集合里的频率成反比"的思想,取个log是为了让idf的值受N和n(qi)的影响更加平滑。im

 

下面是R(qi,d)的公式,其中k1,k2,b都是调节因子,通常k1=2,k2=1,b=0.75,fi是词在文档中的次数,qfi表明词在查询语句里的次数,dl是文档长度,avgdl是文档平均长度,能够看出若是其余因素同样dl越大,相关度越低,这个也符合结论,至于会除以一个avgdl,我想是拿本篇文档长度和总体文档长度水平作比较 ,以避免单独取dl值时过大。查询

 

其中乘积的左边因数表明词在文档中的次数关系,乘积的右边因数表明词在查询语句中的次数关系,通常绝大多数状况,查询词在查询语句里面出现一次,因此qfi能够当作是1,又由于k2为1,因此右边因数其实就等于1,因此公式可化简为下面这样img

 

而总公式化简后可得集合

影响BM25公式的因数有query

1 idf,idf越高分数越高

2 tf tf越高分数越高

3 dl/avgdl 若是该文档长度在文档水平中越高则分数越低。

4 k1,b为分数的调节因子

相关文章
相关标签/搜索