馮讀娟,楊 璐,嚴(yán)建峰
(蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
文本摘要的目的是簡化句子以抽取文本主要信息。目前,文本摘要按照文檔數(shù)量可以分為單文檔摘要和多文檔摘要,按照實(shí)現(xiàn)方式可以分為抽取式摘要和生成式摘要。抽取式自動(dòng)摘要按照一定的權(quán)重計(jì)算方法抽取原文本中的重要句子并進(jìn)行拼接以組成文本摘要[1]。生成式摘要?jiǎng)t是計(jì)算機(jī)讀取原文本后,在理解整篇文章的基礎(chǔ)上不使用原文句子而直接生成的摘要結(jié)果。隨著深度學(xué)習(xí)技術(shù)在自然語言處理(Natural Language Processing,NLP)領(lǐng)域的廣泛應(yīng)用,特別是序列到序列(sequence-to-sequence,seq2seq)模型的出現(xiàn),使得生成式摘要更加流暢和自然。
來自Facebook的RUSH等人[2]較早提出一種Encoder-Decoder框架下的句子摘要模型,其中嘗試Bag-of-Words、CNN和Attention-Based 3種編碼方式,同時(shí)還與抽取式方法相結(jié)合,分別在DUC2004和Gigaword數(shù)據(jù)集上進(jìn)行對比,結(jié)果表明,增加了人工特征的ABS+模型效果優(yōu)于ABS模型。
CHOPRA等人[3]同樣使用卷積網(wǎng)絡(luò)編碼原文,使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)作為解碼器。根據(jù)RNN作用的不同,將模型分為RAS-Elman和RAS-LSTM,在Gigaword數(shù)據(jù)集上對比各模型,結(jié)果表明,RAS-Elman模型效果較好。
來自IBM的NALLAPATI等人[4]使用雙向門控循環(huán)單元(BiGRU)作為編碼器對原文實(shí)現(xiàn)編碼,解碼器使用GRU進(jìn)行解碼,同時(shí)融合一些特征到模型中,實(shí)驗(yàn)結(jié)果表明,該方法的性能優(yōu)于單一使用深度神經(jīng)網(wǎng)絡(luò)。BAHDANAU等人[5]提出一種新的解碼方式,其解碼的源頭不僅是編碼輸出的語義向量,同時(shí)構(gòu)建一種從輸入序列中為當(dāng)前預(yù)測詞自動(dòng)搜尋相關(guān)部分的機(jī)制,即注意力機(jī)制,該機(jī)制有效提高了神經(jīng)機(jī)器翻譯(Neural Machine Translation,NMT)的效果。SEE等人[6]采用BiLSTM編碼原文的詞向量序列,解碼器采用單向LSTM,使用指針網(wǎng)絡(luò)模型緩解未登錄詞(Out-of-Vocabulary,OOV)問題,參數(shù)復(fù)用降低了模型的復(fù)雜度。GEHRING等人[7]將CNN用于神經(jīng)機(jī)器翻譯任務(wù)上,其相比BiLSTM取得了較好的BLEU結(jié)果,且訓(xùn)練速度得到較大提高。
本文建立一種新的CGAtten-GRU雙編碼網(wǎng)絡(luò)模型以解決文本自動(dòng)摘要生成問題。通過多層CNN和BiGRU分別構(gòu)建2個(gè)不同的編碼器,利用雙編碼器輸出結(jié)果建立注意力機(jī)制。解碼器端使用GRU同時(shí)融合Copy機(jī)制和集束搜索(Beam-Search)方法進(jìn)行解碼。在大規(guī)模中文短文本摘要數(shù)據(jù)集LCSTS上進(jìn)行實(shí)驗(yàn),將Rouge[8]作為評價(jià)指標(biāo),以驗(yàn)證該模型的性能。
在自然語言處理過程中,seq2seq模型普遍使用RNN作為編碼器和解碼器。編碼器RNN處理長度為m的輸入序列x=(x1,x2,…,xm)并返回狀態(tài)向量h=(h1,h2,…,hm)。中間向量h進(jìn)入編碼器RNN生成結(jié)果y=(y1,y2,…,yn)。解碼端利用上一個(gè)解碼狀態(tài)st、前一個(gè)目標(biāo)詞匯的embedding向量wt以及由編碼輸出構(gòu)造的語義向量ct共同生成下一個(gè)時(shí)間步的輸出yt+1。不同的RNN種類以及不同的條件輸入,將構(gòu)造出不同的編碼器-解碼器架構(gòu)。
RNN具有記憶功能,每個(gè)時(shí)間步狀態(tài)st捕捉之前時(shí)間點(diǎn)上的信息。為了規(guī)避標(biāo)準(zhǔn)RNN中的梯度爆炸和梯度消失問題,一般使用RNN中的2種改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),分別是長短時(shí)記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)和GRU。LSTM[9]網(wǎng)絡(luò)相對于RNN學(xué)習(xí)速度更快,而GRU網(wǎng)絡(luò)[10]是LSTM網(wǎng)絡(luò)的一種變體,其將LSTM的忘記門和輸入門合成為一個(gè)單一的更新門,同時(shí)混合了細(xì)胞狀態(tài)和隱藏狀態(tài)等。本文模型中全部使用更為簡單快速的GRU網(wǎng)絡(luò)。
目前,在自然語言處理領(lǐng)域,CNN在機(jī)器翻譯、文本分類等任務(wù)中已經(jīng)有許多應(yīng)用[11-13]。卷積網(wǎng)絡(luò)在輸入序列的固定大小窗口上操作,使得能夠同時(shí)計(jì)算源句子的所有特征。RNN網(wǎng)絡(luò)維持整個(gè)過去的隱藏狀態(tài),無法進(jìn)行序列內(nèi)的并行計(jì)算。與RNN相比,一系列卷積層操作為獲取序列元素之間的關(guān)系提供了更快捷的方法。卷積網(wǎng)絡(luò)處理過程自上而下,所有單詞都經(jīng)歷相同數(shù)量的變換,而RNN的第一個(gè)單詞被過度處理且最后一個(gè)單詞僅被處理一次。
基于以上2種網(wǎng)絡(luò)結(jié)構(gòu)在編碼器-解碼器架構(gòu)中的應(yīng)用優(yōu)勢與缺點(diǎn),本文嘗試將2種網(wǎng)絡(luò)結(jié)構(gòu)相融合,構(gòu)造一種雙編碼網(wǎng)絡(luò)結(jié)構(gòu)以對源文本進(jìn)行充分編碼。
將注意力機(jī)制引入到初始的編碼器-解碼器框架中是為了解決傳統(tǒng)結(jié)構(gòu)在編碼解碼時(shí)僅依賴于內(nèi)部一個(gè)固定長度向量的問題[14]。單純的編碼器-解碼器模型在編碼時(shí)將所有輸入信息壓縮成固定長度傳遞給解碼器,這個(gè)過程中存在信息丟失問題,導(dǎo)致解碼器接收到的語義向量無法完全表示整個(gè)序列的信息。此外,輸出詞匯更多的是受輸入序列某些特定部分的影響[15],解碼器在生成詞匯時(shí)缺少選擇性關(guān)注輸入序列的機(jī)制,影響了輸出的準(zhǔn)確率。
注意力機(jī)制通過在輸入序列上引入注意力權(quán)重,優(yōu)先考慮某些相關(guān)信息的位置。本文提出的雙編碼器模型分別經(jīng)過卷積網(wǎng)絡(luò)和RNN,通過結(jié)合雙編碼器的中間輸出結(jié)果來構(gòu)造新的上下文向量。
本文CGAtten-GRU模型的整體結(jié)構(gòu)如圖1所示。其中,一個(gè)編碼器encoder-1使用3層卷積網(wǎng)絡(luò),另一個(gè)編碼器encoder-2使用單層雙向GRU網(wǎng)絡(luò),解碼器使用單層GRU網(wǎng)絡(luò)。
田銘背著范青青下山,他恨恨地問:“那是個(gè)什么樣的人,讓你到現(xiàn)在還忘記不了?!狈肚嗲嘣谒暮蟊成蠠o力地說:“誰說的,早忘記了,你沒聽見我在叫田銘嗎?你為什么都不答應(yīng)?!?/p>
圖1 CGAtten-GRU模型整體結(jié)構(gòu)
編碼器encoder-1采用單層BiGRU網(wǎng)絡(luò)讀取源文本。GRU網(wǎng)絡(luò)定義如下:
zi=σ(Wz[xi,hi-1])
(1)
ri=σ(Wr[xi,hi-1])
(2)
(3)
(4)
其中,Wz、Wr、Wh為權(quán)重矩陣。
雙向GRU網(wǎng)絡(luò)包含前向神經(jīng)網(wǎng)絡(luò)和后向神經(jīng)網(wǎng)絡(luò)。由于單向網(wǎng)絡(luò)結(jié)構(gòu)僅將已經(jīng)輸入的過去的信息存儲在隱藏狀態(tài)中,訓(xùn)練過程中無法使用未來的信息,因此本文實(shí)驗(yàn)中使用雙向網(wǎng)絡(luò)結(jié)構(gòu)[16],同時(shí)保留來自正負(fù)2個(gè)時(shí)間方向的狀態(tài)數(shù)據(jù)。
(5)
(6)
編碼器encoder-2由3層卷積網(wǎng)絡(luò)堆疊而成。文獻(xiàn)[17]研究表明,實(shí)驗(yàn)過程中卷積網(wǎng)絡(luò)設(shè)置越深的層數(shù),得出的實(shí)驗(yàn)結(jié)果就越好。但是達(dá)到一定深度后,模型的性能不會隨著網(wǎng)絡(luò)層數(shù)的增加而一直提升。在本文的中文文本生成式摘要任務(wù)中,設(shè)置卷積層數(shù)為3并作為encoder-2編碼器,此時(shí)能取得較好的實(shí)驗(yàn)結(jié)果。
st=GRU(wt-1,ct-1,st-1)
(7)
(8)
其中,Wd是權(quán)重矩陣,b是偏置向量。
語義向量ct的權(quán)重at,i由encoder-2卷積網(wǎng)絡(luò)的輸出結(jié)果計(jì)算:
(9)
(10)
對以上結(jié)果和encoder-1的BiGRU網(wǎng)絡(luò)輸出狀態(tài)hi進(jìn)行加權(quán)求和,ct的最終結(jié)果為:
(11)
結(jié)合前一個(gè)詞的詞嵌入向量wt-1、當(dāng)前語義表示ct、解碼狀態(tài)st三者計(jì)算獲得輸出狀態(tài)rt。rt通過一個(gè)maxout[18]隱藏層與一個(gè)softmax層后得到下一個(gè)詞在詞典中的位置:
rt=Wrwt-1+Urct+Vrst
(12)
(13)
p(yt|y1,y2,…,yt-1)=softmax(Womt)
(14)
由于摘要結(jié)果往往包含一些命名實(shí)體和稀有名詞,且語言本身也會不斷產(chǎn)生一些新詞匯,即使增大詞典也不可能將所有實(shí)體名詞和新詞等全部包含在內(nèi),這一問題對摘要結(jié)果影響較大。本文模型通過Copy機(jī)制[19-20]及Beam-Search[21]集束搜索方法提高摘要準(zhǔn)確性。
在模型中使用Copy機(jī)制時(shí),有2個(gè)softmax層來預(yù)測下一個(gè)詞匯,一個(gè)預(yù)測該詞在原語句中的位置,另一個(gè)預(yù)測該詞在詞典中的位置。從源文本復(fù)制單詞的概率為:
p=σ(Wst+Uct+b)
(15)
集束搜索從左到右生成摘要詞匯,每次生成一個(gè)詞匯時(shí)均對結(jié)果進(jìn)行排序,并保留固定數(shù)量的候選詞匯,固定的數(shù)量即集束寬度。集束搜索通過這種剪枝操作能夠在一定程度上降低計(jì)算復(fù)雜度,提高解碼速度。本文模型設(shè)置集束寬度為12。
本文實(shí)驗(yàn)使用LCSTS數(shù)據(jù)集[22],該數(shù)據(jù)集包含3個(gè)部分,如表1所示。
1)第1部分包含2 400 591個(gè)短文本-摘要對,是數(shù)據(jù)集的主要構(gòu)成部分,這部分?jǐn)?shù)據(jù)在實(shí)驗(yàn)中用作訓(xùn)練集。
2)第2部分包含10 666個(gè)文本-摘要訓(xùn)練對,全部從第1部分?jǐn)?shù)據(jù)中隨機(jī)抽取,人工打分標(biāo)注在1~5之間,表示文本與對應(yīng)摘要之間的相關(guān)性,“1”表示最不相關(guān),“5”表示最匹配。
3)第3部分包含1 106個(gè)文本-摘要對。對于這部分?jǐn)?shù)據(jù),3位志愿者分別獨(dú)立地對2 000個(gè)文本數(shù)據(jù)進(jìn)行標(biāo)記,提取具有相同分?jǐn)?shù)的數(shù)據(jù)得到1 106個(gè)文本-摘要對。本部分?jǐn)?shù)據(jù)集獨(dú)立于第1部分與第2部分。在實(shí)驗(yàn)中,本文使用該部分3、4、5評分的數(shù)據(jù)作為短文本摘要生成任務(wù)的測試集。
表1 數(shù)據(jù)集信息
短文本(ST)、分詞短文本(Segmented ST)、摘要(SUM)和分詞摘要(Segmented SUM)長度分布情況如圖2所示[22]。
圖2 數(shù)據(jù)集文本及摘要長度統(tǒng)計(jì)
實(shí)驗(yàn)將第1部分?jǐn)?shù)據(jù)作為訓(xùn)練集,通過jieba工具將文本及摘要進(jìn)行分詞處理。如圖2所示,分詞文本長度中位數(shù)略大于60,分詞摘要長度中位數(shù)約為10,因此,在本文實(shí)驗(yàn)中,固定文本及摘要長度分別為65和15。剔除分詞后文本長度小于10、摘要長度小于5的數(shù)據(jù)。實(shí)際訓(xùn)練數(shù)據(jù)量為2 340 205,過濾掉60 343條長度不符合要求的數(shù)據(jù)對。
固定詞匯表大小為50 000,從分詞處理的數(shù)據(jù)集中選取50 000個(gè)高頻詞作為詞匯表。本文設(shè)計(jì)的解碼器詞匯表和編碼器相同,同時(shí)共用編碼器的詞嵌入矩陣。批尺寸大小為64,詞向量維度為256。本文采用Adam[23]模型優(yōu)化器,學(xué)習(xí)率為0.001。所有模型的訓(xùn)練過程都在GTX 1080Ti機(jī)器上完成,實(shí)驗(yàn)用時(shí)2天左右。
測試集使用第3部分?jǐn)?shù)據(jù)中評分為3、4、5的文本-摘要組合對,共計(jì)725個(gè)。實(shí)驗(yàn)結(jié)果使用Rouge[8]進(jìn)行評價(jià)。Rouge是國際公認(rèn)的自動(dòng)摘要評價(jià)標(biāo)準(zhǔn),其通過計(jì)算標(biāo)準(zhǔn)摘要與實(shí)驗(yàn)摘要結(jié)果重疊詞匯來衡量摘要質(zhì)量,例如,使用單詞匯、雙詞匯以及最長公共子序列詞匯長度分別計(jì)算Rouge-1、Rouge-2、Rouge-L值。在下文的實(shí)驗(yàn)過程中,主要使用Rouge-1、Rouge-2、Rouge-L 3個(gè)值評價(jià)本文的生成式摘要質(zhì)量,并與文獻(xiàn)[22]提出的2個(gè)模型進(jìn)行實(shí)驗(yàn)結(jié)果對比。
如表2所示,第1組實(shí)驗(yàn)?zāi)P徒Y(jié)構(gòu)(RNN)為文獻(xiàn)[22]提出的第1個(gè)模型,其未引入注意力機(jī)制,使用RNN做編碼器和解碼器,且將編碼器得到的最后一個(gè)隱藏層狀態(tài)傳輸?shù)浇獯a器;第2組實(shí)驗(yàn)?zāi)P徒Y(jié)構(gòu)(RNN context)為文獻(xiàn)[22]提出的第2個(gè)模型,其在第1組模型的基礎(chǔ)上在解碼器端引入上下文,將編碼器所有狀態(tài)傳入解碼器。以上2組實(shí)驗(yàn)?zāi)P椭械腞NN結(jié)構(gòu)均采用GRU網(wǎng)絡(luò),使用Adadelta作為模型優(yōu)化器,解碼過程中利用集束搜索得到摘要結(jié)果。第3組編碼器(MC-GRU)僅采用CNN網(wǎng)絡(luò),卷積結(jié)構(gòu)與本文模型相同,解碼器使用RNN,包括注意力機(jī)制。第4組為本文模型,其采用2種編碼器結(jié)構(gòu)構(gòu)建注意力機(jī)制,解碼器端采用了GRU網(wǎng)絡(luò),同時(shí)引入注意力及Copy機(jī)制并使用集束搜索方法。從表2可以看出,在Rouge評價(jià)系統(tǒng)下,本文CGAtten-GRU模型的Rouge-1、Rouge-2、Rouge-L值高于第2組和第3組模型。CGAtten-GRU模型引入2個(gè)編碼器構(gòu)造注意力,有效彌補(bǔ)了編碼后中間語義向量包含信息不充分的問題,提高了進(jìn)入解碼器的信息量,從而極大地提升了摘要效果。同時(shí),本文模型在解碼器端輔助使用Copy機(jī)制和集束搜索方法,也在一定程度上提高了摘要的準(zhǔn)確性。
表2 4種模型性能對比
本文提出一種基于雙編碼器結(jié)構(gòu)的CGAtten-GRU模型。構(gòu)造2種不同的編碼器網(wǎng)絡(luò)結(jié)構(gòu)對源文本并行編碼,2個(gè)編碼器輸出的語義向量共同構(gòu)造注意力機(jī)制,以豐富編碼輸出的中間信息內(nèi)容,使得解碼獲取足夠的信息從而提高其準(zhǔn)確度。結(jié)合Copy機(jī)制及集束搜索方法解決未登錄詞問題,進(jìn)一步提升摘要效果。在大規(guī)模中文數(shù)據(jù)集LCSTS上的實(shí)驗(yàn)結(jié)果表明,該模型生成的中文摘要質(zhì)量較高。下一步將改進(jìn)卷積編碼器結(jié)構(gòu)并提高注意力區(qū)分度,以改善摘要結(jié)果中的詞語重復(fù)現(xiàn)象。