TF-IDF的原理與應用

sunzhe336 8年前發布 | 98K 次閱讀 中文分詞

來自: http://www.codeceo.com/article/tf-idf.html


作者:一個獨行的程序員

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仍然不能解決所有的情況。

 本文由用戶 sunzhe336 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!