首先引用百度百科的話:
"TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。"
"TF-IDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF逆向文件頻率(Inverse Document Frequency)。"
"TF表示詞條在文檔中出現的頻率。"
好了,從百度百科里抽出幾句話就大致了解了TF-IDF值的含義
但是,等等!貌似、、、IDF你還沒講啊?
恩對。為了理解IDF值,需要先看看DF文件頻率(Document Frequency)值是什么:
文件頻率,就是對於一個特征詞w,它出現在了多少個類別c的文本中,DF值表示了w對於c的相關度。
顯然,對於每一個特征詞w,如果直接用其在類別c中出現的文件數來表示相關度是非常不適合的,我們可以試着換一個方法,用w在c中文件的出現頻率之和來表示相關度,似乎更加適合,這只是DF值的一個改進措施。
好了,DF值講完了,輪到IDF值了:
百度百科:"IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類別區分能力。"
就是說同一個特征詞w對於同一類文章c來說呢。。。DF(w, c)值越大,IDF(w, c)值就越小
現在趁機先可以想象一下TF-IDF值的計算結果:如果一個對於高頻詞和低頻詞,我們需要最終算出來的TF-IDF值都會變得非常大,才能達到了過濾常用詞的效果。
於是設計IDF(w, c)的計算方法為:類別c中總文件數目除以包含該特征詞w的文件數目,再將得到的商取對數。(取對數什么的為什么不要問我。。。)
於是OIer和ACMer們發現,這不是水水的模擬嘛。。。什么hash_table啦,map啦(包括直接暴力sort)都可以處理理TF和IDF值了。
IF-IDF值就為之后的語義消歧算法打下了基礎。