seq2seq和attention應用到文檔自動摘要


一、摘要種類

  • 抽取式摘要

  直接從原文中抽取一些句子組成摘要。本質上就是個排序問題,給每個句子打分,將高分句子摘出來,再做一些去冗余(方法是MMR)等。這種方式應用最廣泛,因為比較簡單。經典方法有LexRank和整數線性規划(ILP)。

  LexRank是將文檔中的每個句子都看作節點,句子之間的相似度看作節點之間的邊的權重,構建一個graph;然后再計算每個節點的分數,這個打分的計算方式可以是度中心度(Degree centrality)、PageRank中心度等(論文里說這兩種計算方式其實效果沒有太大差別,文中用的ROUGE-1作為指標);這個方法的要點在於:不能每兩個句子之間都有邊,要設定一個閾值,只有相似度大於這個閾值才能有邊,閾值太大則丟失太多信息,閾值太小則又引入了太多噪聲。

 

  • 壓縮式摘要

  有兩種方式:一種是pipeline,先抽取出句子,再做句子壓縮,或者先做句子壓縮,再抽句子。另一種是jointly的方式,抽句子和壓縮句子這兩個過程是同時進行的。

  句子壓縮(Sentence compression)的經典方法是ILP:句子中的每個詞都對應一個二值變量表示該詞是否保留,並且每個詞都有一個打分(比如tf-idf),目標函數就是最大化句子中的詞的打分;既然是規划那當然要給出限制,最簡單的限制比如說至少保留一個詞,再比如說當形容詞被保留時其修飾的詞也要保留(根據parse tree)。

  • 理解式摘要

  也叫產生式摘要,試圖理解原文的意思,然后生成摘要,也就是像我們人做摘要那樣來完成任務。

  從是否有用戶查詢的角度來說,可以分為通用型摘要(generic)和基於用戶查詢的摘要(query-oriented),其中后者不僅要求生成的摘要應概括原文關鍵信息,還要盡可能與用戶查詢具有很高的相關性。

 

二、評價指標

  首先可以是人工評價。目前來說,自動評價指標采用的是ROUGE,R是recall的意思,換句話說,這個指標基於摘要系統生成的摘要與參考摘要的n元短語重疊度:

  摘要這個任務要求用短序列概括長序列,用召回率這樣的計算思路可以反映出人工給出的參考摘要所列出的要點中有多少被包含在了機器生成的摘要中。這個指標用來應付抽取式摘要可能問題不大,但是由於其無法評價所生成摘要的語法和語義,而且傾向於長摘要,所以其實還應該繼續探索更合理的指標來評價理解式摘要。此外,當然也可以計算基於precision的ROUGE,而且ROUGE還有ROUGE-L等多種版本;最常使用的是ROUGE-N的N取2的方式(也就是ROUGE-2)。評測工具的鏈接是這里(https://github.com/RxNLP/ROUGE-2.0)。

 

 三、Seq2seq與encoder-decoder

  如果只說“序列到序列”的話,那么詞性標注(POS)其實也是這樣的過程。但是它跟翻譯、摘要顯著不同的地方在於:在POS問題中,輸入和輸出是一一對應的,而翻譯、摘要的輸出序列與輸入序列則沒有顯著的對應關系。所以如下圖所示,POS問題可以用最右邊的那個RNN結構來建模,每個時刻的輸入與輸出就是詞與詞性。相比之下,翻譯、摘要這種則可以通過倒數第二張圖那樣的結構來解決,這個結構可以看作是encoder和decoder都是RNN的encoder-decoder框架。

1. encoder-decoder

  encoder-decoder框架的工作機制是:先使用encoder,將輸入編碼到語義空間,得到一個固定維數的向量,這個向量就表示輸入的語義;然后再使用decoder,將這個語義向量解碼,獲得所需要的輸出,如果輸出是文本的話,那么decoder通常就是語言模型。

  這種機制的優缺點都很明顯,優點:非常靈活,並不限制encoder、decoder使用何種神經網絡,也不限制輸入和輸出的模態(例如image caption任務,輸入是圖像,輸出是文本);而且這是一個端到端(end-to-end)的過程,將語義理解和語言生成合在了一起,而不是分開處理。缺點的話就是由於無論輸入如何變化,encoder給出的都是一個固定維數的向量,存在信息損失;在生成文本時,生成每個詞所用到的語義向量都是一樣的,這顯然有些過於簡單。

 2. attention mechanism 注意力機制

  為了解決上面提到的問題,一種可行的方案是引入attention mechanism。所謂注意力機制,就是說在生成每個詞的時候,對不同的輸入詞給予不同的關注權重。谷歌博客里介紹神經機器翻譯系統時所給出的動圖形象地展示了attention:

  下圖也展示了這一點:右側序列是輸入序列,上方序列是輸出序列。輸出序列的每個詞都對應一個概率分布,這個概率分布決定了在生成這個詞的時候,對於輸入序列的各個詞的關注程度。如圖所示,看藍色框起來的那一列,就是模型在生成joint這個詞時的概率分布,顏色最深的地方對應的是輸入的joint,說明模型在生成joint這個詞時最為關注的輸入詞是joint。所謂attention,就是說生成每個詞時都為這個詞得到這個概率分布,進而可以使生成的詞“更好”。

 

 

 

參考文獻:

【1】seq2seq和attention如何應用到文檔自動摘要

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM