焦利穎,郭 巖,劉 悅,俞曉明,程學旗
(1. 中國科學院大學,北京 100049;2. 中國科學院 計算技術(shù)研究所 中國科學院網(wǎng)絡(luò)數(shù)據(jù)科學與技術(shù)重點實驗室,北京 100190)
正文單句摘要是在摘要的長度上對生成的句子做了限制,即只有一個句子,標題往往在新聞中指的是對其內(nèi)容加以概括或評價的簡短文字,在長度上也和一句話相當。本文把新聞的標題作為單句摘要生成的標簽,把單句摘要看作新聞的標題,因此本文對標題和單句摘要兩者概念不作區(qū)分,以下內(nèi)容中均使用“標題”這一概念,本文研究讓程序為單文檔自動生成標題。
標題生成有巨大的應用價值和廣泛的應用前景,例如電子郵件的摘要自動生成、移動設(shè)備中的文本壓縮等,尤其適用于解決標題黨新聞問題。如圖1所示,標題黨新聞指網(wǎng)絡(luò)中故意用較為夸張、聳動的文章標題以吸引網(wǎng)友點擊觀看文章或帖子的人,特別是與用實際上與內(nèi)容完全無關(guān)或聯(lián)系不大的文字當標題者[1]。如果能夠為這樣的標題黨新聞自動生成言簡意賅的新標題,用于替代原有標題,則可以達到為用戶提示實質(zhì)性信息的目的。
圖1 標題黨新聞統(tǒng)計示意圖
標題生成方法分為抽取式和生成式兩種。抽取式方法把原文檔的詞語或者句子作為標題生成的候選詞項,使用句子壓縮、拼接等方法合成標題。由于標題具有高度概括的特點,抽取式方法無法得到信息量較高的標題。
相比抽取式方法,生成式方法更適合標題生成。目前主流的生成式方法主要流程包括: 截取新聞文章的首段作為輸入,使用新聞標題作為標簽,構(gòu)造一個大型的標題訓練數(shù)據(jù)集;使用序列建模方法結(jié)合注意力機制,訓練得到標題生成模型。使用序列建模進行標題生成建模,省去了人工構(gòu)建特征的繁瑣工作,完全基于訓練數(shù)據(jù)學習詞語的嵌入表達和權(quán)重參數(shù)。但是序列模型的建模特點對輸入文本的長度有一定的限制,因此已有方法大多使用新聞的首段內(nèi)容作為輸入來訓練摘要生成模型,但這樣不能充分利用新聞信息。例如,CNN和NY Times等權(quán)威新聞網(wǎng)站,刊登的新聞報道篇幅較長,句子和詞語數(shù)量較大,如果只使用首段內(nèi)容作為訓練模型的有效輸入文本,忽略了新聞文章本身大部分的文本信息,會對生成的標題所涵蓋的信息量造成一定程度的損失。但如果使用整篇文章作為訓練模型的輸入,則會大大增加模型的復雜度和訓練難度,甚至會導致模型性能的下降。為了更多地使用新聞信息,本文提出一種基于關(guān)鍵信息指導的新聞標題生成算法。
算法中的關(guān)鍵信息不僅包括主流方法中通常使用的新聞首段句子,而且包括新聞后續(xù)內(nèi)容中有實質(zhì)信息的句子,以及句子中的重點詞語。首先獲取關(guān)鍵信息,即從句子層級和詞語層級獲取新聞的關(guān)鍵信息;然后使用獲取到的關(guān)鍵信息指導標題生成,即使用廣泛應用于自然語言生成的基于注意力機制的編碼解碼模型,在解碼端計算注意力分布時把上一步獲取到的關(guān)鍵信息考慮在內(nèi),從而使模型既能夠考慮原文檔的單詞,又能考慮人工提取的關(guān)鍵信息。最后通過實驗驗證了算法的有效性。實驗結(jié)果表明,在一定長度內(nèi)盡可能多地使用新聞內(nèi)容對新聞標題生成的效果有顯著提升。
Radev等人首次對摘要做出定義[2]: 摘要是由一個或多個文本生成的另一個文本,能夠傳達原始文本重要信息,長度不超過且通常遠小于原文本的一半。文檔摘要生成是自然語言生成任務中的一個子領(lǐng)域。文檔摘要按照輸入的文檔數(shù)目可以分為單文檔摘要和多文檔摘要;按照生成摘要的長度,單文檔摘要又可以分為標題生成和多句摘要生成。本文重點研究單文檔摘要的標題自動生成。標題生成屬于文本摘要生成任務,生成的摘要是一個句子。
標題生成的方法有抽取式和生成式兩種。早期的做法集中在抽取式方法,從統(tǒng)計概率角度進行關(guān)鍵短語、句子或者段落的抽取。新聞標題生成可以從原文檔抽取第一句作為標題,該方法一般作為基準方法與其他方法進行比較。抽取式方法存在的問題是無法生成比抽取出的最小跨度文本更短的連貫摘要,例如若抽取的是句子,則無法得到比最短句子長度小的標題[3]。后續(xù)的標題生成研究更多關(guān)注生成式方法。有的方法從原文檔中選取一組包含重要信息的句子,然后利用句子壓縮技術(shù)實現(xiàn)標題生成[4-5]。還有的方法提取一組包含原文檔信息的短語,然后利用句子合成技術(shù)進行標題生成[6-7]。
抽取式和生成式標題生成各有優(yōu)缺點。抽取式方法可以生成可讀性更高的標題,因為最終標題是通過抽取并拼接出人類直接書寫的句子得出的。然而由于原文檔句子重點信息分布稀疏,高度概括的詞語提取較為困難,因此抽取式方法得到的標題信息量較少[8]。相比之下,生成式方法得到的標題長度較短,且具有高度概括的特點,因此吸引了更多研究者的關(guān)注。但是生成式方法使用短語作為基本處理單元,通常僅基于一組語法信息較少的句子生成標題,所以句子合成的結(jié)果仍然不夠準確[9],即生成式方法難以確保生成標題的語法正確性。因此生成式方法仍然需要投入更多的研究。
神經(jīng)網(wǎng)絡(luò)的深度學習建模方法讓自然語言處理任務進入新階段。由于語言本身具有時序特性,因此比較適合序列建模[10]?;跀?shù)據(jù)驅(qū)動的序列建模省去了人工構(gòu)造特征的過程,大大簡化了人工的干預。在機器翻譯領(lǐng)域,結(jié)合注意力機制的神經(jīng)網(wǎng)絡(luò)翻譯序列模型取得了較好的效果[11-12]。與機器翻譯相同,摘要生成也屬于自然語言生成任務的范疇,是從源句子到目標句子的一種轉(zhuǎn)化,因此有的研究者提出借鑒基于神經(jīng)網(wǎng)絡(luò)的機器翻譯方法,使用帶有注意力機制的序列模型先對新聞編碼,然后解碼,最后生成新聞標題的研究工作,取得了較好的效果[13]。文獻[14]利用語義信息,結(jié)合基于注意力機制的編碼解碼模型,提升了標題生成的質(zhì)量。同時,標題生成過程中外部信息也起到一定的輔助作用,文獻[15]認為某個話題下的文章標題有一定的格式,比如經(jīng)濟話題下的文章標題是因果關(guān)系,社會事件話題下的文章標題包含時間、地點等,因此作者把話題信息融入到標題生成的序列模型中,生成了話題集中的標題??梢娫跇祟}生成方面,如何利用更多的新聞信息來提升標題生成的質(zhì)量,仍有較大的研究空間。
本節(jié)使用形式化的語言對問題進行描述。如表1 所示,文檔d是一個句子序列{s1,s2,…,sn},si對應原文檔中的第i個句子,這里的句子按照英文的語法進行分句。任意第i個句子是一個詞語序列{wi1,wi2, ...,wim},wij對應第i個句子中的第j個詞語。從定義中不難看出,一篇文檔包含詞語級別和句子級別兩個層次結(jié)構(gòu)。為了統(tǒng)一規(guī)范,本文后續(xù)符號如果和上述問題定義中相同,那么這些符號含義和上述形式化定義中的含義保持一致。
表1 標題生成形式化定義
本文任務的輸出是只有一個句子的標題,并且輸出的句子和原文檔中的句子沒有重復,在詞語級別上可能存在部分交集。文獻[4]指出: 輸出的句子t需要描述新聞文章的主題或者新聞文章的事件。在如圖2所示的一篇新聞中,加黑標識的標題表明了新聞的主旨,即關(guān)于華為公司,同時又表明本篇作者對華為公司崛起這一事件的否定消極態(tài)度。上述分析表明圖2的標題完整起到了傳達主旨和態(tài)度的作用,是一個典型的合格標題(新聞觀點不代表本文作者立場)。標題生成的目標是至少要體現(xiàn)一篇新聞的敘述主題,或者敘述關(guān)鍵人物,這種主題或者人物往往是一個詞語或者短語,并且這種詞語或者短語通常是新聞中的原詞語,比如圖2中的“華為”便是本文的關(guān)鍵主語。
圖2 新聞頁面示意圖
已有的標題生成方法大多使用新聞文章的首句內(nèi)容進行標題的生成,存在一定的缺陷。從表1形式化定義看出,如果只使用新聞的首句內(nèi)容,那么在模型的訓練過程中,實際的模型輸入從{s1,s2,s3,…,sn}截取成為{s1,s2,s3},圖1所示的內(nèi)容中如果只是用第一句作為輸入,那么第一句的詞語個數(shù)僅比標題的詞語個數(shù)多了兩個,雖然新聞的第一句體現(xiàn)了新聞的主旨,但是沒有體現(xiàn)新聞作者的觀點,新聞作者的觀點在第二段中的某些詞語比如“naked”(赤裸裸的)和“questionable”(可疑的)等有所體現(xiàn),這些詞語表明新聞作者的負面觀點。
從上述例子可以看到,被截取的新聞內(nèi)容和標題信息相關(guān),并且對標題做了進一步的闡述,但是在模型訓練中并沒有使用,導致生成的標題所覆蓋的信息量有所損失。本文重點解決該問題。
為了滿足序列模型能夠處理的文本長度的限制,同時在模型訓練過程中能夠捕獲到更多的新聞內(nèi)容,算法中要解決的關(guān)鍵問題是如何更多地獲取和使用新聞信息。新聞有詞語和句子兩種不同的層次,因此關(guān)鍵問題可以細化為三個: 如何分別獲取句子級別和詞語級別的關(guān)鍵信息,以及如何使用這些關(guān)鍵信息。下面詳細闡述對這三個關(guān)鍵問題的解決思路。
2.2.1 句子級別關(guān)鍵信息的獲取
句子級別關(guān)鍵信息包括新聞首段句子,以及新聞后續(xù)內(nèi)容中有實質(zhì)信息的句子??梢圆扇∫韵氯N候選方式獲取句子級別的關(guān)鍵信息。
(1) 句子級別關(guān)鍵信息獲取的候選方式
第一種: 直接使用新聞的首段內(nèi)容作為句子級別的關(guān)鍵信息,本文稱其為lead_para方式。
現(xiàn)有算法使用首段內(nèi)容作為輸入,訓練標題生成模型,這種方式也是當前主流方法使用的策略。一篇新聞通常在首段中進行整體的闡述,讓讀者最快地根據(jù)新聞標題以及首段內(nèi)容獲取新聞的主要信息和新聞本身傳達的觀點。因此使用新聞首段內(nèi)容獲取句子級別的關(guān)鍵信息是很直觀的想法
第二種: 盡可能截取實際訓練中最大編碼長度的文本作為句子級別的關(guān)鍵信息,本文稱其為leadk方式。
這種方式是從編碼模型實際計算角度出發(fā),考慮到編碼模型需要設(shè)置最大編碼長度,因此存在首段內(nèi)容超過編碼長度或者小于編碼長度的情況,當編碼內(nèi)容長度超過編碼時間步長時,直接截取超出的內(nèi)容,反之則在缺失的句子后面拼接上固定填充詞。這樣做可以在編碼時充分利用新聞信息。
第三種: 使用無監(jiān)督的圖排序方法,從新聞中選擇關(guān)鍵句子并進行排序,得到句子級別的關(guān)鍵信息,本文稱其為text_rank_k方式。
TextRank算法[16]基于PageRank網(wǎng)頁重要性評價算法,用于文章的抽取式摘要和文章的關(guān)鍵詞提取。text_rank_k方式對新聞使用TextRank算法進行句子重要性的排序,然后根據(jù)句子重要性截取最大編碼長度的詞語子序列。
(2) 句子級別關(guān)鍵信息獲取方式的選擇
本節(jié)將從上述三種候選方式中選擇最優(yōu)的一個作為本文算法使用的句子級別關(guān)鍵信息。我們使用如圖3所示的網(wǎng)絡(luò)結(jié)構(gòu)[17],分別使用上述三種句子級別的候選關(guān)鍵信息作為輸入,訓練得到一個標題生成模型,以模型的性能好壞為標準選擇相對最優(yōu)的句子級別關(guān)鍵信息獲取方式。
圖3 結(jié)合復制機制與注意力機制的編碼解碼模型
圖3所示的網(wǎng)絡(luò)結(jié)構(gòu)使用的是結(jié)合注意力機制和復制機制的編碼解碼模型。其中,編碼部分和解碼部分是兩個序列模型。編碼部分使用雙向編碼,解碼部分使用單向解碼。注意力機制模塊的作用是在每一個解碼時間步生成對應的上下文向量(context vector),從而在第t時間步解碼時生成依賴特定編碼時間步的編碼隱向量。復制機制模塊的功能是解決無法生成詞匯表外詞語的問題,在解碼時,可以生成存在于輸入文本但是在詞匯表以外的詞語,這部分詞語稱為文中詞匯表外詞語(words in article but not in vocabulary)。復制機制使模型生成更多的詞語,提升了模型性能。
實驗結(jié)果表明,第二種方式leadk能夠達到相對較好的效果。因此,本文提出的標題生成算法中,使用實際訓練中最大編碼長度的文本作為句子級別的關(guān)鍵信息。
2.2.2 詞語級別關(guān)鍵信息的獲取
本文從整篇新聞文檔中提取關(guān)鍵詞語,作為詞語級別的關(guān)鍵信息,提取方式使用TextRank算法。關(guān)鍵詞抽取的計算方式與句子排序類似,都是無監(jiān)督的圖排序方法。需要構(gòu)建一個圖網(wǎng)絡(luò),然后對圖中頂點進行排序。和句子排序相比,關(guān)鍵詞抽取的不同之處在于其是一個無向無權(quán)圖,圖中頂點是一個語義單元,兩個頂點之間根據(jù)在一個固定窗口下是否共現(xiàn)判斷是否存在邊。首先對詞語詞干化,對每一個詞語進行詞性標注,只使用名詞和形容詞,過濾掉其他詞性的詞語。為了避免圖的過大增長,我們使用單個詞語作為一個候選語義單元,作為圖中的一個頂點。這里使用單詞作為圖的頂點。每一個頂點的初始權(quán)重設(shè)置為1,迭代直至收斂。根據(jù)節(jié)點最終得分降序排列,取top-T的頂點,這里T=10。
2.2.3 關(guān)鍵信息的使用
本節(jié)介紹如何把上述獲得的關(guān)鍵信息用于新聞標題的生成。
我們在對句子級別關(guān)鍵信息進行編碼的同時,增加對詞語級別關(guān)鍵信息的編碼步驟,從而能夠在解碼生成標題的詞語時,額外考慮到詞語級別的關(guān)鍵信息對生成內(nèi)容的指導作用。使用的網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
我們使用句子級別關(guān)鍵信息和詞語級別關(guān)鍵信息作為輸入,用于新聞標題生成模型的訓練,因此不同于表1,標題生成的形式化定義如表2所示。
表2 標題生成形式化定義
圖4中的雙向編碼的序列模型,使用的是LSTM計算單元。注意力機制和目標函數(shù)與句子級保持一致,這里不再贅述。不同于直接用關(guān)鍵詞語編碼向量kj計算生成概率[18],圖中對關(guān)鍵詞語序列{x1,x2,…,x5},類比注意力機制在解碼時上下文向量c4的計算方式,獲取關(guān)鍵詞向量o4的所有關(guān)鍵詞權(quán)重計算如式(1)所示。
其中,si-1是上一個解碼時間步的輸出,hT是新聞信息最后一個編碼時間步的結(jié)果,我們通過使用輸入信息的最終編碼結(jié)果,強化了輸入信息相關(guān)的關(guān)鍵詞語,使得最終的關(guān)鍵詞編碼和輸入信息更加相關(guān),最終的關(guān)鍵詞編碼結(jié)果類似注意力機制的上下文向量計算方式,即每個隱狀態(tài)向量的加權(quán)和。
把式(2)的計算結(jié)果oi用于改進復制機制和生成詞匯表詞語方式,計算當前解碼操作下,從詞匯表選擇詞語的概率,計算如式(3)所示。
(3)
詞匯生成概率計算方式如式(4)所示。
Pvocab(w)=softmax(V′(V[st,ct,ot]+b)+b′)
(4)
基于上述算法思路,本文提出一種基于關(guān)鍵信息指導的標題生成算法。該算法的流程如圖5所示。
圖5 基于關(guān)鍵信息指導的標題生成算法流程圖
輸入: 一篇新聞文檔
輸出: 新聞標題生成模型
操作步驟:
(1) 獲取句子級別關(guān)鍵信息: 從新聞的首句擴展到前k個句子,作為句子級別的關(guān)鍵信息。
(2) 獲取詞語級別關(guān)鍵信息: 從新聞文檔中提取新聞的關(guān)鍵詞語,得到一個詞語序列,作為詞語級別的關(guān)鍵信息。
(3) 生成模型: 把上述兩步的關(guān)鍵信息作為輸入,訓練標題生成模型。
實驗采用的數(shù)據(jù)集從紐約時代報刊數(shù)據(jù)集中獲取。紐約時代報刊數(shù)據(jù)集中共包含180萬篇新聞,我們首先從中隨機采樣四分之一,得到大約45萬篇新聞,然后從中過濾掉標題長度小于3或者大于15,并且文本長度小于20或者大于2 000的新聞,最后從過濾后的數(shù)據(jù)集中隨機選擇2 000篇新聞作為驗證集和測試集。
本實驗的數(shù)據(jù)集統(tǒng)計信息如表3所示??梢娦侣剺祟}平均長度(title: avg token)只有8個詞語左右,其中標點符號也包含在內(nèi)。另外,首段信息的平均長度(lead avg token)只有80個詞語左右,相比于我們在訓練模型中的最大編碼長度取值100時,把編碼長度內(nèi)的所有數(shù)據(jù)進行編碼,少使用了接近20個詞語。
表3 數(shù)據(jù)集統(tǒng)計信息
為了選擇相對最優(yōu)的句子級別的關(guān)鍵信息,我們設(shè)計了實驗,把三種句子級別的關(guān)鍵信息分別用于標題生成模型的訓練,對比其生成的結(jié)果。
按照2.2節(jié)所介紹的的三個步驟,分別從原文檔中抽取出三種類型的數(shù)據(jù),因為評級摘要生成質(zhì)量的ROUGE指標本質(zhì)是計算文本的召回情況,所以接下來我們統(tǒng)計抽取的數(shù)據(jù)中標題詞語的召回數(shù)目和召回率,統(tǒng)計結(jié)果如表4所示。leadk方式表示取文章前k個詞語構(gòu)成的句子序列,這里k=100。text_rank_k表示使用textrank算法按照句子重要性從高到低排序后,取前k個詞語構(gòu)成的序列,這里k=100。從表4可以看到,leadk方式,即直接取文章詞語序列的前k個構(gòu)成的子序列,召回標題中的詞語數(shù)目最多。這個統(tǒng)計結(jié)果說明新聞標題更容易受到新聞前面句子的影響,首段內(nèi)容包含的信息較多,但是有一定的信息丟失,第二段的起始信息對標題生成也有重要指導作用。
表 4 三種句子級別信息對標題詞語召回統(tǒng)計
使用上述三種方式獲取的重點句子構(gòu)建<文章,標題>對,這里使用同一種模型,模型如圖3所示。模型采用注意力機制結(jié)合復制機制,各自訓練至收斂,對比標題生成性能,結(jié)果如表5所示,表中的句子級別類型與表4中的保持一致。從表中可以看到直接取文章前100個詞語構(gòu)成的句子訓練出的標題得分最高。同時也可以看到,得分高低和表4的召回率呈現(xiàn)正相關(guān)。這個結(jié)果說明不同的句子級別包含有不同的信息量,并且對標題生成效果會產(chǎn)生一定的影響,其中包含更多內(nèi)容的輸入信息具有更好的生成效果。
表5 三種句子級別信息的標題生成結(jié)果
分析實驗結(jié)果,我們選擇盡可能截取實際訓練中最大編碼長度文本的leadk方案,作為句子級別的關(guān)鍵信息獲取方式。
為了驗證在基于序列模型的標題生成過程中使用關(guān)鍵信息的效果,我們設(shè)計了實驗,即把3.2節(jié)中選出的句子級別關(guān)鍵信息,以及詞語級別的關(guān)鍵信息用于標題生成模型的訓練,對比算法是把新聞第一句直接作為標題的生成方法,本文稱其為lead1。
按照2.2.2節(jié)說明的步驟獲取每一篇新聞的關(guān)鍵詞語序列,結(jié)合2.2.1節(jié)中的leadk句子,構(gòu)成<新聞-關(guān)鍵詞,標題>的訓練數(shù)據(jù)集合。然后按照如圖4所示網(wǎng)絡(luò)結(jié)構(gòu)圖訓練基于關(guān)鍵詞指導的標題生成模型,該模型的標題生成效果如表6中的leadk_with_key_word所示。使用leadk句子級別信息訓練出的模型性能和lead1句子級別信息相比,有了較大的提升。同時在leadk句子級別信息基礎(chǔ)上,使用關(guān)鍵詞語序列作為額外的輸入,對標題的生成有一定程度的改善。
表6 標題生成評估結(jié)果
為了解決標題生成中數(shù)據(jù)使用率不高的問題,本文提出基于關(guān)鍵信息指導的標題生成算法。實驗表明,在基于序列模型生成標題時,在一定長度內(nèi)盡可能多地使用新聞內(nèi)容能夠有效提升新聞標題生成的效果。下一步工作將嘗試層次編碼的方案,對新聞進行更高程度的壓縮,從而生成概括程度更高的標題。