一、簡介:TF-IDF 的改進算法
https://blog.csdn.net/weixin_41090915/article/details/79053584
bm25 是一種用來評價搜索詞和文檔之間相關性的算法。通俗地說:主要就是計算一個query里面所有詞q和文檔的相關度,然后再把分數做累加操作。
我們有一個query和一批文檔Ds,現在要計算query和每篇文檔D之間的相關性分數,我們的做法是,先對query進行切分,得到單詞qi,然后單詞的分數由3部分組成:
-
- 單詞qi和D之間的相關性
- 單詞qj和query之間的相關性
- 每個單詞的權重
最后對於每個單詞的分數我們做一個求和,就得到了query和文檔之間的分數。
二、優缺點
適用於:在文檔包含查詢詞的情況下,或者說查詢詞精確命中文檔的前提下,如何計算相似度,如何對內容進行排序。不適用於:基於傳統檢索模型的方法會存在一個固有缺陷,就是檢索模型只能處理 Query 與 Document 有重合詞的情況,傳統檢索模型無法處理詞語的語義相關性。
白話舉例:提出一個query:當下最火的女網紅是誰?
在Document集合中document1的內容為:[當下最火的男明星為鹿晗];
document2的內容為:[女網紅能火的只是一小部分]。
顯然document1和document2中都包含[火]、[當下]、[網紅]等詞語。
但是document3的內容可能是:[如今最眾所周知的網絡女主播是周二柯]。
很顯然與當前Query能最好匹配的應該是document3,可是document3中卻沒有一個詞是與query中的詞相同的(即上文所說的沒有“精確命中”),此時就無法應用BM25檢索模型。
三、算法核心:
https://blog.csdn.net/weixin_41090915/article/details/79053584四、傳統TF-IDF vs. BM25
傳統的TF-IDF是自然語言搜索的一個基礎理論,它符合信息論中的熵的計算原理,雖然作者在剛提出它時並不知道與信息熵有什么關系,但你觀察IDF公式會發現,它與熵的公式是類似的。實際上IDF就是一個特定條件下關鍵詞概率分布的交叉熵。
BM25在傳統TF-IDF的基礎上增加了幾個可調節的參數,使得它在應用上更佳靈活和強大,具有較高的實用性。
BM25中的TF
傳統的TF值理論上是可以無限大的。而BM25與之不同,它在TF計算方法中增加了一個常量k,用來限制TF值的增長極限。下面是兩者的公式:
傳統 TF Score = sqrt(tf) BM25的 TF Score = ((k + 1) * tf) / (k + tf)
下面是兩種計算方法中,詞頻對TF Score影響的走勢圖。從圖中可以看到,當tf增加時,TF Score跟着增加,但是BM25的TF Score會被限制在0~k+1之間。它可以無限逼近k+1,但永遠無法觸達它。這在業務上可以理解為某一個因素的影響強度不能是無限的,而是有個最大值,這也符合我們對文本相關性邏輯的理解。 在Lucence的默認設置里,k=1.2,使用者可以修改它。