關鍵詞提取算法TF-IDF與TextRank


 

一、前言

  隨着互聯網的發展,數據的海量增長使得文本信息的分析與處理需求日益突顯,而文本處理工作中關鍵詞提取是基礎工作之一。

  TF-IDF與TextRank是經典的關鍵詞提取算法,需要掌握。

 

 

二、TF-IDF

2.1、TF-IDF通用介紹  

  TF-IDF,全稱是 Term Frequency - inverse document frequency,由兩部分組成---詞頻(Term Frequency),逆文檔頻率(inverse document frequency)。

TF-IDF=詞頻(TF)*逆文檔頻率(IDF)

  詞頻(TF-Term Frequency),即某個詞語出現的頻率。

詞頻(TF)= 某個詞在文章中的出現次數/該文章所有詞的數量

一般來說某個詞出現的次數多,也就說明這個詞的重要性可能很高,但是不一定。例如現代漢語中的許多虛詞——“的,地,得”,古漢語中的許多句尾詞“之、乎、者、也、兮”,這些詞在文中可能出現許多次,但是它們顯然不是關鍵詞。(這些詞也稱為停用詞,一般我們會在處理時去掉停用詞)。

例如,某個詞比較少見,但是它再這篇文章中多次出現,那么它很可能就反映了這篇文章的特性正是我們所需要的關鍵詞。這就是為什么我們在判斷關鍵詞的時候,需要第二部分(IDF)配合。

  逆文檔頻率(inverse document frequency-IDF),反映關鍵詞的普遍程度——當一個詞越普遍(即有大量文檔包含這個詞)時,其IDF值越低;反之,則IDF值越高。

  逆文檔頻率(inverse document frequency)首先計算某個詞在各文檔中出現的頻率。假設一共有10篇文檔,其中某個詞A在其中10篇文章中都出先過,另一個詞B只在其中3篇文中出現。請問哪一個詞更關鍵?

  詞B更重要,逆文檔頻率,反映的是詞的普通程度,這個詞出現越少,越稀有,IDF值越高。

逆文檔頻率(IDF)=log(語料庫的文檔總數/包含該詞的文檔數+1

所以要提取一篇文章的關鍵詞,要考慮詞頻和逆文檔頻率。

 

2.2、TF-IDF公式

TF-IDF(Term Frequency/Inverse Document Frequency)是信息檢索領域非常重要的搜索詞重要性度量;用以衡量一個關鍵詞w對於查詢(Query,可看作文檔)所能提供的信息。詞頻(Term Frequency, TF)表示關鍵詞w在文檔Di中出現的頻率:

其中,count(w)為關鍵詞w的出現次數,|Di|為文檔Di中所有詞的數量。逆文檔頻率(Inverse Document Frequency, IDF)反映關鍵詞的普遍程度——當一個詞越普遍(即有大量文檔包含這個詞)時,其IDF值越低;反之,則IDF值越高。IDF定義如下:

其中,N為所有的文檔總數,I(w,Di)表示文檔Di是否包含關鍵詞,若包含則為1,若不包含則為0。若詞w在所有文檔中均未出現,則IDF公式中的分母為0;因此需要對IDF做平滑(smooth):

關鍵詞w在文檔Di的TF-IDF值:

從上述定義可以看出:

    • 當一個詞在文檔頻率越高並且新鮮度高(即普遍度低),其TF-IDF值越高。
    • TF-IDF兼顧詞頻與新鮮度,過濾一些常見詞,保留能提供更多信息的重要詞。

 

 

三、TextRank

3.1、TextRank通用介紹

TextRank首先會提取詞匯,形成節點;然后依據詞匯的關聯,建立鏈接。

依照連接節點的多少,給每個節點賦予一個初始的權重數值。

然后就開始迭代。

根據某個詞所連接所有詞匯的權重,重新計算該詞匯的權重,然后把重新計算的權重傳遞下去。直到這種變化達到均衡態,權重數值不再發生改變。這與Google的網頁排名算法PageRank,在思想上是一致的。

 

根據最后的權重值,取其中排列靠前的詞匯,作為關鍵詞提取結果。

如果你對原始文獻感興趣,請參考以下鏈接:

 

 3.2、TextRank詳解

TextRank由Mihalcea與Tarau於EMNLP'04 [1]提出來,其思想非常簡單:通過詞之間的相鄰關系構建網絡,然后用PageRank迭代計算每個節點的rank值,排序rank值即可得到關鍵詞。PageRank本來是用來解決網頁排名的問題,網頁之間的鏈接關系即為圖的邊,迭代計算公式如下:

其中,PR(Vi)表示結點Vi的rank值,In(Vi)表示結點Vi的前驅結點集合,Out(Vj)表示結點Vj的后繼結點集合,d為damping factor用於做平滑。

網頁之間的鏈接關系可以用圖表示,那么怎么把一個句子(可以看作詞的序列)構建成圖呢?TextRank將某一個詞與其前面的N個詞、以及后面的N個詞均具有圖相鄰關系(類似於N-gram語法模型)。具體實現:設置一個長度為N的滑動窗口,所有在這個窗口之內的詞都視作詞結點的相鄰結點;則TextRank構建的詞圖為無向圖。下圖給出了由一個文檔構建的詞圖(去掉了停用詞並按詞性做了篩選):

考慮到不同詞對可能有不同的共現(co-occurrence),TextRank將共現作為無向圖邊的權值。那么,TextRank的迭代計算公式如下:

可以看出,該公式僅僅比PageRank多了一個權重項Wji,用來表示兩個節點之間的邊連接有不同的重要程度。

在這里算是簡單說明了TextRank的內在原理,以下對其關鍵詞提取應用做進一步說明。

TextRank用於關鍵詞提取的算法如下:

1)把給定的文本T按照完整句子進行分割,即

2)對於每個句子Si屬於T,進行分詞和詞性標注處理,並過濾掉停用詞,只保留指定詞性的單詞,如名詞、動詞、形容詞,即

,其中 ti,j 是保留后的候選關鍵詞。

  3)構建候選關鍵詞圖G = (V,E),其中V為節點集,由(2)生成的候選關鍵詞組成,然后采用共現關系(co-occurrence)構造任兩點之間的邊,兩個節點之間存在邊僅當它們對應的詞匯在長度為K的窗口中共現,K表示窗口大小,即最多共現K個單詞。

  4)根據上面公式,迭代傳播各節點的權重,直至收斂。

  5)對節點權重進行倒序排序,從而得到最重要的T個單詞,作為候選關鍵詞。

  6)由5得到最重要的T個單詞,在原始文本中進行標記,若形成相鄰詞組,則組合成多詞關鍵詞。

3.2.1 TextRank算法提取關鍵詞短語

  提取關鍵詞短語的方法基於關鍵詞提取,可以簡單認為:如果提取出的若干關鍵詞在文本中相鄰,那么構成一個被提取的關鍵短語。

3.2.2 TextRank生成摘要

  將文本中的每個句子分別看做一個節點,如果兩個句子有相似性,那么認為這兩個句子對應的節點之間存在一條無向有權邊。考察句子相似度的方法是下面這個公式:

 

 

公式中,Si,Sj分別表示兩個句子詞的個數總數,Wk表示句子中的詞,那么分子部分的意思是同時出現在兩個句子中的同一個詞的個數,分母是對句子中詞的個數求對數之和。分母這樣設計可以遏制較長的句子在相似度計算上的優勢。

我們可以根據以上相似度公式循環計算任意兩個節點之間的相似度,根據閾值去掉兩個節點之間相似度較低的邊連接,構建出節點連接圖,然后計算TextRank值,最后對所有TextRank值排序,選出TextRank值最高的幾個節點對應的句子作為摘要。

 

四、對比總結

  • TextRank與TFIDF均嚴重依賴於分詞結果——如果某詞在分詞時被切分成了兩個詞,那么在做關鍵詞提取時無法將兩個詞黏合在一起(TextRank有部分黏合效果,但需要這兩個詞均為關鍵詞)。因此是否添加標注關鍵詞進自定義詞典,將會造成准確率、召回率大相徑庭。
  • TextRank的效果並不優於TFIDF。
  • TextRank雖然考慮到了詞之間的關系,但是仍然傾向於將頻繁詞作為關鍵詞。

此外,由於TextRank涉及到構建詞圖及迭代計算,所以提取速度較慢。

發現以上兩種方法本質上還是基於詞頻,這也導致了我們在進行自然語言處理的時候造成的弊端,因為我們閱讀一篇文章的時候,並不是意味着主題詞會一直出現,特別對於中文來說,蘊含的中心思想也往往不是一兩個詞能夠說明的,這也是未來自然語言方面要解決的基於語義的分析,路還很長。

 

更多閱讀:

TF-idf原始文獻鏈接

TextRank原始文獻鏈接

refer:

https://zhuanlan.zhihu.com/p/41091116


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM