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


TF-IDF

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

\[TF_{w,D_i} = \frac{count(w)}{|D_i|} \]

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

\[IDF_w = log\frac{N}{\sum_{i=1}^{N}I(w,D_i)} \]

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

\[IDF_w = log\frac{N}{1+\sum_{i=1}^{N}I(w,D_i)} \]

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

\[TF - IDF_{w,D_i} = TF_{w,D_i} * IDF_w \]

從上述定義可以看出:

  • 當一個詞在文檔頻率越高並且新鮮度高(即普遍度低),其TF-IDF值越高。

  • TF-IDF兼顧詞頻與新鮮度,過濾一些常見詞,保留能提供更多信息的重要詞。

TextRank

  • 思想

通過詞之間的相鄰關系構建網絡,然后用PageRank迭代計算每個節點的rank值,排序rank值即可得到關鍵詞。

PageRank本來是用來解決網頁排名的問題,網頁之間的鏈接關系即為圖的邊,迭代計算公式如下:

\[PR(V_i) = (1 - d) + d * \sum_{j \in In(V_i)}\frac{1}{|Out(V_j)|}PR(V_j) \]

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

TextRank的迭代計算公式如下:

\[WS(V_i) = (1 - d) + d * \sum_{j\in In(V_i)}\frac{w_{ji}}{\sum_{V_k \in Out(V_j) w_{jk}}}WS(V_j) \]

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

TextRank生成摘要

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

\[Similarity(S_i,S_j) = \frac{| \{ w_k | w_k \in S_i \bigcup w_k \in S_j \} |}{log(|S_i|) + log(|S_j|)} \]

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

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

參考文獻

TF-IDF與TextRank


免責聲明!

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



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