BM25算法

1. bm25 是什么?

bm25 是一種用來評價搜索詞和文檔之間相關(guān)性的算法,它是一種基于概率檢索模型提出的算法,再用簡單的話來描述下bm25算法:我們有一個query和一批文檔Ds,現(xiàn)在要計算query和每篇文檔D之間的相關(guān)性分?jǐn)?shù),我們的做法是,先對query進(jìn)行切分,得到單詞,然后單詞的分?jǐn)?shù)由3部分組成:

  • 單詞和D之間的相關(guān)性
  • 單詞和query之間的相關(guān)性
  • 每個單詞的權(quán)重

最后對于每個單詞的分?jǐn)?shù)我們做一個求和,就得到了query和文檔之間的分?jǐn)?shù)。

2. bm25 解釋

講bm25之前,我們要先介紹一些概念。

2.1 二值獨(dú)立模型 BIM

BIM(binary independence model)是為了對文檔和query相關(guān)性評價而提出的算法,BIM為了計算,引入了兩個基本假設(shè):

假設(shè)一:二元假設(shè)

所謂二元假設(shè),類似于布爾模型的表示方法,一篇文章在由特征表示的時候,以特征“出現(xiàn)”和“不出現(xiàn)”兩種情況來表示,也可以理解為相關(guān)不相關(guān)。

假設(shè)二:詞匯獨(dú)立性假設(shè)

所謂獨(dú)立性假設(shè),是指文檔里出現(xiàn)的單詞之間沒有任何關(guān)聯(lián),任一個單詞在文章中的分布率不依賴于另一個單詞是否出現(xiàn),這個假設(shè)明顯與事實(shí)不符,但是為了簡化計算,很多地方需要做出獨(dú)立性假設(shè),這種假設(shè)是普遍的。

在以上兩個假設(shè)的前提下,二元獨(dú)立模型即可以對兩個因子P(D|R)和P(D|NR)進(jìn)行估算(條件概率),舉個簡單的例子,文檔D中五個單詞的出現(xiàn)情況如下:{1,0,1,0,1} 0表示不出現(xiàn),1表示出現(xiàn)。用Pi表示第i個單詞在相關(guān)文檔中出現(xiàn)的概率,在已知相關(guān)文檔集合的情況下,觀察到文檔D的概率為:



對于因子P(D|NR),我們假設(shè)用Si表示第i個單詞在在不相關(guān)文檔集合中出現(xiàn)的概率,于是在已知不相關(guān)文檔集合的情況下,觀察到文檔D的概率為:

于是我們可以得到下面的估算


可以將各個因子規(guī)劃為兩個部分,一部分是在文檔D中出現(xiàn)的各個單詞的概率乘積,另一部分是沒在文檔D中出現(xiàn)的各個單詞的概率乘積,于是公式可以理解為下面的形式

對公式進(jìn)行一下等價的變換,可得:


第一部分代表在文章中出現(xiàn)過的單詞所計算得到的單詞概率乘積,第二部分表示所有特征詞計算得到單詞概率乘積,它與具體的文檔無關(guān),所有文檔該項的得分一致,所以在排序中不起作用,可以抹除掉。得到最終的估算公式:

為了方便計算,對上述公式兩邊取log,得到:

那么如何估算概率Si和Pi呢,如果給定用戶查詢,我們能確定哪些文檔集合構(gòu)成了相關(guān)文檔集合,哪些文檔構(gòu)成了不相關(guān)文檔集合,那么就可以用如下的數(shù)據(jù)對概率進(jìn)行估算:

image.png

根據(jù)上表可以計算出Pi和Si的概率估值,為了避免log(0),對估值公式進(jìn)行平滑操作,分子+0.5,分母+1.0

代入估值公式得到:


這個公式代表的含義就是,對于同時出現(xiàn)在查詢Q和文檔D中的單詞,累加每個單詞的估值結(jié)果就是文檔D和查詢Q的相關(guān)性度量,在預(yù)先不知道哪些文檔相關(guān)哪些文檔不相關(guān)的情況下,可以使用固定值代替,這種情況下該公式等價于向量空間模型(VSM)中的IDF因子,實(shí)際證明該模型的實(shí)際使用結(jié)果不好,但是它是BM25模型的基礎(chǔ)。
后來人們發(fā)現(xiàn)應(yīng)該講BIM中沒有考慮到的詞頻和文檔長度等因素都考慮進(jìn)來,就有了后面的BM25算法。

2.2 BM25模型

BIM(二元假設(shè)模型)對于單詞特征,只考慮單詞是否在doc中出現(xiàn)過,并沒有考慮單詞本身的相關(guān)特征,BM25在BIM的基礎(chǔ)上引入單詞在查詢中的權(quán)值,單詞在doc中的權(quán)值,以及一些經(jīng)驗(yàn)參數(shù),所以BM25在實(shí)際應(yīng)用中效果要遠(yuǎn)遠(yuǎn)好于BIM模型。


BM25由3部分組成:

  1. 第一部分是BIM模型得分,上面也提到了,在一定的情況下該部分等價于IDF;
  2. 第二部分是查詢詞在文檔D中的權(quán)值,f是查詢詞在文檔中的頻率,K1和K是經(jīng)驗(yàn)參數(shù);
  3. 第三部分是查詢詞自身的特征,qf是查詢詞在用戶查詢中的頻率,但一般用戶查詢都比較短,qf一般是1,K2是經(jīng)驗(yàn)參數(shù);
  4. 從上面的公式可以看出BM25是查詢中單詞的分值疊加得到,每個單詞是一個個體,而整個文檔被作為一個整體。

在第二部分中K因子代表了文檔長度的考慮,dl是文檔的長度,avdl是文檔的平均長度,k1和b是調(diào)整參數(shù),b為0時即不考慮文檔長度的影響,經(jīng)驗(yàn)表明b=0.75左右效果比較好。但是也要根據(jù)相應(yīng)的場景進(jìn)行調(diào)整。b越大對文檔長度的懲罰越大,k1因子用于調(diào)整詞頻,極限情況下k1=0,則第二部分退化成1,及詞頻特征失效,可以證明k1越大詞頻的作用越大。

在我們不知道哪些文檔相關(guān),哪些文檔不相關(guān)的情況下,將相關(guān)文檔數(shù)R及包含查詢詞相關(guān)文檔數(shù)r設(shè)為0,那么第一部分的BIM公式退化成:



就是IDF因子的定義,N是總文檔數(shù),n是查詢詞的tf信息,0.5是平滑因子。

3. 參考

  1. 抄自:https://blog.csdn.net/wdxin1322/article/details/38093261,侵刪;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容