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