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