NLP之TF-IDF與BM25原理探究


前言

本文主要是對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並做了改進的算法。

+ <3>BM25 + 【TF】傳統的TF值理論上是可以無限大的。而BM25與之不同,它在TF計算方法中增加了一個常量k,用來限制TF值的增長極限。 + 早期Lucence版的TF-IDF $$ TF_{Score} = sqrt(tf) $$ + BM25的TF Score(作者默認對k取值為1.2) $$ TF_{Score} = \frac{ ((k + 1) * tf) }{ k + tf } $$ + 如何對待文檔長度?(再優化) $$ TF_{Score} = \frac{ ((k + 1) * tf) }{ k * (1.0 - b + b * L) + tf } $$ > BM25還引入了平均文檔長度的概念,單個文檔長度對相關性的影響力與它和平均長度的比值有關系。 > BM25的TF公式里,除了k外,引入另外兩個參數:L和b。 > L是文檔長度與平均長度的比值。如果文檔長度是平均長度的2倍,則L=2。 > b是一個常數,它的作用是規定L對評分的影響有多大。如果把b設置為0,則L完全失去對評分的影響力。b的值越大,L對總評分的影響力越大。加了L和b的公式如上所示。 + 【IDF】 $$ IDF_{Score} = log( \frac{ 文檔集documents的總數 }{ 指定詞word在文檔集documents中出現過的文檔總數 + 1 } ) $$ + 【TF-IDF/關聯度計算】 $$ Similarity(word | documents ) = \frac{ IDF_{Score}*(k + 1)*tf } { k * (1.0 - b + b * \frac{|D|}{avgD_{l}}) + tf } $$ $$ L= \frac{|D|}{avgD_{l}} $$ $$ 其中,|D|系文檔集documents的文檔總數;avgD_{l}系文檔集documents的平均文檔長度(即 平均詞匯數) $$

四 文獻

> 《Variations of the Similarity Function of TextRank for Automated Summarization》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM