文章目錄
任務:給定輸入文本,輸出也是一段文本,但是長度更短,而且包含了輸入文本的主要信息。
摘要可以是單文檔的,也可以是多文檔。
- 單文檔是說從一個文檔中生成一個摘要
- 多文檔是說從多個文檔中抽出一個摘要。通常這些文檔在內容上是有重合的,比如新聞對同一事件的報道。
1.1 單文檔數據集介紹
在單文檔摘要生成任務中,不同的數據集來源不同,數據集中文本的長度和風格也不一樣。一些常用的數據集及任務如下表所示:
數據集 | 輸入 | 輸出 | 備註 |
---|---|---|---|
Gigaword | 每一篇新聞報道的第一句或者前兩句話 | 新聞標題。 | 該任務也稱爲 句子壓縮 |
LCSTS(微博中文) | 段落 | 句子摘要 | |
NYT, CNN/DailyMail | 新聞 | (多)句子摘要 | |
Wikihow | 整個how-to類型的文章 | 句子摘要 |
句子簡寫也是一種NLG的應用,但是和摘要生成還是略有不同,主要是以更短、更簡單的方式對源句子進行改寫。
這類任務也有自己的數據集:
數據集 | 輸入 | 輸出 |
---|---|---|
Simple Wikipedia | 標準對的Wikipedia句子 | 簡版 |
Newsela | 新聞 | 適於兒童閱讀版 |
1.2 摘要生成兩大策略
-
抽取式:從源句子中選擇若干部分組成摘要,一般來說比較簡單,但也有侷限性(不能組成段落)
-
生成式:用語言模型來生成文本,一般來說更難,但是生成的文字更像人寫的。
1.3 Pre-neural 摘要
這種摘要生成方式大多是抽取式生成,主要分爲三個模塊:
- 內容選擇:選擇哪些句子
- 信息排序:將選擇的句子進行排序
- 句子實現:對句子進行一些編輯操作,比如簡化、去冗餘、連貫性處理等
流程圖如下所示:
Pre-neural 中內容選擇的算法
-
句子打分策略可以參考:關鍵詞出現情況,比如利用
tf-idf
進行打分;其他特徵,如句子在文檔中出現的位置 -
基於圖的算法:將文檔視爲句子的集合(節點),句子之間用邊連。 邊的權重正比於句子相似性,利用圖算法找到圖的中心節點及對應的句子。
1.4 評價指標
摘要生成任務常用ROUGE(Recall-Oriented Understudy for Gisting Evaluation)進行衡量評價,其數學公式如下:
這裏,表示n-gram
的長度,表示參考摘要(標準), 表示候選摘要和參考摘要中同時出現n-gram
的個數, 則表示參考摘要中出現的n-gram
個數。
從上述公式也可以看出“召回”的含義,分子可以看作“檢出的相關文檔數目”,即系統生成摘要與標準摘要相匹配的N-gram
個數,分母可以看作“相關文檔數目”,即標準摘要中所有的N-gram
個數。
雖然ROUGE
和BLEU
兩者都是基於n-gram重合度的評價指標,但是而這還是有區別的:
ROUGE
沒有brevity penalty
(簡稱BP
),而BLEU
是有這一項的。先回顧一下BLEU
的計算方式:將翻譯結果與其相對應的幾個參考翻譯作比較,算出一個綜合分數,分數越高說明機器翻譯得越好。可以看到,如果我的翻譯結果比較短,大部分的結果都會出現在參考翻譯中,反而會更容易得到一個高精度的評價值。爲了避免這種情況,會在評價指標中一個調整因子:
這裏,爲參考翻譯的句子長度,是機器翻譯出來的句子長度。如果, 得分就會乘以一個比1小的數,就是“懲罰因子”。可以看到這種評價方式 不關心語法,只關心內容分佈,適用於衡量數據集量級的表現,在句子級別的表現不佳。
“BLEU is designed to approximate human judgement at a corpus level, and performs badly if used to evaluate the quality of individual sentences.”——wikipedia
ROUGE
只針對召回進行考量,而BLEU
針對的則考量精確度。一般來說,在機器翻譯任務中,我們更看重的是翻譯的準確與否ROUGE
和BLEU
都基於n-gram
,但是前者是針對每一個$n$
都會計算,而後者則是分別計算然後取一個平均或其他方式的綜合計算。常用的ROUGE
分值如下:
1.5 基於神經網絡的摘要生成
2015年,首次提出利用seq2seq
做摘要生成的論文,並將單文檔生成式摘要視爲機器翻譯任務,如此一來便可以使用seq2seq+attention機制
的機器翻譯方法。
在這之後,無數學者對此不斷改進:
- 讓
copy
機制更加靈活、簡單 - 使用分層或者多級聯的注意力機制
- 從全局或者更高緯度上進行內容選擇
- 利用增強學習方式直接最大化
ROUGE
或者其他指標(注意這裏指標需要是離散的,比如長度)??存疑 - 將
pre-neural
的方法應用到neural
系統中,比如基於圖算法的內容選擇
更多閱讀:
1.5.1 copy機制
Seq2seq+attention
的方法可以很好的保證輸出文本的流暢性,但是不能保證在細節方面的準確性。而copy
機制通過attention
可以保證詞或者短語這些關鍵點準確的出現在輸出文本中,這對於摘要生成是非常重要的。引入copy
機制還讓我們可以同時使用抽取、生成的方法進行NLG。
copy機制的若干變種:
- Language as a Latent Variable: Discrete Generative Models for Sentence
Compression, Miao et al, 2016 https://arxiv.org/pdf/1609.07317.pdf - Abstractive Text Summarization using Sequence-to-sequence RNNs and Beyond,
Nallapati et al, 2016 https://arxiv.org/pdf/1602.06023.pdf - Incorporating Copying Mechanism in Sequence-to-Sequence Learning, Gu et al,
2016 https://arxiv.org/pdf/1603.06393.pdf
這裏以Summarization with Pointer-Generator Networks給大家舉例說明copy
機制原理。
上圖展示了的是解碼器在第三個時間步,預測Germany beat
後面一個單詞的情況,像基礎的seq2seq+attention模型一樣,我們會計算一個 attention distribution
和 vocabulary distribution
,不過同時,也會計算一個$0-1$
產生概率 ,,表示從 vocabulary
中產生一個單詞的概率,相應的 就是從輸入中 copy
一個單詞的概率
p_{\mathrm{gen}}=\sigma\left(w_{h^{*}}^{T} h_{t}^{*}+w_{s}^{T} s_{t}+w_{x}^{T} x_{t}+b_{\mathrm{ptr}}\right)
其中,,是向量,是標量,這些參數都是學習得到的。是函數。可以看做是一種控制開關,可以soft的在兩種模式之間切換生成一個詞的方式:是從詞表中以的概率採樣,還是對注意力分佈進行採樣,這樣相當於直接從輸入中copy一個詞
如果是OOV,那麼,如果 沒有在輸入中出現,那麼。這樣就可以避免OOV的問題,而之前模型都是將詞限制在預設定的詞表中。
copy
機制的不足:
TODO,還沒有看懂
1.6 內容選擇的優化
pre-neural
的摘要生成系統中,會通過將整個NLG分爲三個階段:寫什麼、怎麼寫、優化。在標準的seq2seq+attention
的摘要生成系統中,會將“寫什麼”和“優化”糅雜在一起完成:在解碼的每一個時間步中,會進行詞粒度
(word-level)的內容選擇。但是這樣的方式其實效果會很差,因爲缺乏全局的選擇策略。
一種改進方式是自底向上的摘要生成!
論文提到的方法很簡單,
在內容選擇階段利用序列標註模型對每個word詞打標籤:包含還是不包含;在自底向上的注意力階段,如果一個詞被打上不包含的標籤,那麼模型就不會對齊進行attention操作。
這種方法簡單有效,可以有效避免對長句子的過渡copy問題。
1.7 和增強學習的聯手
2017年,提出了一篇利用深度增強網絡進行抽取式摘要生成的[論文]( https://arxiv.org/pdf/1705.04304.pdf
34 Blog post: https://www.salesforce.com/products/einstein/ai-research/tl-dr-reinforced-model-abstractive-summarization/)
核心觀點是利用增強學習直接優化ROUGE-L
.而傳統的最大似然(MaximumLikelihood,簡稱ML)的訓練方法不能直接優化該函數是因爲函數不可導。
一個有趣的現象是,利用RL
替代ML
之後,ROUGE
得分變高了(table1,2),
但是人工評分變低了(table5),
最後將兩種方法聯合使用,得到了最好的效果。