TF-IDF的原理與應用

一個獨行的程式設計師發表於2016-02-17

作者:一個獨行的程式設計師

1.TF-IDF原理

TF-IDF(Term Frequency-Inverse Document Frequency),中文叫做詞頻-逆文件頻率。在文字挖掘(Text Mining)和資訊檢索(Information Retrieval)領域具有廣泛的應用。

其難能可貴之處在於:沒有繁複的數學推導式,僅需要中學數學水平,便可以在一節課時間理解其原理並上手使用。

設想現在我們正在閱讀新聞,如何最快速的瞭解新聞主旨?毫無疑問——關鍵詞

TF-IDF就具有這樣的能力:提取關鍵詞!

假設一個詞在一篇文章中出現的次數越多,那麼它就越”緊扣主題”。以本文為例,我們可以統計詞頻(TF),不難發現TF-IDF,原理,應用是出現頻率很高的詞,後文稱keywords。這符合我們的假設,但是有些詞卻出現的次數更多,如:,等。這類詞語沒有明確意義,我們稱為停頓詞(Stopwords)。

如果單純按照詞頻算關鍵詞,你會發現幾乎所有的文章都是stopwords的詞頻最高。換句話說,像這種”萬金油”,是沒有區分度的詞語,不能很好的起到將文章分類的作用。這時就需要祭出逆文件頻率(IDF)來解決詞語權重的問題。

雖然keywords詞頻不如stopwords高,但是縱觀全網的所有文章中,本文的keywords並不是在每篇文章都出現的,而是在很小一部分文章中出現。所以這些keywords是具有高辨識度的,應該給一個更大的權重;相反那些幾乎所有文章中都出現的stopwords,則應該給一個很小的權重。

最終,將TF*IDF得出的分值作為每一個詞在本文的重要度,就提取出了文章的關鍵詞。

公式化的說法如下,
對於在某一特定檔案裡的詞語 ti 來說,它的重要性可表示為:

以上式子中ni,j是該詞在檔案dj中的出現次數,而分母則是在檔案dj中所有字詞的出現次數之和。

|D|:語料庫中的檔案總數

|{ j: ti in dj}| :包含詞語 ti的檔案數目(即 ni,j != 0的檔案數目)如果該詞語不在語料庫中,就會導致分母為零,因此一般情況下使用1 + |{j : ti in dj}|

TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。

2.TF-IDF應用

本小節通過Google搜尋結果數為例,將含有中文”的”結果數15.8億作為整個語料庫大小,計算上一節中的keyword和stopword的TF-IDF值。為了計算簡便,假設全文分詞後一共500詞,則結果如下:

包含該詞的文章(百萬) IDF TF TF-IDF
TF-IDF 0.497 3.502 0.018 0.063
原理 24.4 1.811 0.008 0.014
應用 82.8 1.280 0.008 0.010
363 0.638 0.028 0.018
482 0.515 0.026 0.013
1580 0.000 0.080 0.000

TF-IDF的優點是計算簡單,利於理解,價效比極高。但是它也有缺陷,首先單純依據文章中的TF來衡量重要性,忽略了位置資訊。如段首,句首一般權重更高;其次,有的文章可能關鍵詞只出現1-2次,但可能通篇都是圍繞其進行闡述和解釋,所以單純靠TF仍然不能解決所有的情況。

相關文章