錢揖麗 馬雪雯
1(山西大學計算機與信息技術學院 山西 太原 030006) 2(山西大學計算機智能與中文信息處理教育部重點實驗室 山西 太原 030006)
文本摘要旨在為一個文檔生成簡短、連貫且信息豐富的摘要。文本摘要的方法可以分為抽取式和生成式兩類。抽取式的摘要從源文本中抽取重要的句子或短語組成摘要,生成式的摘要對文檔構建語義表示,使機器理解文本后生成新的摘要。抽取方法比較簡單,可以保證單個句子的流暢性并且保留原文信息,但是會出現冗余信息,特別是在生成短摘要的情況下。而生成方法可以生成源文本中沒有出現的新單詞和短語。當生成的摘要是單個緊湊的句子時,文本摘要任務可以稱為標題生成[1-2]。
隨著深度學習的發展,序列到序列神經網絡模型被廣泛應用于自然語言處理任務[3-4]。在文本摘要領域,不同于以往的抽取式方法[5-6],此模型也成為生成式摘要的主要方法[7-8]。序列到序列模型進行標題生成的過程是用編碼器對源文本進行語義表示,然后使用解碼器生成標題。
長短期記憶網絡[9](Long Short-Term Memory,LSTM)由于其設計的特點,可以捕捉到較長距離的依賴關系。而序列到序列模型的編碼階段需要準確理解和表示原始文本,所以雙向長短期記憶網絡(Bidirectional Long Short-Term Memory,BiLSTM)被提出用來表示文本的上下文語義關聯,其在各種對文本進行編碼的工作中一直是主導方法[10-11],包括使用神經網絡模型進行文本摘要生成時,通過BiLSTM對源文本構建文本語義表示[12-14]。
雖然BiLSTM在文本表示方面取得了很好的效果,但是仍具有一定的局限性。例如,使用BiLSTM對文本進行編碼是循環遞歸進行的,順序性的特點無法實現并行化,以及上下文之間的語義關聯會隨著狀態的傳遞逐漸減弱。針對BiLSTM的局限,本文使用的序列到序列模型在編碼階段不采用BiLSTM,而是使用一種句子級LSTM方法對源文本進行編碼。其主要思想是在每個重復步驟中對整個文本的所有單詞建模隱藏狀態,而不是像BiLSTM編碼時一個時刻只傳入一個單詞,即對整個文本構建一個全局信息的句子級狀態,同時建模每個單詞的子狀態作為局部信息。在一個重復步驟中,連續詞之間、句子級狀態與單詞狀態之間都會進行信息交換,全面理解文本信息,并且每個單詞從向左和向右單詞接受信息的語義計算是并行的。得到輸入文本的語義信息后使用混合指針網絡機制的解碼器生成標題。
目前針對文本摘要和標題生成任務的研究主要是使用序列到序列模型,一般由嵌入層、編碼層、解碼層和訓練策略組成。嵌入層對詞進行分布式表示,編碼層主要是序列建模,得到源文本語義向量,送入解碼層生成摘要或者標題,訓練策略是對模型參數進行優化。
在嵌入層,大多數工作使用Mikolov等[15]提出的Word2vec和Pennington等[16]提出的Glove詞向量工具對文本向量化。Nallapati等[8]在詞嵌入層將詞性、命名實體標簽、單詞的TF和IDF等文本特征融合在詞向量中,讓單詞具有多個維度的意義。Wang等[17]在詞向量中加入位置向量作為最終的文本向量表示,豐富詞向量的含義。
在編碼層,多數模型使用BiLSTM和門控循環單元(Gated Recurrent Unit,GRU)循環神經網絡對原文中的每個詞進行編碼,使得每個詞都具有上下文信息。Zhou等[18]在編碼器中引入選擇門網絡,從源文本中提取重要信息,去除冗余信息提高摘要質量。Zeng等[19]考慮到人寫摘要時會多次閱讀一篇文章,提出一種再讀編碼器,讀取源文本兩次,得到比較合理的語義向量。而文獻[7,17]使用卷積神經網絡(CNN)進行文本編碼,去除了LSTM和GRU的循環特性,實現了文本編碼時的并行性,從而提升了模型訓練速度。
在解碼層,一般模型融合可以選擇到原始文本重要信息的注意力機制解碼生成摘要或標題。Han等[14]提出一種多樣性的波束搜索算法,生成多樣的候選序列,促進解碼生成信息豐富的摘要。針對傳統解碼方法會帶來的錯誤傳播問題,Wan等[20]提出一種雙向解碼器的序列到序列模型,解碼階段使用前向和后向兩種方向的解碼器。
針對訓練策略,Yana等[21]提出將文本摘要的評價指標融合到優化目標內,使用最小風險訓練方法訓練模型。Paulus等[22]在傳統的損失函數中加入強化學習損失函數,用以解決傳統方法帶來的暴露偏差和輸出結果不靈活等問題。
使用序列到序列模型易產生重復和無法處理詞匯表外(Out-of-vocabulary,OOV)等問題。針對這些問題,See等[13]提出了使用指針網絡和覆蓋機制解決;Lin等[23]在編碼器中加入卷積門控單元進行源文本的全局編碼,解決輸出產生的重復單詞或短語問題。
針對BiLSTM自身順序性特點所帶來的問題,本文從文本編碼表示部分考慮,在序列到序列模型中采用句子級LSTM編碼,得到具有豐富語義特征的上下文文本表示,從而解碼生成文本標題。
本文使用的標題生成模型是基于帶注意力機制的序列到序列神經網絡模型,也稱為編碼-解碼模型。模型分為對輸入文本進行語義編碼和解碼生成文本標題。對此,生成任務形式化為:給定一篇輸入文本x={x1,x2,…,xN},其中N為文本的單詞個數,即文本長度。將文本x作為輸入,編碼得到隱藏狀態序列h={h1,h2,…,hN},經注意力機制計算出上下文向量c=g({h1,h2,…,hN}),其中g是組合隱藏狀態的函數,解碼生成一個長度為T 標題生成模型的編碼層是對給定的文本進行上下文語義編碼。本節主要介紹序列到序列模型中基礎的BiLSTM編碼以及本文使用的句子級LSTM編碼。 2.1.1 BiLSTM編碼表示文本 使用BiLSTM編碼的帶注意力機制的序列到序列標題生成模型的框架如圖1所示。 圖1 BiLSTM編碼的標題生成模型 在BiLSTM編碼文本時,BiLSTM由兩個方向的LSTM組成,包括從左向右和從右向左對輸入文本中的單詞循環進行編碼。這種結構可以捕捉歷史信息和未來信息,從而表征文本的上下文語義信息。在每個方向的LSTM上,輸入文本被編碼成一個包含所有單詞隱藏狀態的序列。給定狀態初始值,每個時刻t消耗一個單詞,循環完整個文本后得到狀態序列。 (1) (2) (3) (4) ct=ct-1⊙ft+ut⊙it (5) (6) (7) 對于整個輸入文本的語義信息由正向LSTM得到的語義信息(文本最后一個單詞的隱藏狀態)和反向LSTM得到的語義信息(文本第一個單詞的隱藏狀態)拼接表示: (8) 2.1.2句子級LSTM編碼表示文本 本文在序列到序列標題生成模型中編碼器(encoder)部分使用的句子級LSTM編碼框架如圖2所示。 圖2 句子級LSTM編碼t時刻框架 由圖2可以看出,每個單詞hi通過上下文窗口獲得一個N-gram的上下文信息,并且與包含整篇文本語義的d進行信息交換;而句子級狀態d通過每個單詞和上一時刻的全局狀態控制當前的全局語義信息。句子級LSTM編碼在同一時刻對每個單詞并行進行向左向右雙向信息流的交換,同一個循環時間步中進行了單詞與單詞以及單詞與整個文本之間的信息交換。 (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) 在t時刻對于整個文本的句子級狀態dt的更新計算如式(19)-式(24)所示。 (19) (20) (21) (22) (23) (24) 序列到序列模型的解碼層用于標題生成。在解碼部分通過對由編碼層得出的向量計算注意力權重,得到上下文向量(Context Vector)后作為解碼層輸入的一部分,并且加入指針機制經過循環LSTM神經網絡生成文本標題。 2.2.1注意力機制 注意力機制使標題生成模型在解碼的每個時間步集中于輸入文本的重要信息,因此注意力機制通過對編碼層的輸出向量計算注意力分布,得到上下文向量。 在解碼的每個步驟t中,注意力分布at表明了隱藏狀態序列中所有向量的重要程度,即篩選出文本的重要信息,其計算式表示為: eti=vTtanh(Whhi+Wsst+ba) (25) at=softmax(et) (26) 式中:v、Wh、Ws是權重矩陣;ba是偏置項;hi是編碼得到的隱藏狀態;st是解碼狀態。 得到注意力分布后對隱藏狀態序列加權和計算出上下文向量ct,計算式表示為: (27) 2.2.2混合指針網絡解碼生成標題 在解碼階段,使用一個單向LSTM網絡逐個生成單詞組成標題。解碼的第t個時間步驟上,生成的標題詞隱藏狀態st由前一時刻LSTM單元的隱藏狀態st-1,前一個生成步驟的標題詞yt-1和上下文向量ct得到。標題詞的st與上下文向量ct經過線性層得到詞匯分布Pvocab: st=f(yt-1,ct,st-1) (28) (29) 式中:Wv表示權重矩陣;bv表示偏置。 在使用BiLSTM編碼的序列到序列模型中,解碼層的初始狀態s0表示為: s0=tanh(Wese+be) (30) 式中:We是權重矩陣;be是偏置項;se表示兩個LSTM最后隱藏狀態的前向和后向的連接,如式(8)所示。 而使用句子級LSTM編碼的序列到序列模型將解碼的初始狀態設置為具有整個文本全局信息的句子級狀態d: s0=tanh(Wd′d+bd′) (31) 式中:Wd′是權重矩陣;bd′為偏置項。 詞匯分布Pvocab是固定詞匯表中所有單詞的概率分布,預測生成的標題詞y的最終概率為: P(y)=Pvocab(y) (32) 由于詞表的大小有限,僅使用傳統的解碼生成不能處理OOV詞的分布。因此混合使用指針機制,可以實現從原文中復制關鍵字[13],用以解決易出現的UNK(Unknown Words)問題。在指針機制中使用一個生成概率p控制解碼器生成單詞或者復制單詞,計算為: (33) 式中:Wc、Ws、Wy表示權重矩陣;bp表示偏置;σ是sigmoid函數。引入指針機制后,可以選擇從詞匯表分布Pvocab中生成一個單詞或者從輸入文本的注意力分布at中復制一個單詞,結合兩者的概率分布,預測單詞y的最終概率為: (34) 2.2.3訓練策略 (35) 整個文本序列的損失值為: (36) 實驗所用數據集是Byte Cup 2018國際機器學習競賽提供數據集中的訓練集,數據來自字節跳動旗下產品TopBuzz開放版權的文章,包含約130萬篇文本的信息。通過對訓練集所有的數據進行噪聲處理后將其劃分為訓練集、驗證集和測試集三個部分,數據分布如下:訓練集1 250 970篇、驗證集5 000篇、測試集5 000篇。經統計數據集中文本內容的平均長度為598.62,標題的平均長度為11.75。 ROUGE是文本自動摘要常用的評價指標,該指標比較的是自動生成的文本與人工生成的文本(即參考文本),通過計算二者之間重疊單元的數量用以評價摘要的質量。 本文使用計算unigram的ROUGE-1、bi-gram的ROUGE-2和最長公共子序列(Longest Common Subsequence,LCS)的ROUGE-L的F1值作為模型性能的評價指標。 對文本使用Stanford CoreNLP工具進行處理。在所有的實驗中,詞向量是隨機初始化得到,設置詞向量的維度為256,神經網絡隱藏單元數為256。使用超參數為β1=0.9,β2=0.999,ε=10-8的Adam算法進行優化,學習率設置為0.001,批量大小為20。在測試階段,設置beam search算法的beam size為5。 實驗結果使用Pyrouge工具包計算ROUGE-1、ROUGE-2、ROUGE-L的F1值。 本文利用不同的模型和文本表示方法,在測試數據集上測試,實驗結果如表1所示。其中:Lead模型使用輸入文本的第一句作為標題;Seq2seq[13]為基礎的序列到序列模型,編碼部分使用雙向LSTM(BiLSTM)對文本進行表示;Seq2seq+point[13]為混合指針網絡的序列到序列模型,編碼部分使用雙向LSTM(BiLSTM)對文本進行表示;RAS-LSTM+point[7]為混合指針網絡的序列到序列模型,編碼部分使用卷積神經網絡(CNN)對文本進行表示;ST-LSTM為混合指針網絡的序列到序列模型,編碼部分使用本文的句子級LSTM對文本進行表示。 表1 不同方法的ROUGE-F1值對比 % 可以看出:① 新聞類文本的第一個句子通常會涵蓋比較豐富的信息,所以Lead方法抽取第一句作為標題,從評價指標來看并不會很差,但是句子一般較長,作為文章標題并不恰當。② 使用神經網絡模型方法的實驗效果均比Lead方法好,因為序列到序列模型在編碼階段會充分考慮文本的語義信息。③ 在序列到序列模型中加入指針機制效果更好,因為指針機制可以實現從原文中復制單詞,解決了UNK問題。④ 與BiLSTM方法相比,使用句子級LSTM實驗效果好,表明使用句子級LSTM對文本編碼可以獲得更加豐富的語義信息。⑤ 使用卷積網絡編碼獲得的是句子的局部語義信息,而句子級LSTM可以獲得全局信息,故實驗效果更好。 另一方面,使用BiLSTM訓練一個批量需要2.1 s,而基于句子級LSTM的標題生成模型需要1.3 s,在整體的訓練步驟上要比使用BiLSTM模型快38%的時間,提升了模型的訓練速度。 基于句子級LSTM編碼的標題生成模型中循環時間步驟和上下文窗口的大小可以通過實驗設定。本文選取了1、2、3三個窗口大小在循環時間步1~11上進行實驗。圖3是針對不同循環步驟和不同窗口大小的實驗結果,評價指標選取ROUGE-L的F1值。 圖3 不同窗口大小和循環步驟的ROUGE-L F1值 可以看出,循環步驟從1增加到11,ROUGE值呈上升趨勢,說明了循環步驟在信息交換中的是有效的。通過比較不同窗口在有限循環步驟中的最高值,可以看出窗口取值為3時得到文本語義信息的效果更好。 基于序列到序列模型的標題生成任務,本文構建了一個句子級LSTM編碼的標題生成模型。使用句子級LSTM編碼每個單詞的局部信息及整個文本的全局信息,局部信息與全局信息之間進行信息交換,為輸入文本提供了豐富的上下文信息。不足之處是本文的詞向量是隨機初始化的,未來將對詞向量增加特征融合,豐富詞向量的含義。2.1 文本表示









2.2 標題生成


3 實 驗
3.1 數據集和評價指標
3.2 實驗設置
3.3 實驗結果對比

3.4 不同參數的實驗

4 結 語