NLP基本方法:TF-IDF原理及應用

weixin_33797791發表於2018-08-13

一、TF-IDF原理

1. 什麼是TF-IDF

TF-IDF(Term Frequency-Inverse Document Frequency, 詞頻-逆檔案頻率).

是一種用於資訊檢索與資訊探勘的常用加權技術。TF-IDF是一種統計方法,用以評估一字詞對於一個檔案集或一個語料庫中的其中一份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。

上述引用總結就是, 一個詞語在一篇文章中出現次數越多, 同時在所有文件中出現次數越少, 越能夠代表該文章.

這也就是TF-IDF的含義.

詞頻 (term frequency, TF) 指的是某一個給定的詞語在該檔案中出現的次數。這個數字通常會被歸一化(一般是詞頻除以文章總詞數), 以防止它偏向長的檔案。(同一個詞語在長檔案裡可能會比短檔案有更高的詞頻,而不管該詞語重要與否。)

但是, 需要注意, 一些通用的詞語對於主題並沒有太大的作用, 反倒是一些出現頻率較少的詞才能夠表達文章的主題, 所以單純使用是TF不合適的。權重的設計必須滿足:一個詞預測主題的能力越強,權重越大,反之,權重越小。所有統計的文章中,一些詞只是在其中很少幾篇文章中出現,那麼這樣的詞對文章的主題的作用很大,這些詞的權重應該設計的較大。IDF就是在完成這樣的工作.

公式:


5756726-a3f281084383e933.png


逆向檔案頻率 (inverse document frequency, IDF) IDF的主要思想是:如果包含詞條t的文件越少, IDF越大,則說明詞條具有很好的類別區分能力。某一特定詞語的IDF,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取對數得到。

公式: 


5756726-3c3eecede8f47f1b.png

某一特定檔案內的高詞語頻率,以及該詞語在整個檔案集合中的低檔案頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。 

                                                                                                  TF−IDF=TF∗IDF


二、使用TF-IDF計算文章相似度

1.餘弦相似度

餘弦值的範圍在[-1,1]之間,值越趨近於1,代表兩個向量的方向越接近;越趨近於-1,他們的方向越相反;接近於0,表示兩個向量近乎於正交。


5756726-c0549fbd66921a36.png

 一般情況下,相似度都是歸一化到[0,1]區間內,因此餘弦相似度表示為cosineSIM=0.5cosθ+0.5


2.計算過程

(1)使用TF-IDF演算法,找出兩篇文章的關鍵詞;

(2)每篇文章各取出若干個關鍵詞(為公平起見,一般取的詞數相同),合併成一個集合,計算每篇文章對於這個集合中的詞的詞頻

(注1:為了避免文章長度的差異,可以使用相對詞頻;注2:這一步選出的不同詞的數量決定了詞頻向量的長度);

(3)生成兩篇文章各自的詞頻向量(注:所有文章對應的詞頻向量等長,相同位置的元素對應同一詞);

(4)計算兩個向量的餘弦相似度,值越大就表示越相似。

Note that: tf-idf值只在第一步用到。

舉例說明:

文章A:我喜歡看小說。

文章B:我不喜歡看電視,也不喜歡看電影。

第一步: 分詞

    文章A:我/喜歡/看/小說。

    文章B:我/不/喜歡/看/電視,也/不/喜歡/看/電影。

第二步,列出所有的詞。

     我,喜歡,看,小說,電視,電影,不,也。

第三步,計算每個文件中各個詞的詞頻tf。

  文章A:我 1,喜歡 1,看 1,小說 1,電視 0,電影 0,不 0,也 0。

  文章B:我 1,喜歡 2,看 2,小說 0,電視 1,電影 1,不 2,也 1。

第四步,計算各個詞的逆文件頻率idf。

  我 log(2/2)=0,喜歡 log(2/2)=0,看 log(2/2)=0,小說 log(2/1)=1,電視 log(2/1)=1,電影 log(2/1)=1,不 log(2/1)=1,也 log(2/1)=1。

第五步:計算每個文件中各個詞的tf-idf值

  文章A:我 0,喜歡 0,看 0,小說 1,電視 0,電影 0,不 0,也 0。

  文章B:我 0,喜歡 0,看 0,小說 0,電視 1,電影 1,不 1,也 1。

第六步:選擇每篇文章的關鍵詞(這裡選tf-idf排名前3的詞作為關鍵詞(至於並列大小的隨機選))

  文章A:我 0,喜歡 0,小說 1

  文章B:電視 1,電影 1,不 1

第七步:構建用於計算相似度的詞頻向量(根據上一步選出的詞:我,喜歡,小說,電視,電影,不)

   文章A:[1 1 1 0 0 0]

   文章B: [1 2 0 1 1 2]

第八步:計算餘弦相似度值

     cosθ=3/sqrt(33)= 0.5222329678670935

   cosineSIM(A,B)=0.5222329678670935*0.5+0.5=0.7611164839335467


原文參考:

https://www.cnblogs.com/wxiaoli/p/6940702.html

https://blog.csdn.net/zrc199021/article/details/53728499

相關文章