前言
本文主要是對TF-IDF和BM25在公式推演、發展沿革方面的演述,全文思路、圖片基本來源於此篇公眾號推文《搜索中的權重度量利器: TF-IDF和BM25》,侵刪。
一 術語
- TF: Term Frequency,詞頻;衡量某個指定的詞語在某份【文檔】中出現的【頻率】
- IDF: Inverse Document Frequency,逆文檔頻率;一個詞語【普遍重要性】的度量。
- TF-IDF = TF*IDF
一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被搜索引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。 -----《TF-IDF 百度百科》
TFIDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。
- BM25
- 應用:BM25相關度打分,基於BM25與TextRank的單文檔自動文摘(經Rouge評測,效果較為優異)
bm25 是一種用來評價搜索詞和文檔之間相關性的算法,它是一種基於概率檢索模型提出的算法
二 TF-IDF
- <1>傳統的TF-IDF
- 【TF】詞匯word的詞頻(TF)值
\[TF_{Score} = tf = \frac{ 指定詞匯word在第i份文檔documents[i]中出現的次數 }{ 文檔documents[i]的長度 } \]
+ 【IDF】詞匯word的逆文檔頻率(IDF)值
\[IDF_{Score} = log( \frac{ 文檔集documents的總數 }{ 指定詞word在文檔集documents中出現過的文檔總數 } ) \]
+ <span class="important">【TF-IDF/關聯度計算】</span>詞匯word與某份文檔documents[j]的關聯度得分(TF-IDF)
\[TFIDF(word | docuements ) = Similarity(word | documents ) \]
\[Similarity(word | documents ) = TF_{Score}*IDF_{Score} \]
+ 短語sentence與某份文檔documents[j]的關聯度得分(TF-IDF)
\[sentence = [word1,word2,...,wordi,...,wordn] \]
\[TFIDF_{_{sentence}}(word | docuements ) = TFIDF_{_{word1}} + TFIDF_{_{word2}} + ... + TFIDF_{_{wordi}} + ... + TFIDF_{_{wordn}} \]
- <2>早期Lucence版的TF-IDF
- 【TF】
\[TF_{Score} = sqrt(tf) \]
+ 【IDF】
\[IDF_{Score} = log( \frac{ 文檔集documents的總數 }{ 指定詞word在文檔集documents中出現過的文檔總數 + 1 } ) \]
+ 【filedNorms】fieldNorms:對文本長度的歸一化(Normalization)
\[fieldNorms = (\frac{1}{sqrt(文檔documents[j]的長度)}) \]
+ <span class="important">【TF-IDF/關聯度計算】</span>
\[TF-IDF(word | docuements ) = Similarity(word | documents ) \]
\[Similarity(word | documents ) = TF_{Score} * IDF_{Score} * fieldNorms \]
三 BM25
下一代的TF-IDF。
新版的lucence不再把TF-IDF作為默認的相關性算法,而是采用了BM25(BM是Best Matching的意思)。BM25是基於TF-IDF並做了改進的算法。

四 文獻
- 參考文獻
- 推薦文獻
- 補充:推薦文獻
