易志偉, 趙亞慧, 崔榮一
( 延邊大學(xué) 工學(xué)院, 吉林 延吉 133002 )
文本摘要通常是指從一個(gè)文檔中生成一段包含原始文檔主要信息的文本.由于文本摘要的篇幅相比原始文檔大幅減少,因此可為讀者節(jié)省大量閱讀時(shí)間,同時(shí)也可起到信息壓縮的作用.1958年, Luhn首次提出了基于“簇”的自動(dòng)摘要方法[1].相比人工撰寫摘要,由于自動(dòng)摘要技術(shù)可以大幅提高撰寫摘要的效率,因此引起了學(xué)術(shù)界的廣泛關(guān)注.目前,生成自動(dòng)摘要的方法可分為抽取式摘要(extractive summarization)和生成式摘要(abstractive summarization).抽取式摘要的特點(diǎn)是摘要中的句子是原文中的句子,又叫做“句子摘錄”.該方法通常使用TextRank[2]和LexRank[3]算法在文本中進(jìn)行摘要句的抽取,但由于這兩種算法都是基于PageRank算法[4]對(duì)拓?fù)鋱D進(jìn)行迭代計(jì)算,所以抽取式摘要所抽取的句子往往含有大量冗余信息,并且句子之間連貫性不強(qiáng),可讀性較差.生成式摘要的特點(diǎn)是摘要中的句子是重新生成的句子,其使用的方法主要是基于序列到序列(sequence - to - sequence, Seq2Seq)模型的深度學(xué)習(xí)方法[5].由于該方法生成的摘要具有長(zhǎng)度較短、冗余性較低、句子的概括性較強(qiáng)等優(yōu)點(diǎn),因此生成式摘要更加受到了學(xué)者的青睞[6-8].但目前為止,基于Seq2Seq模型的生成式自動(dòng)摘要系統(tǒng)只能處理單一語(yǔ)種的文本,若要處理其他語(yǔ)種的文本,需要利用其他語(yǔ)種的語(yǔ)料重新訓(xùn)練新的模型.本文將中、英、朝3種語(yǔ)種的訓(xùn)練數(shù)據(jù)一起訓(xùn)練,得到一個(gè)可以同時(shí)處理中文、英文、朝文3種文本的多語(yǔ)種自動(dòng)摘要模型,并通過(guò)實(shí)驗(yàn)驗(yàn)證本文方法的有效性.
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)[9]的主要用途是處理、預(yù)測(cè)序列數(shù)據(jù)和挖掘數(shù)據(jù)中的時(shí)序信息,常用于語(yǔ)音識(shí)別、語(yǔ)言模型以及機(jī)器翻譯等領(lǐng)域.循環(huán)神經(jīng)網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu)如圖1所示.
圖1 循環(huán)神經(jīng)網(wǎng)絡(luò)按時(shí)間展開(kāi)后的結(jié)構(gòu)圖
在循環(huán)神經(jīng)網(wǎng)絡(luò)中,輸入為一個(gè)序列,用X={X0,X1,X2,…,Xt}表示.在每個(gè)時(shí)刻t, RNN的隱藏狀態(tài)ht由式(1)更新.
ht=f(ht -1,Xt),
(1)
其中f代表一個(gè)非線性激活函數(shù),可以是sigm oid函數(shù)或tan h函數(shù).RNN網(wǎng)絡(luò)可以學(xué)習(xí)從開(kāi)始到當(dāng)前時(shí)刻的信息,并對(duì)下一個(gè)時(shí)刻的輸出進(jìn)行預(yù)測(cè).例如,在文本預(yù)測(cè)的任務(wù)中,對(duì)于當(dāng)前時(shí)刻t, 輸出Ot的概率分布為P(Xt|Xt -1,Xt -2,…,X1).根據(jù)式(2),對(duì)詞袋中的每一個(gè)詞Xj依次計(jì)算P(Xj), 計(jì)算得到的概率即為詞袋中每個(gè)詞在下一個(gè)時(shí)刻出現(xiàn)的概率.
(2)
式(2)中,W為一個(gè)參數(shù)矩陣,Wj是矩陣的第j行,Ot是循環(huán)神經(jīng)網(wǎng)絡(luò)在t時(shí)刻的輸出,K是詞袋的大小,j∈[1,K].由于標(biāo)準(zhǔn)的循環(huán)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)遠(yuǎn)距離信息的能力較弱,因此很多學(xué)者對(duì)標(biāo)準(zhǔn)的循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行了改進(jìn).例如: S.Hochreiter等提出的長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(long short - term memory, LSTM)[10],K.Cho等提出的門控循環(huán)單元(gated recurrent unit, GRU)[11],Tao等提出的簡(jiǎn)單循環(huán)單元(simple recurrent unit, SRU)[12].由于長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)能夠記憶歷史信息,學(xué)習(xí)遠(yuǎn)距離信息的能力較強(qiáng),因此本文使用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò).
Seq2Seq模型由2個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)組成:一個(gè)負(fù)責(zé)對(duì)輸入序列進(jìn)行編碼,稱為編碼器(encoder);一個(gè)負(fù)責(zé)對(duì)目標(biāo)序列進(jìn)行解碼,稱為解碼器(decoder).Seq2Seq模型的基本流程為:首先使用一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)讀取輸入的句子,并將整個(gè)句子的信息壓縮到一個(gè)固定維度的編碼中;然后再使用另一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)讀取這個(gè)編碼,將其“解壓”為目標(biāo)語(yǔ)言的一個(gè)句子.Seq2Seq模型示意圖如圖2所示.
圖2 Seq2Seq模型示意圖
在圖2中,A、B、C是輸入序列,〈SOS〉、P、Q、R、S、〈EOS〉是目標(biāo)序列.Encoder將來(lái)自輸入序列的信息編碼成一個(gè)中間的語(yǔ)義向量h, Decoder接收語(yǔ)義向量h, 并將其解碼為輸出序列.Seq2Seq模型的目標(biāo)函數(shù)是最大化對(duì)數(shù)似然函數(shù)P(Y|X):
(3)
其中T表示輸出序列的時(shí)間序列大小,y1:t -1表示輸出序列的前t-1個(gè)時(shí)間點(diǎn)對(duì)應(yīng)的輸出,X為輸入序列.式(3)將自動(dòng)摘要問(wèn)題視為條件語(yǔ)言模型.建立該模型的目的是為在已知輸入文本的條件下,使生成整個(gè)目標(biāo)摘要句的概率最大.
傳統(tǒng)的基于Seq2Seq模型的自動(dòng)摘要系統(tǒng)只能處理單一語(yǔ)種的文本.在此以中文為例,描述其生成自動(dòng)摘要的步驟.
Step1 對(duì)中文所有訓(xùn)練語(yǔ)料進(jìn)行預(yù)處理,訓(xùn)練語(yǔ)料由文本和對(duì)應(yīng)的摘要成對(duì)組成(“文本-摘要”對(duì)).首先分別獲取訓(xùn)練語(yǔ)料的文本部分和摘要部分的詞表,并在2個(gè)詞表中都添加〈unk〉用以表示未登錄詞.在輸入端和輸出端得到2個(gè)詞表后,還需要在輸出端的摘要詞表中添加〈SOS〉和〈EOS〉,用以表示摘要的開(kāi)始和結(jié)束.
Step2 對(duì)所有輸入端的文本進(jìn)行分詞,并將文本的詞項(xiàng)序列按照每個(gè)詞項(xiàng)在詞表中的id轉(zhuǎn)換為數(shù)字序列,未登錄詞用詞表中的〈unk〉來(lái)替代.同時(shí),將輸出端所有摘要句的開(kāi)頭處加上〈SOS〉,在摘要句的末尾處加上〈EOS〉,并按照輸出端的詞表將摘要的詞項(xiàng)序列轉(zhuǎn)換為數(shù)字序列,未登錄詞用詞表中的〈unk〉表示.
圖3 傳統(tǒng)的多語(yǔ)種摘要模型
Step3 將所有的訓(xùn)練數(shù)據(jù)轉(zhuǎn)換為數(shù)字序列后,用Seq2Seq模型對(duì)其進(jìn)行訓(xùn)練.
若要使傳統(tǒng)的自動(dòng)摘要系統(tǒng)能夠處理多語(yǔ)種的文本,則需要額外訓(xùn)練對(duì)應(yīng)語(yǔ)種的模型,并將不同語(yǔ)種的模型結(jié)合起來(lái)使用.以中、英、朝3種語(yǔ)種為例,傳統(tǒng)的多語(yǔ)種自動(dòng)摘要系統(tǒng)的工作方式如圖3所示.由圖3可以看出,傳統(tǒng)的多語(yǔ)種自動(dòng)摘要系統(tǒng)需要先分別訓(xùn)練中文、英文和朝文的摘要模型,然后再將他們?nèi)诤系揭黄?輸入文本后,系統(tǒng)首先進(jìn)行語(yǔ)種識(shí)別,然后調(diào)用對(duì)應(yīng)語(yǔ)種的摘要模型來(lái)生成摘要.
本文提出的多語(yǔ)種自動(dòng)摘要系統(tǒng)的構(gòu)建方式如下:
Step1 訓(xùn)練中文、英文、朝文3個(gè)語(yǔ)種語(yǔ)料的文本部分和摘要部分.首先將3個(gè)語(yǔ)種的文本部分和摘要部分分別放在一起,然后分別獲取文本部分和摘要部分的詞表,并在這2個(gè)詞表中都添加〈unk〉用以表示未登錄詞.在輸出端得到摘要部分的詞表后,在該詞表中添加〈SOS〉和〈EOS〉,用以表示摘要的開(kāi)始和結(jié)束.
圖4 本文提出的多語(yǔ)種自動(dòng)摘要模型
Step2 對(duì)所有輸入端的文本進(jìn)行分詞,并按照每個(gè)詞項(xiàng)在詞表中的id將文本的詞項(xiàng)序列轉(zhuǎn)換為數(shù)字序列,未登錄詞用詞表中的〈unk〉來(lái)替代.同時(shí),將所有輸出端的摘要句的開(kāi)頭加上〈SOS〉,在摘要句的最后加上〈EOS〉,按照輸出端的詞表將摘要的詞項(xiàng)序列轉(zhuǎn)換為數(shù)字序列,未登錄詞用詞表中的〈unk〉表示.這樣,輸入端和輸出端的詞表中都含有3種語(yǔ)言的單詞.訓(xùn)練數(shù)據(jù)由3部分組成:中文的“文本-摘要”對(duì)、英文的“文本-摘要”對(duì)和朝文的“文本-摘要”對(duì).
Step3 將所有的訓(xùn)練數(shù)據(jù)轉(zhuǎn)換為數(shù)字序列后,用Seq2Seq模型對(duì)其進(jìn)行訓(xùn)練.
上述的多語(yǔ)種自動(dòng)摘要模型如圖4所示.
本實(shí)驗(yàn)采用的數(shù)據(jù)均來(lái)自科技文獻(xiàn)(包含生物、海洋和航空3個(gè)領(lǐng)域)的摘要和標(biāo)題,其中將摘要作為模型的輸入,將標(biāo)題作為模型的輸出.實(shí)驗(yàn)的訓(xùn)練語(yǔ)料和測(cè)試語(yǔ)料的數(shù)量如表1所示.
表1 訓(xùn)練和測(cè)試語(yǔ)料的數(shù)量
評(píng)價(jià)指標(biāo)采用ROUGE(recall-oriented understudy for gisting evaluation)方法,該方法目前被廣泛應(yīng)用于摘要的自動(dòng)評(píng)測(cè)任務(wù)中[13].ROUGE評(píng)價(jià)方法中包含5種評(píng)價(jià)指標(biāo),分別為ROUGE -N、ROUGE -L、ROUGE -W、ROUGE -S、ROUGE -SU,其中每一種指標(biāo)都要分別計(jì)算P(precision,準(zhǔn)確率)、R(recall,召回率)和F(F-measure,F(xiàn)值).目前,通常使用ROUGE -1、ROUGE -2和ROUGE -L指標(biāo)中的F值作為自動(dòng)摘要的評(píng)價(jià)指標(biāo).ROUGE -1和ROUGE -2均屬于ROUGE -N指標(biāo),其計(jì)算公式為:
(4)
(5)
(6)
其中:n-gram表示n元詞; {ref-summaries}表示參考摘要,即人工撰寫的摘要; {sys-summaries}表示計(jì)算機(jī)生成的摘要;Count(n-gram)表示句子中的n-gram數(shù)量;Countmatch(n-gram)表示計(jì)算機(jī)生成的摘要和參考摘要中同時(shí)出現(xiàn)n-gram的數(shù)量;N表示n-gram的長(zhǎng)度;ROUGE-N(F)為ROUGE-N(P)和ROUGE-N(R)的調(diào)和平均數(shù).ROUGE -L指標(biāo)的計(jì)算公式如下:
(7)
(8)
(9)
其中:X表示參考摘要;Y表示計(jì)算機(jī)生成的摘要;len(X)表示X的長(zhǎng)度(詞項(xiàng)個(gè)數(shù));len(Y)表示Y的長(zhǎng)度;LCS(X,Y)表示X和Y的最大公共子序列的長(zhǎng)度;ROUGE-L(F)為ROUGE-L(P)和ROUGE-L(R)的調(diào)和平均數(shù).
實(shí)驗(yàn)的訓(xùn)練參數(shù)設(shè)置如下: Seq2Seq模型中的編碼器和解碼器都采用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)結(jié)構(gòu),隱層神經(jīng)元個(gè)數(shù)設(shè)為100,迭代次數(shù)設(shè)為20次.訓(xùn)練單語(yǔ)種摘要模型時(shí),先對(duì)輸入端的文本進(jìn)行預(yù)處理,然后按詞頻從大到小的順序保留前5 000個(gè)詞作為輸入端詞表;輸出端生成詞表的方式和輸入端一樣,但由于輸出端的摘要比輸入端的文本長(zhǎng)度短,因此保留前2 000個(gè)詞作為輸出端詞表.訓(xùn)練中、英、朝3種語(yǔ)種摘要模型時(shí),輸入端將3種語(yǔ)料的輸入端詞表均放在一起并去重,由此得到一個(gè)新的詞表;輸出端將3種語(yǔ)料的輸出端詞表均放在一起并去重后,由此得到一個(gè)新的詞表.
實(shí)驗(yàn)時(shí)首先分開(kāi)訓(xùn)練中、英、朝3個(gè)語(yǔ)種的語(yǔ)料,然后用各自的模型分別運(yùn)行它們的測(cè)試集,并記錄ROUGE評(píng)分.再將中、英、朝3個(gè)語(yǔ)種的語(yǔ)料放在一起訓(xùn)練,然后運(yùn)用該模型分別運(yùn)行中、英、朝3種語(yǔ)料的測(cè)試集,并記錄ROUGE評(píng)分.實(shí)驗(yàn)結(jié)果如表2所示.
表2 不同訓(xùn)練方式下的實(shí)驗(yàn)結(jié)果
從表2可以看出,本文方法在中文和英文測(cè)試集上的3個(gè)ROUGE指標(biāo)僅略低于單獨(dú)訓(xùn)練模型所得的3個(gè)指標(biāo),可忽略不計(jì);而在朝文測(cè)試集上,兩種方法的3個(gè)ROUGE指標(biāo)基本相同.這表明,本文的訓(xùn)練方法有效.
表3為同一文本在兩種模型下所得的摘要樣例.由表3可以看出,在中文樣例和英文樣例中,使用本文方法生成的摘要比使用傳統(tǒng)方法生成的摘要更接近參考摘要的語(yǔ)義;而在朝文樣例中,使用傳統(tǒng)方法的效果相對(duì)更好.綜合來(lái)看,本文方法生成摘要的效果與傳統(tǒng)方法接近,因此表明本文方法有效.
實(shí)驗(yàn)結(jié)果表明,將中、英、朝3個(gè)語(yǔ)種的語(yǔ)料放在一個(gè)模型中訓(xùn)練,其效果與各語(yǔ)言單獨(dú)訓(xùn)練的效果接近,說(shuō)明本文提出的將3種語(yǔ)種共同訓(xùn)練的方法是有效可行的.由于本文方法比傳統(tǒng)方法簡(jiǎn)潔、高效,因此具有更好的潛在應(yīng)用價(jià)值.本文在實(shí)驗(yàn)中,使用的訓(xùn)練語(yǔ)料規(guī)模較小,模型的泛化能力較弱,因此在今后的研究中我們將擴(kuò)大訓(xùn)練數(shù)據(jù)規(guī)模,提高模型的泛化能力,以此進(jìn)一步驗(yàn)證和完善本文方法.
表3 同一文本在兩種模型下所得的摘要樣例