肖元君 吳國文
(東華大學計算機科學與技術學院 上海 201600)
自動文摘技術指的是利用計算機對文本進行處理,挖掘出最符合文意的句子,是自然語言處理領域中一個很重要的分支。
在當今學術領域中,生成文本摘要的方式主要有兩種,1) 抽取式,顧名思義,就是選出文章中最關鍵的句子作為文章摘要。如李娜娜等[1]提出的基于TextRank的自動摘要優化算法,該算法運用詞頻統計,找到文章的關鍵句子,根據句子在段落中的位置調整權重,從而組成文章摘要。抽取式方法的確能夠找到符合文章中心意思的句子,但在摘要通順程度上有一定的局限性。2) 生成式,旨在使計算機能夠與人類一樣,用自己的文字概括全文意思。如Google Brain團隊[2]在2014年提出的seq2seq序列模型,并隨后在Github上開源了此項目。該模型被廣泛應用于自動翻譯、對話機器人項目當中,對于短篇文章也能夠利用該模型生成文章摘要。但序列模型的局限性在于,若是將長篇幅文章作為訓練預料,訓練過程將消耗大量時間,而且摘要生成結果也不盡如人意,句子結構復雜,無法讀通順。
由上述分析可知,生成高質量摘要技術的關鍵在于:1) 包含文章關鍵信息;2) 句意通順。對于長篇幅文章,為了保證句意通順程度,需要使用抽取式方法生成文章摘要。
本文從上述兩個方面出發,提出了一種基于Gensim的摘要自動生成算法,該算法分為兩個階段。關鍵句生成階段,由于使用word2vec模型可以挖掘出關聯性強的句子,為了提升摘要通順程度,運用Gensim框架中的Word2vec詞向量模型,將語料轉化為詞向量,修改Gensim框架中的TextRank算法,使其能夠接受詞向量輸入,根據關聯性與重要程度,生成句子無向圖。摘要生成框架構建階段,框架旨在賦予第一階段所生成關鍵句不同的權值,權值由文章結構與所含關鍵詞個數決定。由于文章段首常常被用來作為摘要的首句話,段尾句子的重要性比較低,所以段首的句子應具有更高的權值。使用Gensim框架中的LDA主題模型提取文章關鍵詞,若句子包含的關鍵詞越多,則權值越高。最后根據權值計算句子分數,選擇分數最高的幾句話,生成文章摘要。同時,本文使用Rouge摘要評測工具,對算法生成摘要的質量進行評分,與其他算法生成摘要的質量分數進行對比,展現在實驗結果中。
Gensim框架由Ivan Menshikh[3]所在團隊開發,并于2015年作為Python第三方擴展包開源。它提供了自然語言處理常用模型的API調用接口。
本文提出的自動文摘算法主要應用Gensim框架中包含的三種算法,分別為Word2vec詞向量模型、TextRank算法和LDA主題模型。并且為了使算法能夠更好地應用于實際項目,本文修改了部分算法源碼。
為了提升摘要通順程度,需要發現句子間的關聯程度,即計算其相似度,前期工作是將文本向量化。Word2vec是詞向量模型,它包含兩種神經網絡,分別是CBOW與Skip-Gram。
CBOW根據上下文預測當前詞語的概率,公式如下所示:
式中:(w,c)為從語料中抽取的n元短語,P(w|c)即詞w在文本中c中出現的概率,V為訓練語料,e′為更新權重,x為輸入矩陣。
Skip-Gram根據當前詞語預測上下文概率,其中D為詞集合,計算公式如下所示:
Gensim自帶的TextRank挖掘關鍵句算法是基于共現單詞數量決定的,缺點是忽略了同義異形詞,而本文提出基于詞向量找到關鍵句的方法可以有效解決這一問題。即將該句子中所含單詞轉化為詞向量,再求出詞向量的總和,將該值作為圖的一個頂點計算。
類比PageRank網頁重要程度公式,文本圖G的權重計算公式為:
式中:W為初始權值;Vi為入鏈集合;Vj為出鏈集合;S表示TextRank的值;wji表示第j行,第i列的權值;k表示i列之前的列數;為避免權值計算出現0的情況,添加了阻尼系數d,表示跳轉到其他節點的概率。
若句子包含關鍵詞個數多,則關鍵程度高,應賦予較高的權重。在訓練語料充足的情況下,相比于其他關鍵詞提取算法,LDA主題模型提取關鍵詞的準確度較高,所以本文運用該模型提取關鍵詞。建模過程總結為如下兩個步驟:
1) 根據多項式分布,描述主題下的詞分布;
2) 根據極大似然估計與共軛先驗分布估算參數值。
設z為文章主題,θ為主題向量,w為該主題下的詞匯,則LDA聯合分布概率為:
本文關鍵句提取算法主要分為兩個步驟:1) 訓練詞向量;2) 修改Gensim框架中TextRank算法使其能夠接受詞向量輸入。算法流程圖如圖1所示。

圖1 關鍵句提取算法流程
訓練語料庫由30萬篇中文文章構成,其中包含維基百科基本語料,爬蟲程序爬取的經濟時政新聞。訓練之前需要對語料庫進行預處理,該過程主要分為三個步驟:1) 繁簡轉化,由于原始語料庫包含繁體字,會出現同義異詞的情況,這不是模型所期望的輸入;2) 去除停用詞,非常用詞與標點符號會影響模型效果,所以訓練前需進行該過程,本文運用哈工大停用詞表對語料庫進行去停處理;3) 分詞,Word2vec模型需接受分詞后的結果,本文使用Jieba分詞對語料進行處理。
訓練前需要對Word2vec模型參數進行修改,以達到良好效果,本文主要對以下參數做了修改:1) sentences,設置為Text8Corpus,因為它能夠很好地處理大文本數據;2) size,該參數表示向量維度大小,設置為120;3) batch_word,該參數表示每一批傳遞給現成的單詞數量,本文設置為1。
本文訓練環境為macOS操作系統,2.3 Hz Intel Core i5處理器,8 GB內存,訓練過程大致為3小時左右。
該部分算法具體實現如下:
1) 將文章分詞,并按照中文分句符號分句,將每句話作為文本單元;
2) 加載訓練好的詞向量模型,將詞匯轉化為詞向量;
3) 構建無向圖G=(V,E),頂點V是文本單元所包含詞向量累加的結果,采用共現關系生成兩點間的邊;
4) 將文本單元所包含詞向量累加,根據無向圖G生成如下所示稀疏矩陣,t表示文本單元,每篇文章有n個文本單元;
5) 根據如下余弦相似度公式,計算每個頂點之間的相似度,將結果替換4)中的文本單元:
6) 結合TextRank計算公式,賦予阻尼系數d,通常將這個值設置為0.85,計算迭代至收斂,算出最終分數。
至此,由于詞向量相關性,分值高的文本單元由句子關鍵程度與關鍵句連貫性決定。
摘要生成框架的目的是為了對上一節提取出來的關鍵句結構進行優化以及驗證。通過關鍵句所在文章結構以及所含關鍵詞賦予其不同權值,計算后得到最終分數,選擇分數最高的幾句話生成文章摘要。摘要生成框架處理流程圖如圖2所示。

圖2 摘要生成框架處理流程
對于新聞時政文章,段首往往包含著作者的中心意思。如東方財富網新聞摘要等使用抽取式方法生成的文章摘要,段首句子被用做摘要核心句的比例很高。從而應賦予段首句子更高的權值。
設w1、w2、w3分別為段首、段中與段尾的權值,s表示句子所在位置,L表示文章句子總數,其中wa>wb>wc。根據本文運用測試數據集文章結構,將段首、段尾句子個數定義為α,權值w表達式如下:
相對于其他關鍵詞提取算法,LDA主題模型能很好地提取出文章隱式信息,如與經濟相關的文章,文章通篇介紹了股票債券等信息,卻沒有出現經濟二字,運用LDA主題模型就可以將隱含關鍵詞(經濟)提取出來。主題模型的映射關系如圖3所示。

圖3 主題模型映射關系
主題模型認為詞與文檔之間沒有直接的聯系,每個文檔都有一個或多個主題,每個主題都對應著詞分布。運用Gensim框架中的LDA主題模型訓練語料,得到數據集的主題-詞分布模型,通過將傳遞的語料字典化,根據模型計算出詞分布概率p(wi|di),其中w為詞匯,d為對應的文章,從而將概率值高的詞匯認定為文章的關鍵詞。
提取出文章關鍵詞后,便可根據關鍵句所含關鍵詞個數定義其權值,設w為關鍵詞分數權值,n為所含關鍵詞個數,wd、we分別為不同關鍵詞閾值β下的權重。權值w表達式如下:
在實現權值分配的過程中需構建句子與其所含關鍵詞個數的字典,從而根據關鍵詞個數分配每個句子不同的權重。
最后將文章結構權重分配結果與關鍵詞個數權值分配結果相加后乘以第一階段產生的關鍵句分值,得到最終分數,并將句子按照分值大小,從高到低降序排列。
本文選擇100篇經濟時政文章與對應的標準摘要作為測試數據集,數據來源于東方財富網等各大新聞網站。
Rouge摘要評測方法是由Lin等[16]提出的摘要內部評價方法,現被廣泛應用與自動文摘項目當中,作為評判摘要質量好壞的標準。Rouge方法主要有以下四個評判指標:1) 信息量;2) 連貫性;3) 可讀性;4) 冗余度。四項指標的總分可通過Rouge-N、Rouge-L與Rouge-S等評分標準計算得到。評分標準的選擇取決于文摘的類型。本文選擇Rouge-N與Rouge-L作為評分標準。
Rouge-N的定義如下:
式中:n代表n-gram的長度,本文將n值設置為1和2,分別計算其得分。
Rouge-L的定義如下:
式中:LCS(X,Y)是X與Y的公共子序列長度,R和P分別表示召回率和準確率,F即為通過Rouge-L計算出的得分。
本文通過如下方法確定權值w的分配,以段落權值分配為例:
1) 將wa、wb、wc初始化為1,計算出該狀態下摘要的Rouge得分P;
2) 設步長為0.1,每次將單個權值減去步長,保證其他兩個權值不變并且wa>wb>wc;
3) 計算權值變換后的Rouge得分,若該得分大于P,則更新P值為目前的得分,并且記錄該狀態下的權值;
4) 重復步驟2)-3),直到權值為0。
由于數據量過大,本文截取部分結果展現在表1和表2當中。

表1 結構權值對Rouge分數的影響

續表1

表2 關鍵詞權值對結果的影響
從表中可看出,當文章段首、段中段尾權值分別為0.8、0.5與0.2,或關鍵詞個數權值分別為0.3與0.2時,Rouge分數最高有最優解,即可以確定摘要生成框架的權值。
本文選取了四種自動摘要算法與本文提出算法相比較,分別是傳統的TextRank方法、基于BM25自動摘要算法[10]、基于Voting抽取式方法[12]與基于LDA與TextRank的摘要提取方法[15],Rouge-N、Rouge-L實驗結果分別如表3、表4所示。

表3 Rouge-N摘要評測結果

表4 Rouge-L摘要評測結果
表中數據為100篇文章的平均得分,可以看出本文提出算法在Rouge-1、Rouge-2與Rouge-L中均有提升,特別是在Rouge-2中提升顯著,評測結果展現了本文提出的算法在單文檔摘要方面的優勢性。
圖4展現了本文算法生成短篇至長篇文章摘要的Rouge平均分數,每個標簽下的三個柱狀圖分別表示Rouge-1、Rouge-2與Rouge-3評分,可以看出,隨著文章篇幅的長度的增加,Rouge分數在中長篇之前逐漸增加,之后減少,說明本文算法生成中長篇幅文章摘要的質量比較高。

圖4 文章篇幅對Rouge摘要評分的影響
表5展現了本文算法生成摘要的結果,并與人工摘要進行了對比。可以看出,自動摘要的通順程度雖不及人工摘要,但并不妨礙讀者進行閱讀。自動摘要基本涵蓋了文章核心意思,可以使讀者了解文章的主旨。

表5 自動摘要與人工摘要對比示例
實驗結果表明本文提出的自動摘要算法相對其他算法有一定的提升,適用于生成中長篇幅文章的摘要,可以結合實際項目,應用于新聞資訊的網站中。
本文通過總結近年學術領域中自動摘要生成算法的優缺點,運用Gensim自然語言處理框架,提出了一種中文自動摘要算法。
算法從兩個方面入手提升了自動摘要的可靠程度。1) 通順度方面: 運用Word2vec使得關鍵句在包含文意的同時有一定的連貫性;構建了摘要生成框架,通過句子的位置賦予其不同的權值,在使得算法能夠從上至下尋找關鍵句,從而提升了通順程度。2) 關鍵性方面:運用并改進了TextRank提取關鍵句算法,并在摘要生成框架中通過LDA主題模型提取關鍵詞加以驗證。
實驗結果表明了本文提出方法的有效性,下一階段的任務是針對短篇幅文章,提升其自動摘要的質量。