肖元君 吳國文
(東華大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 上海 201600)
自動文摘技術(shù)指的是利用計算機(jī)對文本進(jìn)行處理,挖掘出最符合文意的句子,是自然語言處理領(lǐng)域中一個很重要的分支。
在當(dāng)今學(xué)術(shù)領(lǐng)域中,生成文本摘要的方式主要有兩種,1) 抽取式,顧名思義,就是選出文章中最關(guān)鍵的句子作為文章摘要。如李娜娜等[1]提出的基于TextRank的自動摘要優(yōu)化算法,該算法運(yùn)用詞頻統(tǒng)計,找到文章的關(guān)鍵句子,根據(jù)句子在段落中的位置調(diào)整權(quán)重,從而組成文章摘要。抽取式方法的確能夠找到符合文章中心意思的句子,但在摘要通順程度上有一定的局限性。2) 生成式,旨在使計算機(jī)能夠與人類一樣,用自己的文字概括全文意思。如Google Brain團(tuán)隊[2]在2014年提出的seq2seq序列模型,并隨后在Github上開源了此項目。該模型被廣泛應(yīng)用于自動翻譯、對話機(jī)器人項目當(dāng)中,對于短篇文章也能夠利用該模型生成文章摘要。但序列模型的局限性在于,若是將長篇幅文章作為訓(xùn)練預(yù)料,訓(xùn)練過程將消耗大量時間,而且摘要生成結(jié)果也不盡如人意,句子結(jié)構(gòu)復(fù)雜,無法讀通順。
由上述分析可知,生成高質(zhì)量摘要技術(shù)的關(guān)鍵在于:1) 包含文章關(guān)鍵信息;2) 句意通順。對于長篇幅文章,為了保證句意通順程度,需要使用抽取式方法生成文章摘要。
本文從上述兩個方面出發(fā),提出了一種基于Gensim的摘要自動生成算法,該算法分為兩個階段。關(guān)鍵句生成階段,由于使用word2vec模型可以挖掘出關(guān)聯(lián)性強(qiáng)的句子,為了提升摘要通順程度,運(yùn)用Gensim框架中的Word2vec詞向量模型,將語料轉(zhuǎn)化為詞向量,修改Gensim框架中的TextRank算法,使其能夠接受詞向量輸入,根據(jù)關(guān)聯(lián)性與重要程度,生成句子無向圖。摘要生成框架構(gòu)建階段,框架旨在賦予第一階段所生成關(guān)鍵句不同的權(quán)值,權(quán)值由文章結(jié)構(gòu)與所含關(guān)鍵詞個數(shù)決定。由于文章段首常常被用來作為摘要的首句話,段尾句子的重要性比較低,所以段首的句子應(yīng)具有更高的權(quán)值。使用Gensim框架中的LDA主題模型提取文章關(guān)鍵詞,若句子包含的關(guān)鍵詞越多,則權(quán)值越高。最后根據(jù)權(quán)值計算句子分?jǐn)?shù),選擇分?jǐn)?shù)最高的幾句話,生成文章摘要。同時,本文使用Rouge摘要評測工具,對算法生成摘要的質(zhì)量進(jìn)行評分,與其他算法生成摘要的質(zhì)量分?jǐn)?shù)進(jìn)行對比,展現(xiàn)在實驗結(jié)果中。
Gensim框架由Ivan Menshikh[3]所在團(tuán)隊開發(fā),并于2015年作為Python第三方擴(kuò)展包開源。它提供了自然語言處理常用模型的API調(diào)用接口。
本文提出的自動文摘算法主要應(yīng)用Gensim框架中包含的三種算法,分別為Word2vec詞向量模型、TextRank算法和LDA主題模型。并且為了使算法能夠更好地應(yīng)用于實際項目,本文修改了部分算法源碼。
為了提升摘要通順程度,需要發(fā)現(xiàn)句子間的關(guān)聯(lián)程度,即計算其相似度,前期工作是將文本向量化。Word2vec是詞向量模型,它包含兩種神經(jīng)網(wǎng)絡(luò),分別是CBOW與Skip-Gram。
CBOW根據(jù)上下文預(yù)測當(dāng)前詞語的概率,公式如下所示:
式中:(w,c)為從語料中抽取的n元短語,P(w|c)即詞w在文本中c中出現(xiàn)的概率,V為訓(xùn)練語料,e′為更新權(quán)重,x為輸入矩陣。
Skip-Gram根據(jù)當(dāng)前詞語預(yù)測上下文概率,其中D為詞集合,計算公式如下所示:
Gensim自帶的TextRank挖掘關(guān)鍵句算法是基于共現(xiàn)單詞數(shù)量決定的,缺點(diǎn)是忽略了同義異形詞,而本文提出基于詞向量找到關(guān)鍵句的方法可以有效解決這一問題。即將該句子中所含單詞轉(zhuǎn)化為詞向量,再求出詞向量的總和,將該值作為圖的一個頂點(diǎn)計算。
類比PageRank網(wǎng)頁重要程度公式,文本圖G的權(quán)重計算公式為:
式中:W為初始權(quán)值;Vi為入鏈集合;Vj為出鏈集合;S表示TextRank的值;wji表示第j行,第i列的權(quán)值;k表示i列之前的列數(shù);為避免權(quán)值計算出現(xiàn)0的情況,添加了阻尼系數(shù)d,表示跳轉(zhuǎn)到其他節(jié)點(diǎn)的概率。
若句子包含關(guān)鍵詞個數(shù)多,則關(guān)鍵程度高,應(yīng)賦予較高的權(quán)重。在訓(xùn)練語料充足的情況下,相比于其他關(guān)鍵詞提取算法,LDA主題模型提取關(guān)鍵詞的準(zhǔn)確度較高,所以本文運(yùn)用該模型提取關(guān)鍵詞。建模過程總結(jié)為如下兩個步驟:
1) 根據(jù)多項式分布,描述主題下的詞分布;
2) 根據(jù)極大似然估計與共軛先驗分布估算參數(shù)值。
設(shè)z為文章主題,θ為主題向量,w為該主題下的詞匯,則LDA聯(lián)合分布概率為:
本文關(guān)鍵句提取算法主要分為兩個步驟:1) 訓(xùn)練詞向量;2) 修改Gensim框架中TextRank算法使其能夠接受詞向量輸入。算法流程圖如圖1所示。
圖1 關(guān)鍵句提取算法流程
訓(xùn)練語料庫由30萬篇中文文章構(gòu)成,其中包含維基百科基本語料,爬蟲程序爬取的經(jīng)濟(jì)時政新聞。訓(xùn)練之前需要對語料庫進(jìn)行預(yù)處理,該過程主要分為三個步驟:1) 繁簡轉(zhuǎn)化,由于原始語料庫包含繁體字,會出現(xiàn)同義異詞的情況,這不是模型所期望的輸入;2) 去除停用詞,非常用詞與標(biāo)點(diǎn)符號會影響模型效果,所以訓(xùn)練前需進(jìn)行該過程,本文運(yùn)用哈工大停用詞表對語料庫進(jìn)行去停處理;3) 分詞,Word2vec模型需接受分詞后的結(jié)果,本文使用Jieba分詞對語料進(jìn)行處理。
訓(xùn)練前需要對Word2vec模型參數(shù)進(jìn)行修改,以達(dá)到良好效果,本文主要對以下參數(shù)做了修改:1) sentences,設(shè)置為Text8Corpus,因為它能夠很好地處理大文本數(shù)據(jù);2) size,該參數(shù)表示向量維度大小,設(shè)置為120;3) batch_word,該參數(shù)表示每一批傳遞給現(xiàn)成的單詞數(shù)量,本文設(shè)置為1。
本文訓(xùn)練環(huán)境為macOS操作系統(tǒng),2.3 Hz Intel Core i5處理器,8 GB內(nèi)存,訓(xùn)練過程大致為3小時左右。
該部分算法具體實現(xiàn)如下:
1) 將文章分詞,并按照中文分句符號分句,將每句話作為文本單元;
2) 加載訓(xùn)練好的詞向量模型,將詞匯轉(zhuǎn)化為詞向量;
3) 構(gòu)建無向圖G=(V,E),頂點(diǎn)V是文本單元所包含詞向量累加的結(jié)果,采用共現(xiàn)關(guān)系生成兩點(diǎn)間的邊;
4) 將文本單元所包含詞向量累加,根據(jù)無向圖G生成如下所示稀疏矩陣,t表示文本單元,每篇文章有n個文本單元;
5) 根據(jù)如下余弦相似度公式,計算每個頂點(diǎn)之間的相似度,將結(jié)果替換4)中的文本單元:
6) 結(jié)合TextRank計算公式,賦予阻尼系數(shù)d,通常將這個值設(shè)置為0.85,計算迭代至收斂,算出最終分?jǐn)?shù)。
至此,由于詞向量相關(guān)性,分值高的文本單元由句子關(guān)鍵程度與關(guān)鍵句連貫性決定。
摘要生成框架的目的是為了對上一節(jié)提取出來的關(guān)鍵句結(jié)構(gòu)進(jìn)行優(yōu)化以及驗證。通過關(guān)鍵句所在文章結(jié)構(gòu)以及所含關(guān)鍵詞賦予其不同權(quán)值,計算后得到最終分?jǐn)?shù),選擇分?jǐn)?shù)最高的幾句話生成文章摘要。摘要生成框架處理流程圖如圖2所示。
圖2 摘要生成框架處理流程
對于新聞時政文章,段首往往包含著作者的中心意思。如東方財富網(wǎng)新聞?wù)仁褂贸槿∈椒椒ㄉ傻奈恼抡?,段首句子被用做摘要核心句的比例很高。從而?yīng)賦予段首句子更高的權(quán)值。
設(shè)w1、w2、w3分別為段首、段中與段尾的權(quán)值,s表示句子所在位置,L表示文章句子總數(shù),其中wa>wb>wc。根據(jù)本文運(yùn)用測試數(shù)據(jù)集文章結(jié)構(gòu),將段首、段尾句子個數(shù)定義為α,權(quán)值w表達(dá)式如下:
相對于其他關(guān)鍵詞提取算法,LDA主題模型能很好地提取出文章隱式信息,如與經(jīng)濟(jì)相關(guān)的文章,文章通篇介紹了股票債券等信息,卻沒有出現(xiàn)經(jīng)濟(jì)二字,運(yùn)用LDA主題模型就可以將隱含關(guān)鍵詞(經(jīng)濟(jì))提取出來。主題模型的映射關(guān)系如圖3所示。
圖3 主題模型映射關(guān)系
主題模型認(rèn)為詞與文檔之間沒有直接的聯(lián)系,每個文檔都有一個或多個主題,每個主題都對應(yīng)著詞分布。運(yùn)用Gensim框架中的LDA主題模型訓(xùn)練語料,得到數(shù)據(jù)集的主題-詞分布模型,通過將傳遞的語料字典化,根據(jù)模型計算出詞分布概率p(wi|di),其中w為詞匯,d為對應(yīng)的文章,從而將概率值高的詞匯認(rèn)定為文章的關(guān)鍵詞。
提取出文章關(guān)鍵詞后,便可根據(jù)關(guān)鍵句所含關(guān)鍵詞個數(shù)定義其權(quán)值,設(shè)w為關(guān)鍵詞分?jǐn)?shù)權(quán)值,n為所含關(guān)鍵詞個數(shù),wd、we分別為不同關(guān)鍵詞閾值β下的權(quán)重。權(quán)值w表達(dá)式如下:
在實現(xiàn)權(quán)值分配的過程中需構(gòu)建句子與其所含關(guān)鍵詞個數(shù)的字典,從而根據(jù)關(guān)鍵詞個數(shù)分配每個句子不同的權(quán)重。
最后將文章結(jié)構(gòu)權(quán)重分配結(jié)果與關(guān)鍵詞個數(shù)權(quán)值分配結(jié)果相加后乘以第一階段產(chǎn)生的關(guān)鍵句分值,得到最終分?jǐn)?shù),并將句子按照分值大小,從高到低降序排列。
本文選擇100篇經(jīng)濟(jì)時政文章與對應(yīng)的標(biāo)準(zhǔn)摘要作為測試數(shù)據(jù)集,數(shù)據(jù)來源于東方財富網(wǎng)等各大新聞網(wǎng)站。
Rouge摘要評測方法是由Lin等[16]提出的摘要內(nèi)部評價方法,現(xiàn)被廣泛應(yīng)用與自動文摘項目當(dāng)中,作為評判摘要質(zhì)量好壞的標(biāo)準(zhǔn)。Rouge方法主要有以下四個評判指標(biāo):1) 信息量;2) 連貫性;3) 可讀性;4) 冗余度。四項指標(biāo)的總分可通過Rouge-N、Rouge-L與Rouge-S等評分標(biāo)準(zhǔn)計算得到。評分標(biāo)準(zhǔn)的選擇取決于文摘的類型。本文選擇Rouge-N與Rouge-L作為評分標(biāo)準(zhǔn)。
Rouge-N的定義如下:
式中:n代表n-gram的長度,本文將n值設(shè)置為1和2,分別計算其得分。
Rouge-L的定義如下:
式中:LCS(X,Y)是X與Y的公共子序列長度,R和P分別表示召回率和準(zhǔn)確率,F(xiàn)即為通過Rouge-L計算出的得分。
本文通過如下方法確定權(quán)值w的分配,以段落權(quán)值分配為例:
1) 將wa、wb、wc初始化為1,計算出該狀態(tài)下摘要的Rouge得分P;
2) 設(shè)步長為0.1,每次將單個權(quán)值減去步長,保證其他兩個權(quán)值不變并且wa>wb>wc;
3) 計算權(quán)值變換后的Rouge得分,若該得分大于P,則更新P值為目前的得分,并且記錄該狀態(tài)下的權(quán)值;
4) 重復(fù)步驟2)-3),直到權(quán)值為0。
由于數(shù)據(jù)量過大,本文截取部分結(jié)果展現(xiàn)在表1和表2當(dāng)中。
表1 結(jié)構(gòu)權(quán)值對Rouge分?jǐn)?shù)的影響
續(xù)表1
表2 關(guān)鍵詞權(quán)值對結(jié)果的影響
從表中可看出,當(dāng)文章段首、段中段尾權(quán)值分別為0.8、0.5與0.2,或關(guān)鍵詞個數(shù)權(quán)值分別為0.3與0.2時,Rouge分?jǐn)?shù)最高有最優(yōu)解,即可以確定摘要生成框架的權(quán)值。
本文選取了四種自動摘要算法與本文提出算法相比較,分別是傳統(tǒng)的TextRank方法、基于BM25自動摘要算法[10]、基于Voting抽取式方法[12]與基于LDA與TextRank的摘要提取方法[15],Rouge-N、Rouge-L實驗結(jié)果分別如表3、表4所示。
表3 Rouge-N摘要評測結(jié)果
表4 Rouge-L摘要評測結(jié)果
表中數(shù)據(jù)為100篇文章的平均得分,可以看出本文提出算法在Rouge-1、Rouge-2與Rouge-L中均有提升,特別是在Rouge-2中提升顯著,評測結(jié)果展現(xiàn)了本文提出的算法在單文檔摘要方面的優(yōu)勢性。
圖4展現(xiàn)了本文算法生成短篇至長篇文章摘要的Rouge平均分?jǐn)?shù),每個標(biāo)簽下的三個柱狀圖分別表示Rouge-1、Rouge-2與Rouge-3評分,可以看出,隨著文章篇幅的長度的增加,Rouge分?jǐn)?shù)在中長篇之前逐漸增加,之后減少,說明本文算法生成中長篇幅文章摘要的質(zhì)量比較高。
圖4 文章篇幅對Rouge摘要評分的影響
表5展現(xiàn)了本文算法生成摘要的結(jié)果,并與人工摘要進(jìn)行了對比。可以看出,自動摘要的通順程度雖不及人工摘要,但并不妨礙讀者進(jìn)行閱讀。自動摘要基本涵蓋了文章核心意思,可以使讀者了解文章的主旨。
表5 自動摘要與人工摘要對比示例
實驗結(jié)果表明本文提出的自動摘要算法相對其他算法有一定的提升,適用于生成中長篇幅文章的摘要,可以結(jié)合實際項目,應(yīng)用于新聞資訊的網(wǎng)站中。
本文通過總結(jié)近年學(xué)術(shù)領(lǐng)域中自動摘要生成算法的優(yōu)缺點(diǎn),運(yùn)用Gensim自然語言處理框架,提出了一種中文自動摘要算法。
算法從兩個方面入手提升了自動摘要的可靠程度。1) 通順度方面: 運(yùn)用Word2vec使得關(guān)鍵句在包含文意的同時有一定的連貫性;構(gòu)建了摘要生成框架,通過句子的位置賦予其不同的權(quán)值,在使得算法能夠從上至下尋找關(guān)鍵句,從而提升了通順程度。2) 關(guān)鍵性方面:運(yùn)用并改進(jìn)了TextRank提取關(guān)鍵句算法,并在摘要生成框架中通過LDA主題模型提取關(guān)鍵詞加以驗證。
實驗結(jié)果表明了本文提出方法的有效性,下一階段的任務(wù)是針對短篇幅文章,提升其自動摘要的質(zhì)量。