爬到的數據不處理怎麼行?大話TextRank自動關鍵詞與摘要生成

  • 2019 年 11 月 20 日
  • 筆記

PageRank是TextRank的核心

PageRank是Google發明的,最開始用來計算網頁的重要性。整個www可以看作一張有向圖圖,節點是網頁。如果網頁A存在到網頁B的鏈接,那麼有一條從網頁A指向網頁B的有向邊。

構造完圖後,使用下面的公式:

S(Vi)是網頁i的中重要性(PR值)。d是阻尼係數,一般設置為0.85。In(Vi)是存在指向網頁i的鏈接的網頁集合。Out(Vj)是網頁j中的鏈接存在的鏈接指向的網頁的集合。|Out(Vj)|是集合中元素的個數。

為了更好地理解這個公式,我們可以把阻尼係數設為1,那麼S(i) = sum(S(j) / out(j)). 這其實就是一個「分人品」的過程,看看每一個和頁面i相鄰的邊都把多少人品分給了自己。比如頁面j人品為5,分出了5個鏈接,其中一個指向了i,那麼頁面i從j得到了數值為1的人品。

至於阻尼係數,是為了防止意外發生,如存在一些出鏈為0,也就是那些不鏈接任何其他網頁的網, 也稱為孤立網頁。他們的PR值被設定到了一個最小值。

PageRank需要使用上面的公式多次迭代才能得到結果。初始時,可以設置每個網頁的重要性為1。上面公式等號左邊計算的結果是迭代後網頁i的PR值,等號右邊用到的PR值全是迭代前的。

使用TextRank提取關鍵字

將原文本拆分為句子,在每個句子中過濾掉停用詞(可選),並只保留指定詞性的單詞(可選)。由此可以得到句子的集合和單詞的集合。

每個單詞作為pagerank中的一個節點。設定窗口大小為k,假設一個句子依次由下面的單片語成:

1

w1,w2,w3,w4,w5,…,wn

1

[w1,w2,…,wk]、[w2,w3,…,wk+1]、[w3,w4,…,wk+2]

等都是一個窗口。在一個窗口中的任兩個單詞對應的節點之間存在一個無向無權的邊。

基於上面構成圖,可以計算出每個單詞節點的重要性。最重要的若干單詞可以作為關鍵詞。

使用TextRank提取關鍵短語

參照「使用TextRank提取關鍵詞」提取出若干關鍵詞。若原文本中存在若干個關鍵詞相鄰的情況,那麼這些關鍵詞可以構成一個關鍵短語。

例如,在一篇介紹「支援向量機」的文章中,可以找到三個關鍵詞支援、向量、機,通過關鍵短語提取,可以得到支援向量機。

使用TextRank提取摘要

將每個句子看成圖中的一個節點,若兩個句子之間有相似性,認為對應的兩個節點之間有一個無向有權邊,權值是相似度。

通過pagerank演算法計算得到的重要性最高的若干句子可以當作摘要。

運行實例

在開源項目地址:https://github.com/letiantian/TextRank4ZH 已經有一個寫好的針對中文語料的TextRank,調用示例如下:

對於文本https://raw.githubusercontent.com/letiantian/TextRank4ZH/master/test/doc/01.txt 該演算法的輸出如下:

參考部落格:https://www.letiantian.me/2014-12-01-text-rank/

Tags: