bm25算法是TF-IDF算法的改進(jìn)版本,考慮了查詢中單詞在文檔中出現(xiàn)的頻率、單詞自身的重要性和文檔的長(zhǎng)度
應(yīng)用:信息檢索領(lǐng)域的排名函數(shù)
公式
說(shuō)明:
-
表示查詢
和文檔
的匹配分
- 首先對(duì)查詢
進(jìn)行分詞,獲得每個(gè)單詞
- 計(jì)算單詞
的逆文檔頻率
,其中
為文檔總數(shù)(常量),
是包含單詞
的文檔數(shù),意味著出現(xiàn)單詞
的文檔數(shù)越多,單詞越不重要。例如:the,is,是,的這些單詞。
-
表示單詞
在文檔D中出現(xiàn)的頻率,出現(xiàn)的頻率越高,說(shuō)明匹配分越高。
-
:正系數(shù),控制詞頻的飽和度,取值范圍[1.2,2]。
越大,詞頻,即單詞
在文檔D中出現(xiàn)的頻率越大,文檔D的匹配分?jǐn)?shù)越高
-
:通常設(shè)置為0.75,取值范圍[0,1],控制文檔長(zhǎng)度對(duì)評(píng)分的影響,b越大影響越大,0時(shí)沒(méi)有影響。文檔長(zhǎng)度越大,評(píng)分越低。
為所有文檔的平均長(zhǎng)度,為常量。
為文檔
的長(zhǎng)度。
越大,分母越大,則分?jǐn)?shù)越低。
與TFIDF的區(qū)別
公式
-
表示單詞
的詞頻,詞頻越高,重要性越高
-
表示單詞
在所有文檔中出現(xiàn)的頻率的倒數(shù),再以log為底數(shù)得到,出現(xiàn)的頻率越高,越不重要
- bm25相對(duì)tfidf,引入了系數(shù)k1,b,衡量了tf和文檔長(zhǎng)度對(duì)評(píng)分的影響
Best Matching 25 其中25的含義是此算法經(jīng)過(guò) 25 次迭代調(diào)整之后得到的,這也是這個(gè)匹配算法經(jīng)久不衰的原因。
參考文章
RAG提效利器——BM25檢索算法原理和Python實(shí)現(xiàn)
科普一下Elasticsearch中BM25算法的使用