TF-IDF 算法

    近來寫論文需要抽取文檔的主題和關鍵詞,所以研究了一些關於抽取文檔關鍵詞以及計算文本相似度的一些算法。

TF-IDF是在抽取文檔關鍵詞,文檔分類等領域比較經典的算法,我在很多本書中都看到過TF-IDE得身影,比如吳軍的《數學之美》。個人感覺TF-IDE是一個非常精巧的算法,簡單、實用且效果優良。好的算法並不一定是複雜的,一般來說好的算法都是精巧而簡單的,但正是這些精巧而簡單的算法可以爲我們解決複雜的問題。

TF表示文本詞彙頻率也就是一個詞彙在一篇文章中出現的次數文檔總次數之比。一般我們認爲,一個詞在一篇文章中出現的次數越多,說明這個詞越能反映這篇文章的主題。但現在問題來了,一篇文章中出現最多的詞可能是像“的”、“了”這樣的詞,我們稱這些詞爲停用詞。這些停用詞並不能反映出文章的主題。那麼如何解決這一問題呢?

IDF表示逆文本頻率值。逆文檔頻率值得計算如下:

       其中D表示文檔總數,Dw表示出現單詞w的文檔總數。DEF所要表達的意思是,一個詞在多篇文檔中都出現,說明這個詞的重要性較低,相反,如果一個詞在本篇文檔中出現多次,但在其他多篇文檔中出現的次數很少,說明這個詞對本篇文檔來說很重要。所以一個詞在一篇文檔中的重要性我們可以用TF-IDE來表示:

 計算一篇文檔所有詞的TF/IDF按照從大到小排序,排在前面的詞的重要性較高。

 抽取了一篇文檔的關鍵詞之後,我們想計算這篇文檔和其他文檔之間的相似度,該如何計算?這時我們可以使用餘弦相似度,兩個向量之間的夾角越小,說明這兩個向量越接近。

首先我們取出關鍵詞向量中的前20個(這裏是舉例子,根據實際情況取),然後取出所要比較的文本的關鍵詞的前20個。將這40個詞放入一個集合當中。分別計算這40個詞在文檔一中的詞頻向量以及在文檔二中的詞頻向量。例如,“自然語言處理"這個詞在文檔一中出現了6次,而文檔總詞數爲200,則詞頻爲3/100。最後計算文檔一的詞頻向量和文檔二的詞頻向量就可以得到兩個文檔的相似度。

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

  (2)每篇文章各取出若干個關鍵詞(比如20個),合併成一個集合,計算每篇文章對於這個集合中的詞的詞頻(爲了避免文 章長度的差異,可以使用相對詞頻);

  (3)生成兩篇文章各自的詞頻向量;

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


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