1. 簡介
隨著網際網路產生的文本數據越來越多,文本信息過載問題日益嚴重,對各類文本進行一個「降 維」處理顯得非常必要,文本摘要便是其中一個重要的手段。文本摘要旨在將文本或文本集合轉換為包含關鍵信息的簡短摘要。文本摘要按照輸入類型可分為單文檔摘要和多文檔摘要。單文檔摘要從給定的一個文檔中生成摘要,多文檔摘要從給定的一組主題相關的文檔中生成摘要。按照輸出類型可分為抽取式摘要和生成式摘要。抽取式摘要從源文檔中抽取關鍵句和關鍵詞組成摘要,摘要全部來源於原文。生成式摘要根據原文,允許生成新的詞語、短語來組成摘要。按照有無監督數據可以分為有監督摘要和無監督摘要。本文主要關注單文檔、有監督、抽取式、生成式摘要。
2. 抽取式摘要
抽取式方法從原文中選取關鍵詞、關鍵句組成摘要。這種方法天然的在語法、句法上錯誤率低,保證了一定的效果。傳統的抽取式摘要方法使用圖方法、聚類等方式完成無監督摘要。目前流行的基於神經網絡的抽取式摘要往往將問題建模為序列標註和句子排序兩類任務。下面首先介紹傳統的抽取式摘要方法,接著簡述基於神經網絡的抽取式摘要方法。
2.1 傳統方法
2.1.1 Lead-3
一般來說,作者常常會在標題和文章開始就表明主題,因此最簡單的方法就是抽取文章中的前幾句作為摘要。常用的方法為 Lead-3,即抽取文章的前三句作為文章的摘要。Lead-3 方法雖然簡單直接,但卻是非常有效的方法。
2.1.2 TextRank
TextRank 算法仿照 PageRank,將句子作為節點,使用句子間相似度,構造無向有權邊。使用邊上的權值迭代更新節點值,最後選取 N 個得分最高的節點,作為摘要。
2.1.3 聚類
將文章中的句子視為一個點,按照聚類的方式完成摘要。例如 Padmakumar and Saran [11] 將文章中的句子使用 Skip thought vectors 和 Paragram embeddings 兩種方式進行編碼,得到句子級別的向量表示,再使用 K 均值聚類和 Mean-Shift 聚類進行句子聚類,得到 N 個類別。最後從每個類別中,選擇距離質心最近的句子,得到 N 個句子,作為最終摘要。
2.2 序列標註方式
抽取式摘要可以建模為序列標註任務進行處理,其核心想法是:為原文中的每一個句子打一個二分類標籤(0 或 1),0 代表該句不屬於摘要,1 代表該句屬於摘要。最終摘要由所有標籤為 1 的句子構成。
2.2.1 序列標註摘要基本框架
將文本摘要建模為序列標註任務的關鍵在於獲得句子的表示,即將句子編碼為一個向量,根據該向量進行二分類任務,例如 AAAI17 中,Nallapati 等人[10]的工作,使用雙向 GRU 分別建模詞語級別和句子級別的表示。其模型 SummaRuNNer 如圖 1所示。藍色部分為詞語級別表示,紅色部分為句子級別表示,對於每一個句子表示,有一個 0、1 標籤輸出,指示其是否是摘要。
圖1 SummaRuNNer 模型
該模型的訓練需要監督數據,現有數據集往往沒有對應的句子級別的標籤,因此需要通過啟發式規則進行獲取。具體方法為:首先選取原文中與標準摘要計算 ROUGE 得分最高的一句話加入候選集合,接著繼續從原文中進行選擇,保證選出的摘要集合 ROUGE 得分增加,直至無法滿足該條件。得到的候選摘要集合對應的句子設為 1 標籤,其餘為 0 標籤。
2.2.2 序列標註結合Seq2Seq
抽取式摘要還可以在序列標註的基礎上結合 Seq2Seq 和強化學習完成。ACL18 中,Zhang等人[14]在序列標註的基礎上,使用 Seq2Seq 學習一個句子壓縮模型,使用該模型來衡量選擇句子的好壞,並結合強化學習完成模型訓練。其模型 Latent 如圖 2所示。
該方法的核心關注點是:摘要數據集往往沒有對應的句子級別的標籤,需要通過啟發式規則獲取,然而僅僅利用這些標籤訓練模型會丟失很多標準摘要中重要的信息。因此 Latent 模型不採用序列標註方法計算標籤級別的損失來訓練模型,而是將序列標註作為中間的步驟。在得到序列標註的概率分布之後,從中採樣候選摘要集合,與標準摘要對比計算損失,可以更好地利用標準摘要中的信息。
圖2 Latent 模型
2.3 Seq2Seq方式
之前的抽取式摘要往往建模句子級別的表示,忽略了關鍵詞的作用。ACL18 中,Jadhav and Rajan等人[5]直接使用 Seq2Seq 模型來交替生成詞語和句子的索引序列來完成抽取式摘要任務。其模型 SWAP-NET 在解碼的每一步,計算一個 Switch 概率指示生成詞語或者句子。最後解碼出的是詞語和句子的混合序列。最終摘要由產生的句子集合選出。除了考慮生成句子本身的概率之外,還需要考慮該句是否包含了生成的詞語,如果包含,則得分高,最終選擇 top k 句作為摘要。
2.4 句子排序方式
抽取式摘要還可以建模為句子排序任務完成,與序列標註任務的不同點在於,序列標註對於每一個句子表示打一個 0、1 標籤,而句子排序任務則是針對每個句子輸出其是否是摘要句的概率,最終依據概率,選取 top k 個句子作為最終摘要。雖然任務建模方式(最終選取摘要方式)不同,但是其核心關注點都是對於句子表示的建模。
2.4.1 句子排序結合新的打分方式
之前的模型都是在得到句子的表示以後對於句子進行打分,這就造成了打分與選擇是分離的,先打分,後根據得分進行選擇。沒有利用到句子之間的關係。在 ACL18 中,Zhou 等人[15]提出了一種新的打分方式,使用句子受益作為打分方式,考慮到了句子之間的相互關係。其模型 NeuSUM 如圖 3所示。
句子編碼部分與之前基本相同。打分和抽取部分使用單向 GRU 和雙層 MLP 完成。單向 GRU 用於記錄過去抽取句子的情況,雙層 MLP 用於打分。打分如下公式所示。
其中 r 代表 ROUGE 評價指標,
圖3 NeuSUM 模型
因此在打分和選擇部分,逐步選擇使得 g 最高的句子,直到無法滿足該條件或者達到停止條件為止。集合 S 為最終摘要。
3. 生成式摘要
抽取式摘要在語法、句法上有一定的保證,但是也面臨了一定的問題,例如:內容選擇錯誤、連貫性差、靈活性差等問題。生成式摘要允許摘要中包含新的詞語或短語,靈活性高,隨著近幾年神經網絡模型的發展,序列到序列(Seq2Seq)模型被廣泛的用於生成式摘要任務,並取得一定的成果。
僅使用 Seq2Seq 來完成生成式摘要存在如下問題:(1)未登錄詞問題(OOV),(2)生成重複。現在被廣泛應用於生成式摘要的框架由 See 等人[13]在 ACL17 中提出,在基於注意力機制的 Seq2Seq 基礎上增加了 Copy 和 Coverage 機制,有效的緩解了上述問題。其模型 pointer-generator 網絡如圖 4所示。
圖4 Pointer-Generator 模型
其模型基本部分為基於注意力機制的 Seq2Seq 模型,使用每一步解碼的隱層狀態與編碼器的隱層狀態計算權重,最終得到 context 向量,利用 context 向量和解碼器隱層狀態計算輸出概率。
利用 Copy 機制,需要在解碼的每一步計算拷貝或生成的概率,因為詞表是固定的,該機制可以選擇從原文中拷貝詞語到摘要中,有效的緩解了未登錄詞(OOV)的問題。
利用 Coverage 機制,需要在解碼的每一步考慮之前步的 attention 權重,結合 coverage 損失, 避免繼續考慮已經獲得高權重的部分。該機制可以有效緩解生成重複的問題。
基於該框架可以做出一些改進,在 ICLR18 中,Paulus 等人[12],在該框架的基礎上又使用解碼器注意力機制結合強化學習來完成生成式摘要。
基於上述 Coverage 機制,在 EMNLP18 中,Li 等人[8]基於句子級別的注意力機制,使用句子級別的 Coverage 來使得不同的摘要句可以關注不同的原文,緩解了生成信息重複的問題。
3.1 利用外部信息
除上述問題以外,基於 Seq2Seq 的模型往往對長文本生成不友好,對於摘要來說,更像是一種句子壓縮,而不是一種摘要。因此在 ACL18 中,Cao 等人[1],使用真實摘要來指導文本摘要的生成。其核心想法在於:相似句子的摘要也具有一定相似度,將這些摘要作為軟模板,作為外部知識進行輔助。其模型Sum 一共包含 Retrieve、Rerank、Rewrite 三個部分。
Retrieve 部分主要檢索相似句子,獲得候選摘要。Rerank 部分用於排序候選模板,在訓練集中,計算候選與真實摘要的 ROUGE 得分作為排序依據,在開發集與測試集中,使用神經網絡計算得分作為排序依據。訓練過程中,使得預測得分儘可能與真實得分一致。Rewrite 部分,結合候選模板與原文生成摘要。
3.2 多任務學習
除了將本身數據集的信息作為一種外部知識以外,在 ACL18 中,Guo 等人[3]將摘要生成作為主任務,問題生成、蘊含生成作為輔助任務進行多任務學習。問題生成任務需要根據給定的文本和答案生成問題,要求模型具有選擇重要信息的能力,蘊含生成任務要求根據給定文本,有邏輯地推出輸出文本,要求模型具有邏輯推理能力。在文本摘要中,定位原文中的關鍵信息是核心問題,根據原文生成摘要又要求模型具有一定的邏輯推理能力,使得生成的摘要與原文不違背,無矛盾。
3.3 生成對抗方式
在 AAAI18 中,Liu 等人[9]利用 SeqGAN[14] 的思想,利用生成模型 G 來生成摘要,利用判別模型 D 來區分真實摘要與生成摘要。使用強化學習的方法,更新參數。
4. 抽取生成式摘要
抽取式、生成式摘要各有優點,為了結合兩者的優點,一些方法也同時使用抽取結合生成的方法來完成摘要任務。
在生成式摘要中,生成過程往往缺少關鍵信息的控制和指導,例如 pointer-generator 網絡在 copy 的過程中,無法很好地定位關鍵詞語,因此一些方法首先提取關鍵內容,再進行摘要生成。
從直覺上來講,摘要任務可以大致分為兩步,首先選擇重要內容,其次進行內容改寫。在 EMNLP18 中,Gehrmann 等人[2]基於這種想法,提出了「Bottom Up」方式的摘要, 首先使用「content selector」選擇關鍵信息,其次使用 pointer-generator 網絡生成摘要。
內容選擇部分建模為詞語級別序列標註任務,該部分的訓練數據通過將摘要對齊到文檔,得到詞語級別的標籤。摘要生成部分使用 pointer-generator 網絡,使用內容選擇部分計算的概率修改原本 attention 概率,使得解碼器僅關注選擇的內容。
除了上述以序列標註方式來選擇關鍵詞的方法以外,在 NAACL18 中,Li 等人[6]使用 TextRank 算法獲得關鍵詞,之後使用神經網絡獲得關鍵詞語的表示,並將該表示結合 pointergenerator 網絡生成摘要。
上述方法從原文中選擇重要的部分用來指導摘要的生成,顯式地利用了文本級別的信息,在 EMNLP18 中,Li 等人[7],使用門控機制,從編碼得到的向量表示中選擇有用的信息用於之後的摘要生成,屬於一種 Soft 方式。在使用層次化 encoder 得到句子級別的向量表示之後,使用門控機制,得到新的句子級別向量,表示從中選擇有用信息。其模型 InfoSelection 如圖 5所示。
圖 5 InfoSelection 模型
在 ACL18 中,Hsu 等人[4]將抽取式模型的輸出概率作為句子級別的 attention 權重, 用該權重來調整生成式模型中的詞語級別的 attention 權重,如圖 6所示,其核心想法為:當詞語級別的 attention 權重高時,句子級別的 attention 權重也高。基於此想法提出了 Inconsistency 損失函數,使得模型輸出的句子級別的權重和詞語級別的權重儘量一致。在最終訓練時,首先分別預訓練抽取式和生成式模型,之後有兩種方式來結合兩個模型,Hard 方式:將抽取式模型抽出的關鍵句直接作為生成式模型的輸入;Soft 方式:將抽取式模型的的輸出概率用來調整詞語級別的權重。
圖6 權重調整過程
5. 數據集
常用的文本摘要數據集有 DUC 數據集、New York Times 數據集、CNN/Daily Mail 數據集、 Gigaword 數據集、LCSTS 數據集。
由於 DUC 數據集規模較小,因此神經網絡模型往往在其他數據集上進行訓練,再在 DUC 數據集上進行測試。
NYT 數據集包含了發表於 1996 至 2007 年期間的文章,摘要由專家編寫而成。該數據集的摘要有時候不是完整的句子,並且長度較短,大約平均 40 個詞語。
目前廣泛使用的是 CNN/Daily Mail 數據集,屬於多句摘要數據集,常用於訓練「生成式」摘要系統。該數據集一共有兩個版本,匿名(Anonymized)版本和未匿名(Non-anonymized)版本,未匿名版本包括了真實的實體名(Entity names),匿名版本將實體使用特定的索引進行替換。
Gigaword 數據集摘要由文章第一句話和題目結合啟發式規則構成。
LCSTS 為中文短文本摘要數據集,由新浪微博構建得到。
6. 總結
文本摘要作為傳統的自然語言處理任務,至今依舊有新的發展和創新,這一方面得益於模型、方法、語料的支撐,另一方面也是由於摘要任務自身的重要性。摘要生成作為文本生成的一種,除了有著重複、冗餘、不連貫、生成較短等問題,還有著摘要任務特定的問題,其中最核心的為:如何確定關鍵信息。當下的文本摘要更關注「什麼是真正的摘要」,而不僅僅是簡單地句子壓縮。利用外部知識,利用關鍵詞信息等方式來更好的輔助摘要的生成。各個摘要模型各有優點,在實驗結果上各有優勢。因此在考慮評價指標的同時,更應該關注問題本身,才能使得方法更具有普適性,更好的滿足真實需要。
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴