自然語言處理-搜索中常用的bm25

BM25算法是一種常見用來做相關度打分的公式,思路比較簡單,主要就是計算一個query裏面所有詞和文檔的相關度,然後在把分數做累加操作,而每個詞的相關度分數主要還是受到tf/idf的影響。

關於Bim

BIM(二元假設模型)對於單詞特徵,只考慮單詞是否在doc中出現過,並沒有考慮單詞本身的相關特徵,BM25在BIM的基礎上引入單詞在查詢中的權值,單詞在doc中的權值,以及一些經驗參數,所以BM25在實際應用中效果要遠遠好於BIM模型。

具體的bm25

bm25算法是常見的用來計算query和文章相關度的相似度的。其實這個算法的原理很簡單,就是將需要計算的query分詞成w1,w2,…,wn,然後求出每一個詞和文章的相關度,最後將這些相關度進行累加,最終就可以的得到文本相似度計算結果。
在這裏插入圖片描述

首先Wi表示第i個詞的權重,這裏我們一般會使用TF-IDF算法來計算詞語的權重這個公式第二項R(qi,d)表示我們查詢query中的每一個詞和文章d的相關度,這一項就涉及到複雜的運算,我們慢慢來看。一般來說Wi的計算我們一般用逆項文本頻率IDF的計算公式:
在這裏插入圖片描述
在這個公式中,N表示文檔的總數,n(qi)表示包含這個詞的文章數,爲了避免對數裏面分母項等於0,我們給分子分母同時加上0.5,這個0.5被稱作調教係數,所以當n(qi)越小的時候IDF值就越大,表示詞的權重就越大。
來舉個栗子:“bm25”這個詞只在很少一部分的文章中出現,n(qi)就會很小,那麼“bm25”的IDF值就很大;“我們”,“是”,“的”這樣的詞,基本上在每一篇文章中都會出現,那麼n(qi)就很接近N,所以IDF值就很接近於0,

接着我們來看公式中的第二項R(qi,d),接着來看看第二項的計算公式:
在這裏插入圖片描述

在這個公式中,一般來說,k1、k2和b都是調節因子,k1=1、k2=1、b = 0.75,qfi表示qi在查詢query中出現的頻率,fi表示qi在文檔d中出現的頻率,因爲在一般的情況下,qi在查詢query中只會出現一次,因此把qfi=1和k2=1代入上述公式中,後面一項就等於1,最終可以得到:

在這裏插入圖片描述
我們再來看看K,在這裏其實K的值也是一個公式的縮寫,我們把K展開來看:在這裏插入圖片描述
在K的展開式中dl表示文檔的長度,avg(dl)表示文檔的平均長度,b是前面提到的調節因子,從公式中可以看出在文章長度比平均文章長度固定的情況下,調節因子b越大,文章長度佔有的影響權重就越大,反之則越小。在調節因子b固定的時候,當文章的長度比文章的平均長度越大,則K越大,R(qi,d)就越小。我們把K的展開式帶入到bm25計算公式中去:
在這裏插入圖片描述
以上就是bm25算法的流程了。
以下是實現過程:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章