自然語言處理(NLP)[文本挖掘算法]:TF-IDF分析

自然語言處理(NLP)中有一塊很重要的部分就是文本挖掘,文本自然語言的一種展現形式,也是目前海量數據的主流展現方式。現在google和百度也會採用主流的分詞算法TF-IDF進行文本拆分,當然這是主要的算法之一,不是隻是用這一種。下面我給大家簡單介紹一下TF-IDF算法:

定義

在信息檢索中,TF-IDF(詞頻-逆文檔頻率)是一種統計方法,用以評估一個單詞在一個文檔集合或語料庫中的重要程度。經常被用作信息檢索、文本挖掘以及用戶模型的權重因素。TF-IDF的值會隨着單詞在文檔中出現的次數的增加而增大,也會隨着單詞在語料庫中出現的次數的增多而減小。TF-IDF是如今最流行的詞頻加權方案之一。

TF-IDF的各種改進版本經常被搜索引擎用作在給定用戶查詢時對文檔的相關性進行評分和排序的主要工具。TF-IDF可以成功地用於各種主題字段的停用詞過濾,包括文本摘要和分類。

原理

TF-IDF實際上是:TF * IDF。主要思想是:如果某個詞或短語在一篇文章中出現的頻率高(即TF高),並且在其他文章中很少出現(即IDF高),則認爲此詞或者短語具有很好的類別區分能力,適合用來分類。

通俗理解TF-IDF就是:TF刻畫了詞語t對某篇文檔的重要性,IDF刻畫了詞語t對整個文檔集的重要性。

TF(Term Frequency,詞頻)

TF(Term Frequency,詞頻)表示一個給定詞語t在一篇給定文檔d中出現的頻率。TF越高,則詞語t對文檔d來說越重要,TF越低,則詞語t對文檔d來說越不重要。那是否可以以TF作爲文本相似度評價標準呢?答案是不行的,舉個例子,常用的中文詞語如“我”,“了”,“是”等,在給定的一篇中文文檔中出現的頻率是很高的,但這些中文詞幾乎在每篇文檔中都具有非常高的詞頻,如果以TF作爲文本相似度評價標準,那麼幾乎每篇文檔都能被命中。

對於在某一文檔 dj 裏的詞語 ti 來說,ti 的詞頻可表示爲:
ti詞頻公式
其中 ni,j 是詞語 ti 在文檔 dj 中的出現次數,分母則是在文件 dj 中所有詞語的出現次數之和。

注意,這裏除了文檔總詞數作爲分母,只是做了一個標準化,因爲有的文章長,有的文章短,出現100次的不一定算多,出現3次的不一定就少。有時候也用其他作爲分母進行標準化。

IDF(Inverse Document Frequency,逆向文件頻率)

IDF(Inverse Document Frequency,逆向文件頻率)的主要思想是:如果包含詞語t的文檔越少,則IDF越大,說明詞語t在整個文檔集層面上具有很好的類別區分能力。IDF說明了什麼問題呢?還是舉個例子,常用的中文詞語如“我”,“了”,“是”等在每篇文檔中幾乎具有非常高的詞頻,那麼對於整個文檔集而言,這些詞都是不重要的。對於整個文檔集而言,評價詞語重要性的標準就是IDF。

某一特定詞語的IDF,可以由總文件數除以包含該詞語的文件數,再將得到的商取對數得到:
idf場景計算公式1
其中 |D| 是語料庫中所有文檔總數,分母是包含詞語 ti 的所有文檔數。

IDF的計算也是根據不同場景來確定的的,比如可以是
idf場景計算公式2
在scikit-learn的TfidfTransformer()方法中,如果聲明TfidfTransformer(smooth_idf=false),那麼IDF的計算就變爲:
idf場景計算公式3
對IDF的理解:語料庫的文檔總數實際上是一個詞分佈的可能性大小,n篇文檔,有n種可能。包含詞ti的文檔數m,表示詞ti的真實分佈有m個“可能”。那麼log(n/m)
= log(n) - log(m)就可以表示詞ti在m篇文檔中的出現,導致的詞ti分佈可能性的減少(即信息增益),這個值越小,表示詞ti分佈越散,我們認爲一個詞越集中出現在某一類文檔,它對這類文檔的分類越有貢獻,那麼當一個詞分佈太散了,那他對文檔歸類的作用也不那麼大了。

TF-IDF的理論依據及不足

TFIDF算法是建立在這樣一個假設之上的:對區別文檔最有意義的詞語應該是那些在文檔中出現頻率高,而在整個文檔集合的其他文檔中出現頻率少的詞語,所以如果特徵空間座標系取TF詞頻作爲測度,就可以體現同類文本的特點。另外考慮到單詞區別不同類別的能力,TF-IDF法認爲一個單詞出現的文本頻數(即包含某個單詞的文本數)越小,它區別不同類別文本的能力就越大。因此引入了逆文本頻度IDF的概念,以TF和IDF的乘積作爲特徵空間座標系的取值測度,並用它完成對權值TF的調整,調整權值的目的在於突出重要單詞,抑制次要單詞。但是在本質上IDF是一種試圖抑制噪聲的加權,並且單純地認爲文本頻率小的單詞就越重要,文本頻率大的單詞就越無用,顯然這並不是完全正確的。IDF的簡單結構並不能有效地反映單詞的重要程度和特徵詞的分佈情況,使其無法很好地完成對權值調整的功能,所以TF-IDF法的精度並不是很高。

此外,在TFIDF算法中並沒有體現出單詞的位置信息,對於Web文檔而言,權重的計算方法應該體現出HTML的結構特徵。特徵詞在不同的標記符中對文章內容的反映程度不同,其權重的計算方法也應不同。因此應該對於處於網頁不同位置的特徵詞分別賦予不同的係數,然後乘以特徵詞的詞頻,以提高文本表示的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章