BM25屬於bag-of-word(詞袋)模型, 是用來計算某一個目標文檔(Document)相對於一個查詢關鍵字(Query)的“相關性”(Relevance)的流程。BM25認爲:詞頻和相關性之間的關係是非線性的,具體來說,每一個詞對於文檔相關性的分數不會超過一個特定的閾值,當詞出現的次數達到一個閾值後,其影響不再線性增長,而這個閾值會跟文檔本身有關。達到的效果是,某一個單詞對最後分數的貢獻不會隨着詞頻的增加而無限增加。
算法按照以下3部分來構建
- 單詞與文檔之間的相關性
- 單詞與query之間的相關性
- 每個單詞的權重
單詞和目標文檔的相關性
tf-idf中,單詞和文檔的相關性用“詞頻”表示(關於和的計算可以參考文章文本特徵提取之TF-IDF),BM25對詞頻進行了標準化處理,公式如下:
其中,爲query中的第個詞, 爲目標文檔中的詞頻,是文檔D的長度,是語料庫全部文檔的平均長度,和是參數。
單詞和query的相關性
其中,是詞項t在查詢q中的權重,從上面的公式中可以看到,當詞頻無限增大時,
單詞權重
單詞的權重最簡單的就是用idf值或是其變種,我們用表示單詞的權重。
合起來公式就是
BM25 在 TF-IDF 的基礎上增加了兩個可調參數: 和 ,分別代表 “詞語頻率飽和度(term frequency saturation)” 和 “字段長度規約(Field-length normalization)”
- 詞語頻率飽和度(term frequency saturation): 參數的值一般介於 1.2 到 2.0 之間。數值越低則飽和的過程越快速。如果 取 0,則對應 BIM 模型,document term frequency完全沒有影響,如果 取較大值,對應使用原始的 term frequency
- 字段長度歸約(Field-length normalization): 將文檔的長度歸約化到全部文檔的平均長度上。b=1 表示基於文檔長度對 term frequency 進行完全的縮放,b=0 表示歸一化時不考慮文檔長度因素,長文檔更有可能排在前面如果查詢很長,
- 對於 query term 也可以採用類似的權重計算方法。對查詢長度沒有進行歸一化(相當於b=0)。 表示 term frequency in query 並沒有影響,(apple apple pie) 和 (apple pie) 完全一樣。
參考文檔