TF-IDF(term frequency–inverse document frequency)是一種用於資訊檢索與資訊探勘的經常使用加權技術。TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨着它在文件中出現的次數成正比增長,但同時會隨着它在語料庫中出現的頻率成反比降低。TF-IDF加權的各類形式常被搜尋引擎應用,做爲文件與用戶查詢之間相關程度的度量或評級。除了TF-IDF之外,因特網上的搜尋引擎還會使用基於連結分析的評級方法,以肯定文件在搜尋結果中出現的順序。spa
原理.net
在一份給定的文件裏,詞頻 (term frequency, TF) 指的是某一個給定的詞語在該文件中出現的次數。這個數字一般會被歸一化(分子通常小於分母 區別於IDF),以防止它偏向長的文件。(同一個詞語在長文件裏可能會比短文件有更高的詞頻,而無論該詞語重要與否。)blog
逆向文件頻率 (inverse document frequency, IDF) 是一個詞語廣泛重要性的度量。某一特定詞語的IDF,能夠由總文件數目除以包含該詞語之文件的數目,再將獲得的商取對數獲得。文檔
某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,能夠產生出高權重的TF-IDF。所以,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。get
TFIDF的主要思想是:若是某個詞或短語在一篇文章中出現的頻率TF高,而且在其餘文章中不多出現,則認爲此詞或者短語具備很好的類別區分能力,適合用來分類。TFIDF其實是:TF * IDF,TF詞頻(Term Frequency),IDF反文檔頻率(Inverse Document Frequency)。TF表示詞條在文檔d中出現的頻率(另外一說:TF詞頻(Term Frequency)指的是某一個給定的詞語在該文件中出現的次數)。IDF的主要思想是:若是包含詞條t的文檔越少,也就是n越小,IDF越大(見後續公式),則說明詞條t具備很好的類別區分能力。若是某一類文檔C中包含詞條t的文檔數爲m,而其它類包含t的文檔總數爲k,顯然全部包含t的文檔數n=m+k,當m大的時候,n也大,按照IDF公式獲得的IDF的值會小,就說明該詞條t類別區分能力不強。(另外一說:IDF反文檔頻率(Inverse Document Frequency)是指果包含詞條的文檔越少,IDF越大,則說明詞條具備很好的類別區分能力。)可是實際上,有時候,若是一個詞條在一個類的文檔中頻繁出現,則說明該詞條可以很好表明這個類的文本的特徵,這樣的詞條應該給它們賦予較高的權重,並選來做爲該類文本的特徵詞以區別與其它類文檔。這就是IDF的不足之處.數學
在一份給定的文件裏,詞頻(term frequency,TF)指的是某一個給定的詞語在該文件中出現的頻率。這個數字是對詞數(term count)的歸一化,以防止它偏向長的文件。(同一個詞語在長文件裏可能會比短文件有更高的詞數,而無論該詞語重要與否。)對於在某一特定文件裏的詞語 來講,它的重要性可表示爲:
原理
以上式子中 是該詞
在文件
中的出現次數,而分母則是在文件
中全部字詞的出現次數之和。搜索
逆向文件頻率(inverse document frequency,IDF)是一個詞語廣泛重要性的度量。某一特定詞語的IDF,能夠由總文件數目除以包含該詞語之文件的數目,再將獲得的商取對數獲得:方法
其中im
而後
某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,能夠產生出高權重的TF-IDF。所以,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。
示例
一:有不少不一樣的數學公式能夠用來計算TF-IDF。這邊的例子以上述的數學公式來計算。詞頻 (TF) 是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語「母牛」出現了3次,那麼「母牛」一詞在該文件中的詞頻就是3/100=0.03。一個計算文件頻率 (DF) 的方法是測定有多少份文件出現過「母牛」一詞,而後除以文件集裏包含的文件總數。因此,若是「母牛」一詞在1,000份文件出現過,而文件總數是10,000,000份的話,其逆向文件頻率就是 log(10,000,000 / 1,000)=4。最後的TF-IDF的分數爲0.03 * 4=0.12。
二:根據關鍵字k1,k2,k3進行搜索結果的相關性就變成TF1*IDF1 + TF2*IDF2 + TF3*IDF3。好比document1的term總量爲1000,k1,k2,k3在document1出現的次數是100,200,50。包含了 k1, k2, k3的docuement總量分別是 1000, 10000,5000。document set的總量爲10000。 TF1 = 100/1000 = 0.1 TF2 = 200/1000 = 0.2 TF3 = 50/1000 = 0.05 IDF1 = log(10000/1000) = log(10) = 2.3 IDF2 = log(10000/100000) = log(1) = 0; IDF3 = log(10000/5000) = log(2) = 0.69 這樣關鍵字k1,k2,k3與docuement1的相關性= 0.1*2.3 + 0.2*0 + 0.05*0.69 = 0.2645 其中k1比k3的比重在document1要大,k2的比重是0.
三:在某個一共有一千詞的網頁中「原子能」、「的」和「應用」分別出現了 2 次、35 次 和 5 次,那麼它們的詞頻就分別是 0.00二、0.035 和 0.005。 咱們將這三個數相加,其和 0.042 就是相應網頁和查詢「原子能的應用」 相關性的一個簡單的度量。歸納地講,若是一個查詢包含關鍵詞 w1,w2,...,wN, 它們在一篇特定網頁中的詞頻分別是: TF1, TF2, ..., TFN。 (TF: term frequency)。 那麼,這個查詢和該網頁的相關性就是:TF1 + TF2 + ... + TFN。
讀者可能已經發現了又一個漏洞。在上面的例子中,詞「的」站了總詞頻的 80% 以上,而它對肯定網頁的主題幾乎沒有用。咱們稱這種詞叫「應刪除詞」(Stopwords),也就是說在度量相關性是不該考慮它們的頻率。在漢語中,應刪除詞還有「是」、「和」、「中」、「地」、「得」等等幾十個。忽略這些應刪除詞後,上述網頁的類似度就變成了0.007,其中「原子能」貢獻了 0.002,「應用」貢獻了 0.005。細心的讀者可能還會發現另外一個小的漏洞。在漢語中,「應用」是個很通用的詞,而「原子能」是個很專業的詞,後者在相關性排名中比前者重要。所以咱們須要給漢語中的每個詞給一個權重,這個權重的設定必須知足下面兩個條件:
1. 一個詞預測主題能力越強,權重就越大,反之,權重就越小。咱們在網頁中看到「原子能」這個詞,或多或少地能瞭解網頁的主題。咱們看到「應用」一次,對主題基本上仍是一無所知。所以,「原子能「的權重就應該比應用大。
2. 應刪除詞的權重應該是零。
咱們很容易發現,若是一個關鍵詞只在不多的網頁中出現,咱們經過它就容易鎖定搜索目標,它的權重也就應該大。反之若是一個詞在大量網頁中出現,咱們看到它仍然不很清楚要找什麼內容,所以它應該小。歸納地講,假定一個關鍵詞 w 在 Dw 個網頁中出現過,那麼 Dw 越大,w的權重越小,反之亦然。在信息檢索中,使用最多的權重是「逆文本頻率指數」 (Inverse document frequency 縮寫爲IDF),它的公式爲log(D/Dw)其中D是所有網頁數。好比,咱們假定中文網頁數是D=10億,應刪除詞「的」在全部的網頁中都出現,即Dw=10億,那麼它的IDF=log(10億/10億)= log (1) = 0。假如專用詞「原子能」在兩百萬個網頁中出現,即Dw=200萬,則它的權重IDF=log(500) =6.2。又假定通用詞「應用」,出如今五億個網頁中,它的權重IDF = log(2)則只有 0.7。也就只說,在網頁中找到一個「原子能」的比配至關於找到九個「應用」的匹配。利用 IDF,上述相關性計算個公式就由詞頻的簡單求和變成了加權求和,即 TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,該網頁和「原子能的應用」的相關性爲 0.0161,其中「原子能」貢獻了 0.0126,而「應用」只貢獻了0.0035。這個比例和咱們的直覺比較一致了。
轉載: http://blog.csdn.net/sangyongjia/article/details/52440063