鞏軼凡,劉紅巖,何 軍+,岳永姣,杜小勇
1.數(shù)據(jù)工程與知識工程教育部重點實驗室(中國人民大學(xué) 信息學(xué)院),北京 100872
2.清華大學(xué) 經(jīng)濟管理學(xué)院,北京 100084
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,文本信息出現(xiàn)了爆炸式增長,各種網(wǎng)絡(luò)媒體如微信公眾號、新聞網(wǎng)站、微博等每天都會產(chǎn)生海量的信息。對于這些海量的信息,人們沒有足夠的精力去閱讀每一篇文本,信息過載成為一個嚴(yán)重的問題。因此,從文本信息中提取出關(guān)鍵的內(nèi)容成為一個迫切的需求,而文本摘要技術(shù)則可以很好地解決這個問題。
目前的文本摘要主要是利用帶有注意力機制的序列到序列模型(sequence to sequence,Seq2Seq[1])對文本生成摘要,但是注意力機制在每個時刻的計算是獨立的,沒有考慮到之前時刻生成的文本信息,導(dǎo)致模型在生成文本時忽略了之前生成的內(nèi)容,導(dǎo)致重復(fù)生成部分信息,最終生成的文本只包含了原始文本的部分信息。本文在注意力機制的基礎(chǔ)上,提出一種新的覆蓋率機制,記錄歷史的注意力權(quán)重信息,借此改變當(dāng)前時刻注意力的權(quán)重分布,使模型盡可能地關(guān)注尚未利用到的信息,生成的摘要文本包含的信息更準(zhǔn)確。
本文的主要貢獻(xiàn)如下:
(1)在文本摘要的經(jīng)典模型中引入一種新的覆蓋率機制,使用覆蓋向量記錄歷史的注意力權(quán)重分布信息,解決注意力機制不考慮歷史時刻生成信息的問題。
(2)提出了兩種不同的衰減方法,降低輸入文本中部分位置的注意力權(quán)重,使模型盡可能地關(guān)注尚未利用到的信息。
(3)所提方法在新浪微博數(shù)據(jù)集進(jìn)行了實驗,實驗結(jié)果表明,基于本文提出的覆蓋率機制的文本摘要模型性能評價得分高于普通的Seq2Seq模型。
本文后續(xù)內(nèi)容安排如下:第2章是相關(guān)工作部分,介紹了抽取式摘要和生成式摘要的相關(guān)工作。第3章是文本摘要模型部分,介紹本文所用的Seq2Seq模型和注意力機制。第4章介紹覆蓋率機制,介紹了注意力機制存在的問題和本文引入的覆蓋率機制。第5章是實驗部分,介紹了本文的實驗設(shè)計,并對實驗結(jié)果進(jìn)行了分析。第6章是總結(jié)和對未來工作的展望。
文本摘要任務(wù)按照所使用的方法,可分為抽取式(extractive)摘要和生成式(abstractive)摘要[2-4]。抽取式摘要是從原文中抽取出關(guān)鍵的詞或句子再組合起來;生成式摘要則要求對文本進(jìn)行分析,理解文本所描述的內(nèi)容,然后生成新的摘要句子。
抽取式摘要主要是利用機器學(xué)習(xí)的方法為原文中的每個句子做出評價,賦予一定的權(quán)重,從而選出比較重要的句子,把這些句子組合起來,由于句子之間可能存在信息冗余,因此在組合句子的同時還要消除這些冗余信息[5]。相比于生成式摘要,抽取式摘要的方法通常都比較簡單,缺點是比較依賴于特征工程,句子組合起來可能出現(xiàn)不連貫的問題。
隨著深度學(xué)習(xí)技術(shù)的發(fā)展和計算能力的提升,越來越多的研究人員開始將深度學(xué)習(xí)技術(shù)用在文本摘要任務(wù)的研究上。通過帶有注意力機制的Seq2Seq模型實現(xiàn)對文本生成摘要。Seq2Seq模型由一個Encoder和一個Decoder組成,Encoder把輸入序列編碼成語義向量c,Decoder從語義向量中c解碼出對應(yīng)的序列。將原始文本輸入到Encoder中并編碼成語義向量c,Decoder從語義向量c中解碼出對應(yīng)的摘要文本。
在Seq2Seq模型中,Encoder和Decoder一般由循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)構(gòu)成,語義向量c一般為Encoder最后一個時刻的隱藏層狀態(tài)向量。由于語義向量c的維度是固定的,當(dāng)輸入文本過長時會出現(xiàn)信息損失的情況,文獻(xiàn)[6]在Seq2Seq模型的基礎(chǔ)上提出了注意力機制,通過在不同的時刻輸入不同的語義向量來解決這個問題,在機器翻譯任務(wù)上取得了很好的效果。文獻(xiàn)[7]提出了全局注意力(global attention)和局部注意力(local attention)機制,在全局注意力機制中給出了三種計算注意力權(quán)重的方法,對于過長的輸入文本提出局部注意力機制,大大減少了模型的計算量。
文獻(xiàn)[8]基于新浪微博構(gòu)建了一個大規(guī)模的中文短文本摘要數(shù)據(jù)集,提出基于漢字的摘要模型和基于詞的摘要模型,搭配兩種網(wǎng)絡(luò)架構(gòu)實現(xiàn)自動文本摘要,結(jié)果表明基于漢字的模型要優(yōu)于基于詞的模型。文獻(xiàn)[9]在文本摘要任務(wù)上提出了拷貝機制,拷貝輸入序列的片段到輸出序列中,解決了文本摘要任務(wù)中OOV(out of vocabulary)的問題。文獻(xiàn)[10]在機器翻譯模型中引入了覆蓋率機制,記錄了翻譯過程中歷史注意力權(quán)重信息,使模型更多地關(guān)注沒有被翻譯到的詞,解決了機器翻譯任務(wù)上“過度翻譯”和“漏翻譯”的問題。文獻(xiàn)[11]在Seq2Seq模型的基礎(chǔ)上提出了推敲(deliberation)網(wǎng)絡(luò),包括兩個解碼器,第一個解碼器生成原始的輸出,第二個解碼器根據(jù)輸入文本和第一個解碼器生成的原始輸出,推敲打磨生成更好的輸出文本。文獻(xiàn)[12]在文本摘要任務(wù)上引入了LVT(large vocabulary trick)技術(shù)解決Decoder生成文本時詞表過大的問題,在模型訓(xùn)練時加入了一些其他的語言學(xué)特征來提升模型的性能,通過pointer[13]指針選擇輸入文本中的詞作為輸出解決OOV的問題。
由于注意力機制在不同時刻的計算是獨立的,沒有考慮歷史的注意力權(quán)重分布信息,因此在文本摘要任務(wù)上,Seq2Seq模型也會出現(xiàn)文獻(xiàn)[10]提到的問題,會重復(fù)生成部分信息,漏掉部分信息,導(dǎo)致生成的摘要只包含了輸入文本的部分信息。本文借鑒機器翻譯任務(wù)上的覆蓋率機制,提出一種新的覆蓋率機制,通過衰減方法降低輸入文本中部分位置的注意力權(quán)重,使模型盡可能地關(guān)注沒有利用到的信息。
Seq2Seq文本摘要模型選擇使用長短時記憶網(wǎng)絡(luò)(long short term memory network,LSTM)作為Encoder和Decoder,其結(jié)構(gòu)示意圖如圖1所示。
Fig.1 Text summarization model圖1 文本摘要模型示意圖
其中X={x1,x2,…,xn}表示輸入文本,xj代表輸入文本中的第j個字符,如一個詞或一個漢字,n為輸入文本的長度,Y={y1,y2,…,ym}表示對應(yīng)的輸出文本,yi代表輸出文本中的第i個字符,如一個詞或一個漢字,m為輸出文本的長度?!埃糱os>”和“<eos>”分別代表Decoder開始解碼的字符和停止解碼的字符。Encoder對應(yīng)的各個隱藏層狀態(tài)向量的集合為H={h1,h2,…,hn},Decoder對應(yīng)的各個隱藏層狀態(tài)向量的集合為S={s1,s2,…,sm}:
f表示LSTM網(wǎng)絡(luò),本文使用文獻(xiàn)[7]提出的注意力機制的計算方式,在不同時刻生成不同的語義向量ci,避免由固定的語義向量帶來的信息損失的問題。Decoder部分在時刻i對應(yīng)的語義向量ci為:
其中,αij為歸一化后不同位置Encoder隱藏層狀態(tài)向量的注意力權(quán)重:
eij用來衡量Decoder隱藏層狀態(tài)向量和不同位置Encoder隱藏層狀態(tài)向量的相關(guān)性:
We為參數(shù)矩陣,將語義向量ci和Decoder的隱藏層狀態(tài)向量si拼接起來經(jīng)過線性變換和激活函數(shù)后形成:
Wcs為參數(shù)矩陣。
模型生成字符的過程是一個多分類的問題,類別的個數(shù)為詞表中所有字符的個數(shù),從詞表中選擇概率最大的字符作為時刻i的輸出。模型生成詞表中字符的概率分布yvocab的計算方式為:
Ws為參數(shù)矩陣,選擇yvocab中概率最大的字符yi-pre作為時刻i的輸出。采用交叉熵?fù)p失作為模型的損失函數(shù)進(jìn)行學(xué)習(xí):
模型通過梯度下降等方法對參數(shù)進(jìn)行更新求解。模型在訓(xùn)練階段,已經(jīng)知道真正的輸出序列Y={y1,y2,…,ym},因此Decoder在時刻i的輸入為上一時刻真正的字符yi-1(teacher forcing)。模型在預(yù)測階段,不知道真正的輸出序列,因此Decoder在時刻i的輸入為上一時刻模型的輸出yi-pre。
注意力機制把Encoder所有位置的隱藏層狀態(tài)向量加權(quán)和作為時刻i的語義向量ci,注意力權(quán)重αij越大,該位置j的隱藏層狀態(tài)向量在語義向量ci中所占的比重就越大,輸入xj為模型生成字符yi-pre貢獻(xiàn)的信息就越大。也就是說,模型在時刻i的注意力集中在該位置。
在注意力機制的計算中,不同時刻的注意力機制的計算是獨立的,注意力權(quán)重αij只與當(dāng)前時刻Decoder隱藏層狀態(tài)向量si,Encoder隱藏層狀態(tài)向量hj有關(guān),不會考慮歷史的注意力權(quán)重分布情況。因此模型在不同時刻可能會將注意力重復(fù)集中在某一位置,這就導(dǎo)致在生成的摘要文本中,出現(xiàn)重復(fù)生成部分信息和漏掉部分信息的情況。
表1是帶有注意力機制的Seq2Seq模型生成的摘要文本包含重復(fù)信息的樣例,可以看出,在生成的摘要文本中,重復(fù)生成了“預(yù)期”和“國際金價”的信息。分析模型在不同時刻注意力集中的位置可以發(fā)現(xiàn),模型在生成第一個“國際金價”信息時,注意力集中在原文第42~45個字符“國際金價”的位置;在生成第二個“國際金價”信息時,注意力同樣集中在原文第42~45個字符“國際金價”的位置。也就是說,模型在這兩個時刻的注意力集中在相同的位置。
一個好的文本摘要模型,應(yīng)該綜合考慮輸入文本中所有的信息,生成的摘要是對全部文本的一個總結(jié)。如果摘要模型把大部分注意力集中在部分位置,則生成的摘要不能包含所有的信息,還會出現(xiàn)信息重復(fù)的現(xiàn)象。因此在決定模型下一步注意力位置的時候,需要引入歷史生成的信息,從而避免再一次將模型的注意力集中到該位置。
因此,本文引入覆蓋率機制,通過coverage向量coveri={coveri1,coveri2,…,coverin}記錄i時刻之前的注意力權(quán)重信息,該向量維度與注意力向量維度相同,其中每個元素稱為覆蓋度,計算方法為:
Table 1 Summary containing duplicate information表1 包含重復(fù)信息的生成摘要
αi-1,j為i-1時刻位置j的注意力權(quán)重(計算見式(4));coverij記錄了歷史時刻位置j的注意力權(quán)重信息,表示i時刻之前模型位置j信息的使用情況。在初始時刻,cover0為零向量。
在模型生成摘要文本的過程中,注意力權(quán)重越大的地方貢獻(xiàn)的信息量越大,如果輸入文本的某個位置在當(dāng)前時刻字符的生成時注意力權(quán)重很大,則在接下來的文本生成中注意力權(quán)重應(yīng)該相對較小?;谝陨纤枷?,模型在時刻i計算注意力權(quán)重的時候,會對i時刻之前已經(jīng)利用過信息的位置進(jìn)行信息衰減,使模型更多地關(guān)注輸入文本中沒有用過的信息。
具體的,Decoder在生成時刻i的輸出時,需要對Encoder所有位置的隱藏層狀態(tài)向量H={h1,h2,…,hn}進(jìn)行加權(quán)處理:
hj′為加權(quán)后新的Encoder隱藏層狀態(tài)向量;β為衰減因子,取值范圍為[1,10]。這步處理的目的在于,如果Encoder位置j的注意力權(quán)重在時刻i之前比較大,coverij的值就會比較大,通過exp(-βcoverij)乘上一個比較小的權(quán)重,這樣對其隱藏層狀態(tài)向量的作用就是衰減。衰減的程度與β有關(guān),衰減因子β越大,對hj的衰減就越大。
若在時刻i,第j個輸入文本對應(yīng)的覆蓋度的值coverij為0.3,當(dāng)β=1時,該位置對應(yīng)的hj′為原來的0.74;當(dāng)β=5時,該位置對應(yīng)的hj′為原來的0.22;當(dāng)β=10時,該位置對應(yīng)的hj′為原來的0.05。
除了對Encoder所有位置的隱藏層狀態(tài)向量H={h1,h2,…,hn}乘一個固定權(quán)重的方法外,本文還提出了另一種動態(tài)調(diào)整權(quán)重的方式:
其中,Wc為參數(shù)向量,由模型根據(jù)訓(xùn)練數(shù)據(jù)自動學(xué)習(xí)得到,對Encoder隱藏層狀態(tài)向量的衰減方式由Wc決定。
圖2是帶有覆蓋率機制的文本摘要模型示意圖,模型采用雙向LSTM作為Encoder,在任何位置都可以同時利用上下文的信息。在計算注意力權(quán)重之前,通過coveri對Encoder隱藏層狀態(tài)向量進(jìn)行衰減,然后在此基礎(chǔ)上計算eij′:
γj為Encoder隱藏層狀態(tài)向量的衰減權(quán)重,把eij′帶入式(4)中的eij,即可得到調(diào)整后的注意力權(quán)重αij,從而使coverij較大的位置對應(yīng)的注意力權(quán)重降低,降低該位置的信息在語義向量ci中的比重,使模型更多地關(guān)注輸入文本中沒有用過的信息。
Fig.2 Text summarization model based on coverage圖2 帶覆蓋率機制的文本摘要模型示意圖
本文提出的帶有覆蓋率機制的文本摘要模型學(xué)習(xí)算法如算法1所示。其中,D={X1,X2,…,Xp}和S={Y1,Y2,…,Yp}分別代表訓(xùn)練數(shù)據(jù)的輸入文本集合和摘要文本集合;p為訓(xùn)練數(shù)據(jù)的條數(shù);H′為經(jīng)過coverage向量衰減后的Encoder隱藏層狀態(tài)向量集合;αi={αi1,αi2,…,αin}為時刻i所有位置Encoder隱藏層狀態(tài)向量的注意力權(quán)重的集合。
算法1模型學(xué)習(xí)算法
本文實驗所用的數(shù)據(jù)集來自于文獻(xiàn)[8]所提供的LCSTS(large-scale Chinese short text summarization dataset)數(shù)據(jù)集,數(shù)據(jù)集為微博文本和對應(yīng)的摘要數(shù)據(jù),分為PART I、PART II和 PART III三部分,其中PART I部分為主要的數(shù)據(jù)集,PART II部分的數(shù)據(jù)經(jīng)過一人的人工評分,PART III部分的數(shù)據(jù)經(jīng)過了三人的人工評分。人工評分的范圍為1~5,1表示非常不相關(guān),5表示非常相關(guān)。數(shù)據(jù)分布如表2所示。
Table 2 LCSTS dataset表2 LCSTS數(shù)據(jù)集
在本文實驗中,選擇PART I中的部分?jǐn)?shù)據(jù)共60萬條微博數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),選擇PART III中人工評分大于3分的數(shù)據(jù)共725條微博數(shù)據(jù)作為測試數(shù)據(jù)。
對于LCSTS數(shù)據(jù)集,本文采用基于中文漢字字符的模型,將訓(xùn)練數(shù)據(jù)按照漢字級別輸入到模型中,采用基于漢字的模型原因為:中文漢字的數(shù)量遠(yuǎn)小于中文詞語的數(shù)量,可以減少模型的計算量,同時減少了生成文本中OOV的情況;而且基于中文詞語的模型的準(zhǔn)確率還依賴于分詞工具的準(zhǔn)確率,不恰當(dāng)?shù)姆衷~方式還會引入語義上的歧義。
同時,在詞表中加入四個新的字符:“<bos>”、“<eos>”、“<unk>”、“<pad>”?!埃糱os>”表示Decoder從語義向量c中解碼信息的開始字符,“<eos>”表示解碼的終止字符,“<unk>”表示未出現(xiàn)在詞表中的字符,“<pad>”表示將文本填充到統(tǒng)一長度的字符。
對訓(xùn)練數(shù)據(jù)中Decoder端對應(yīng)的摘要文本前加“<bos>”字符作為Decoder的啟動標(biāo)志,在摘要文本末尾加“<eos>”作為解碼結(jié)束的標(biāo)志,對于不在詞表中的字符,用“<unk>”字符代替。模型訓(xùn)練時采用批梯度下降法(mini-batches learning)的方式學(xué)習(xí)參數(shù),將一個batch內(nèi)的文本通過“<pad>”填充到統(tǒng)一長度便于處理。隨機初始化中文字符的embedding表示,隨著模型的訓(xùn)練對embedding向量進(jìn)行學(xué)習(xí)。
在本次實驗中,覆蓋率機制的衰減因子β分別選擇1、5、10。中文字符詞典的大小選擇3 500,中文字符的embedding size為400,Encoder和Decoder共享中文字符詞典和embedding矩陣,LSTM隱藏層向量維度為500,batch的大小為64,梯度裁減的閾值為2,Decoder生成文本的最大長度為30,模型一共訓(xùn)練30個epochs,使用梯度下降的方法對模型參數(shù)進(jìn)行學(xué)習(xí)。選擇Pytorch深度學(xué)習(xí)框架搭建文本摘要模型[14],使用NVIDIATesla M60 GPU加速模型的訓(xùn)練。
文獻(xiàn)[15]提出的ROUGE(recall-oriented understudy for gisting evaluation),是最常用的自動文本摘要的評估方法,本文采用這一評價方法,它采用召回率作為指標(biāo),通過將自動生成的摘要與一組參考摘要(通常是人工生成的)進(jìn)行比較計算,得出相應(yīng)的分值,以衡量自動生成的摘要與參考摘要之間的“相似度”,主要包括ROUGH-N(N=1,2,…)、ROUGH-L等。
表3是各種文本摘要模型的實驗結(jié)果,其中RNN(w)和RNN(c)為文獻(xiàn)[8]在LCSTS數(shù)據(jù)集上基于中文詞語模型和中文漢字模型的ROUGE評價得分,Cover-Tu是文獻(xiàn)[10]在機器翻譯任務(wù)上提出的覆蓋率機制的方法,本文采用其中的Linguistic Coverage Model在LCSTS數(shù)據(jù)集上進(jìn)行了實驗。Cover-w為式(11)對應(yīng)的模型,Cover-1、Cover-5、Cover-10為式(10)對應(yīng)的模型,其中衰減因子β分別為1、5、10。
Table 3 Model experiment results表3 模型實驗結(jié)果
由實驗結(jié)果可知,帶有覆蓋率機制的Seq2Seq模型的ROUGE評價得分高于普通的Seq2Seq模型,當(dāng)β為5時,ROUGE評價得分最高,高于Cover-Tu的覆蓋率機制的方法。與Cover-Tu的覆蓋率機制相比,本文方法直接對coverage值較大的位置對應(yīng)的Encoder的隱藏層狀態(tài)向量進(jìn)行衰減,降低注意力權(quán)重,減小在語義向量ci中的比重,可以更直接地使模型關(guān)注輸入文本中沒有被利用的信息。
對于表1中的微博文本,本文提出的帶有覆蓋率機制的文本摘要模型最終生成的摘要文本為“高盛:黃金價格預(yù)期或跌至1 200美元”,與不帶覆蓋率機制的模型相比,避免了重復(fù)生成“國際金價”的信息。
表4是不同模型的實驗結(jié)果樣例。標(biāo)準(zhǔn)摘要表示LCSTS數(shù)據(jù)集中對應(yīng)的摘要,Baseline表示不帶覆蓋率機制的文本摘要模型生成的摘要,Coverage表示本文提出的帶有覆蓋率機制的文本摘要模型??梢钥闯?,文本摘要模型引入覆蓋率機制以后,生成文本的時候同時考慮了歷史的信息,從而避免模型重復(fù)生成已生成的信息,最終生成的摘要文本包含了輸入文本中更多的信息。如Baseline生成的文本為“央視曝光3.15被央視曝光”,在帶有覆蓋率機制的模型中,根據(jù)歷史生成的“央視曝光”的信息,模型調(diào)整注意力集中的位置,接下來生成了“互聯(lián)網(wǎng)公司”相關(guān)的信息。Baseline生成的文本為“山寨盒子的山寨公司”,在帶有覆蓋率機制的模型中,根據(jù)歷史生成的“山寨盒子”的信息,模型接下來生成了“隱秘生態(tài)圈”相關(guān)的信息。Baseline生成的文本為“廣州飛行員飛行訓(xùn)練時飛行員跳傘成功”,覆蓋率機制引入了歷史的信息后生成的文本為“廣州空軍飛機突發(fā)機械故障飛行員跳傘成功”。
Table 4 Model results sample表4 模型結(jié)果樣例
帶有注意力機制的Seq2Seq模型在計算時不考慮歷史生成的文本信息,可能會將注意力重復(fù)集中在輸入文本的某些位置,導(dǎo)致生成的摘要文本出現(xiàn)重復(fù),不能很好地概括輸入文本的所有信息。針對這一問題,本文引入了覆蓋率機制,記錄生成文本時歷史時刻的注意力權(quán)重分布,并對輸入信息進(jìn)行衰減,降低部分位置的注意力權(quán)重,使模型更多地考慮輸入文本中沒有用到的信息。本文在新浪微博數(shù)據(jù)集上進(jìn)行了實驗,實驗結(jié)果表明,帶有覆蓋率機制的文本摘要模型的ROUGE評價得分高于普通的Seq2Seq模型。
帶有覆蓋率機制的文本摘要模型可以在一定程度上解決重復(fù)生成部分信息的問題,但仍然不能完全避免這一問題,生成的摘要文本中仍然會出現(xiàn)生成重復(fù)信息的情況。與機器翻譯任務(wù)不同的是,文本摘要任務(wù)的輸出文本是對輸入文本的概括總結(jié),長度遠(yuǎn)小于輸入文本,在輸入文本中本來就包含很多的重復(fù)信息,而機器翻譯任務(wù)的輸入文本和輸出文本存在一一對應(yīng)的關(guān)系,未來可以從這個角度出發(fā),對文本摘要任務(wù)進(jìn)行進(jìn)一步的研究。