關鍵詞提取--技術原理概覽

關鍵詞提取–技術原理概覽

一、TF-IDF

TF > Term Frequency
  • TF = 某個詞在文章中出現的次數

  • “詞頻”標準化-1

TF= TF = \frac {某個詞在文章中出現的次數}{文章的總詞數}

  • “詞頻”標準化-2

TF=Max{} TF = \frac {某個詞在文章中出現的次數}{Max\{文章中詞的出現次數\} }

IDF > Inverse Document Frequency
  • IDF 逆文檔頻率

IDF=log(+1) IDF = log( \frac{語料庫的文檔總數}{包含該詞的文檔數+1} )

TF-IDF

TFIDF=×=TF×IDF TF-IDF = 詞頻 \times 逆文檔頻率 = TF \times IDF

TF-IDF與詞頻成正比,與該詞在所有文檔中出現的次數成反比。

TF-IDF提取關鍵詞的原理

詞的TF-IDF值越大,則說明該詞爲關鍵詞。

二、TextRank

PageRank
  • Idea1
    一個網頁被越多的其他網頁鏈接到,則該網頁越重要,即該網頁的權值越大;
  • Idea2
    一個網頁被越重要(權值大)的網頁鏈接到,則該網頁越重要;
TextRank
  • Idea1
    一個詞與越多的其他詞共現,則該詞越重要,即該詞的權值越大;
  • Idea2
    一個詞與越重要(權值越大)的詞共現,則該詞越重要;

注意:這裏共現實在設定的固定長度K的窗口內共同出現,其中,K表示窗口中包含K個詞。

TextRank 一般模型可以表示爲一個有向有權圖 G =(V, E), 由點集合 V和邊集合 E 組成, E 是V ×V的子集,節點爲單個的詞。圖中任兩點 Vi , Vj 之間邊的權重爲 wji , 對於一個給定的點 Vi, In(Vi) 爲 指 向 該 點 的 點 集 合 , Out(Vi) 爲點 Vi 指向的點集合。點 Vi 的得分定義如下:

TextRank公式

其中,d爲阻尼係數,In(Vi)In(V_i) 表示所有與ViV_i共現的詞的集合,Out(Vj)|Out(V_j)| 表示所有與VjV_j共現的詞的集合,wjkw_{jk}表示節點j指向k的邊的權重,同理,wjiw_{ji}WS(Vj)WS(V_j)表示節點VjV_j的得分。

注意:設置阻尼係數的目的:
有些詞不與其他詞共現,所以無法統計;阻尼係數可以設置默認的得分值,即WS(Vi)=1dWS(V_i)=1-d

  • 權重wjkw_{jk}計算舉例

現在將每個單詞作爲圖中的一個節點,同一個窗口中的任意兩個單詞對應的節點之間存在着一條邊。然後利用投票的原理,將邊看成是單詞之間的互相投票,經過不斷迭代,每個單詞的得票數都會趨於穩定。一個單詞的得票數越多,就認爲這個單詞越重要。

例如要從下面的文本中提取關鍵詞:

程序員(英文Programmer)是從事程序開發、維護的專業人員。一般將程序員分爲程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟件從業人員分爲初級程序員、高級程序員、系統分析員和項目經理四大類。

對這句話分詞,去掉裏面的停用詞,然後保留詞性爲名詞、動詞、形容詞、副詞的單詞。得出實際有用的詞語:

程序員, 英文, 程序, 開發, 維護, 專業, 人員, 程序員, 分爲, 程序, 設計, 人員, 程序, 編碼, 人員, 界限, 特別, 中國, 軟件, 人員, 分爲, 程序員, 高級, 程序員, 系統, 分析員, 項目, 經理

現在建立一個大小爲 9 的窗口,即相當於每個單詞要將票投給它身前身後距離 5 以內的單詞:

開發=[專業, 程序員, 維護, 英文, 程序, 人員]
軟件=[程序員, 分爲, 界限, 高級, 中國, 特別, 人員]
程序員=[開發, 軟件, 分析員, 維護, 系統, 項目, 經理, 分爲, 英文, 程序, 專業, 設計, 高級, 人員, 中國]
分析員=[程序員, 系統, 項目, 經理, 高級]
維護=[專業, 開發, 程序員, 分爲, 英文, 程序, 人員]
系統=[程序員, 分析員, 項目, 經理, 分爲, 高級]
項目=[程序員, 分析員, 系統, 經理, 高級]
經理=[程序員, 分析員, 系統, 項目]
分爲=[專業, 軟件, 設計, 程序員, 維護, 系統, 高級, 程序, 中國, 特別, 人員]
英文=[專業, 開發, 程序員, 維護, 程序]
程序=[專業, 開發, 設計, 程序員, 編碼, 維護, 界限, 分爲, 英文, 特別, 人員]
特別=[軟件, 編碼, 分爲, 界限, 程序, 中國, 人員]
專業=[開發, 程序員, 維護, 分爲, 英文, 程序, 人員]
設計=[程序員, 編碼, 分爲, 程序, 人員]
編碼=[設計, 界限, 程序, 中國, 特別, 人員]
界限=[軟件, 編碼, 程序, 中國, 特別, 人員]
高級=[程序員, 軟件, 分析員, 系統, 項目, 分爲, 人員]
中國=[程序員, 軟件, 編碼, 分爲, 界限, 特別, 人員]
人員=[開發, 程序員, 軟件, 維護, 分爲, 程序, 特別, 專業, 設計, 編碼, 界限, 高級, 中國]
然後開始迭代投票,直至收斂:

程序員=1.9249977,
人員=1.6290349,
分爲=1.4027836,
程序=1.4025855,
高級=0.9747374,
軟件=0.93525416,
中國=0.93414587,
特別=0.93352026,
維護=0.9321688,
專業=0.9321688,
系統=0.885048,
編碼=0.82671607,
界限=0.82206935,
開發=0.82074183,
分析員=0.77101076,
項目=0.77101076,
英文=0.7098714,
設計=0.6992446,
經理=0.64640945

可以看到“程序員”的得票數最多,因而它是整段文本最重要的單詞。我們將文本中得票數多的若干單詞作爲該段文本的關鍵詞,若多個關鍵詞相鄰,這些關鍵詞還可以構成關鍵短語。

TextRank算法描述
  • (1)把給定的文本T按照完整句子進行分割,即T=[S1,S2,...,Sm]T=[S_1, S_2, ... ,S_m]
  • (2)對於每個句子SiTS_i \in T,進行分詞和詞性標註處理,並過濾掉停用詞,只保留指定詞性的單詞,如名詞、動詞、形容詞,即Si=[ti,1,ti,1,...,ti,n]S_i = [t_{i, 1}, t_{i, 1}, ... ,t_{i, n}],其中Ti,jT_{i,j}是保留後的候選關鍵詞;
  • (3)構建候選關鍵詞圖G = (V,E),其中V爲節點集,由(2)生成的候選關鍵詞組成,然後採用共現關係(co-occurrence)構造任兩點之間的邊,兩個節點之間存在邊僅當它們對應的詞彙在長度爲K的窗口中共現,K表示窗口大小,即最多共現K個單詞;
  • (4)根據上面公式,迭代傳播各節點的權重,直至收斂;
  • (5)對節點權重進行倒序排序,從而得到最重要的T個單詞,作爲候選關鍵詞;
  • (6)由(5)得到最重要的T個單詞,在原始文本中進行標記,若形成相鄰詞組,則組合成多詞關鍵詞。

三、RAKE

Rapid Automatic Keywords Extraction
  • 單詞得分公式

WordScore=WordDegree(w)/WordFrequency(w) WordScore = WordDegree(w) / WordFrequency(w)
其中,單詞w的度來源於圖模型,單詞w每與一個單詞共現在一個短語中,度就加1,考慮該單詞本身;單詞w的詞頻爲該單詞在文檔中出現的總次數。

  • 關鍵短語的抽取規則

    • 對於每個候選的關鍵短語,將其中每個單詞的得分累加,得出候選的關鍵短語的得分;
    • 對候選的關鍵短語的得分進行降序排列;
    • RAKE將候選短語總數的前1/3作爲抽取出的關鍵詞(關鍵短語);
RAKE算法
  • Idea1
    TextRank認爲,一個詞的重要性由鏈向它的其他詞的重要性來決定。

  • Idea2
    將短語中的每個單詞的共現關係考慮進去;
    當與一個單詞共現的詞語越多,即單詞的共現關係越多,則該詞的度就越大;

  • 算法步驟

    1. 根據標點符號(如半角的句號、問號、感嘆號、逗號等)將一篇文檔分成若干分句;
    2. 對於每一個分句,使用停用詞作爲分隔符將分句分爲若干短語,這些短語作爲最終提取出的關鍵詞的候選詞;
    3. 統計單詞的詞頻,統計單詞的度,計算分句的得分;
    4. 對候選的關鍵短語的得分進行降序排列;
    5. RAKE將候選短語總數的前1/3作爲抽取出的關鍵短語;
與TextRank對比
  • Difference1
    TextRank考慮固定窗口大小k中詞語的共現關係;
    RAKE考慮句子中詞語的共現關係,“窗口”大小不一;

  • Difference2
    TextRank先分詞,再計算單詞的共現關係;
    RAKE先分句,再分詞,計算單詞在句子中的共現關係;

  • Difference2
    TextRank提取出關鍵詞,即單個詞;
    RAKE提取出關鍵分句,即由多個詞組成的分句;

四、集成算法

(TFIDF+TextRank+RAKE)->TFIDF
  • Idea1
    使用多個關鍵詞提取模型提取出多個關鍵詞,將這些關鍵詞作爲候選詞,再次進行關鍵詞抽取;
    先粗抽取,再細抽取;

五、存在的問題

1. TF-IDF和TextRank

傳統的方法如TFIDF僅依靠候選關鍵詞在文檔中的統計性質進行排序,而TextRank雖然在一定程度上考慮了文檔中詞與詞之間的關係,但仍然傾向於選擇文檔中出現較爲頻繁的詞作爲關鍵詞。而文檔的關鍵詞與文檔往往存在一定的詞彙差異現象,主要表現在兩個方面:

  1. 很多關鍵詞在文檔中的統計特性並不顯著,也就是說文檔的某些關鍵詞本身並不一定在文檔中頻繁出現。
  2. 在某些情況下,如文檔較短的時候,一些關鍵詞甚至並不出現在文檔中。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章