1. 程式人生 > >文字摘要抽取

文字摘要抽取

摘要

本文探討用 abstractive 的方式來解決 sentence-level 的文字摘要問題

本文轉載自微信公眾號:ResysChina,作者張俊 ,極客公園已獲得授權。

文字摘要是自然語言處理中比較難的一個任務,別說是用機器來做文摘了,就連人類做文摘的時候都需要具備很強的語言閱讀理解能力和歸納總結能力。新聞的摘要要求編輯能夠從新聞事件中提取出最關鍵的資訊點,重新組織語言來寫摘要;paper 的摘要需要作者從全文中提取出最核心的工作,然後用更加精煉的語言寫成摘要;綜述性的 paper 需要作者通讀 N 篇相關 topic 的 paper 之後,用最概括的語言將每篇文章的貢獻、創新點寫出來,並且對比每篇文章的方法各有什麼優缺點。自動文摘本質上做的一件事情是資訊過濾,從某種意義上來說,和推薦系統的功能有一點像,都是為了讓大家更快地找到感興趣的東西,只是用了不同的手段而已。

問題描述

文字摘要問題按照文件數量可以分為單文件摘要和多文件摘要問題,按照實現方式可以分為提取式(extractive)和摘要式(abstractive)。摘要問題的特點是輸出的文字要比輸入的文字少很多很多,但卻蘊藏著非常多的有效資訊在內。有一點點感覺像是主成分分析(PCA),作用也與推薦系統有一點像,都是為了解決資訊過載的問題。現在絕大多數應用的系統都是 extractive 的,這個方法比較簡單但存在很多的問題,簡單是因為只需要從原文中找出相對來說重要的句子來組成輸出即可,系統只需要用模型來選擇出資訊量大的句子然後按照自然序組合起來就是摘要了。但是摘要的連貫性、一致性很難保證,比如遇到了句子中包含了代詞,簡單的連起來根本無法獲知代詞指的是什麼,從而導致效果不佳。研究中隨著 deep learning 技術在 nlp 中的深入,尤其是 seq2seq+attention 模型的「橫行」,大家將 abstractive 式的摘要研究提高了一個 level,並且提出了 copy mechanism 等機制來解決 seq2seq 模型中的 OOV 問題。

本文探討的是用 abstractive 的方式來解決 sentence-level 的文字摘要問題,問題的定義比較簡單,輸入是一個長度為 M 的文字序列,輸出是一個長度為 N 的文字序列,這裡 M>>N,並且輸出文字的意思和輸入文字的意思基本一致,輸入可能是一句話,也可能是多句話,而輸出都是一句話,也可能是多句話。

語料

這裡的語料分為兩種,一種是用來訓練深度學習模型的大型語料,一種是用來參加評測的小型語料。

這個網站提供了文字摘要的比賽,2001-2007 年在這個網站,2008 年開始換到這個網站 TAC http://www.nist.gov/tac/。很官方的比賽,各大文字摘要系統都會在這裡較量一番,一決高下。這裡提供的資料集都是小型資料集,用來評測模型的。

該語料非常大,大概有 950w 篇新聞文章,資料集用 headline 來做 summary,即輸出文字,用 first sentence 來做 input,即輸入文字,屬於單句摘要的資料集。

3、CNN/Daily Mail

該語料就是我們在機器閱讀理解中用到的語料,該資料集屬於多句摘要。

這是一箇中文短文字摘要資料集,資料採集自新浪微博,給研究中文摘要的童鞋們帶來了福利。

模型

本文所說的模型都是 abstractive 式的 seq2seq 模型。nlp 中最早使用 seq2seq+attention 模型來解決問題的是 machine translation 領域,現如今該方法已經橫掃了諸多領域的排行榜。

seq2seq 的模型一般都是如下的結構 [1]:

捕獲轉載.PNG

encoder 部分用單層或者多層 rnn/lstm/gru 將輸入進行編碼,decoder 部分是一個語言模型,用來生成摘要。這種生成式的問題都可以歸結為求解一個條件概率問題 p(word|context),在 context 條件下,將詞表中每一個詞的概率值都算出來,用概率最大的那個詞作為生成的詞,依次生成摘要中的所有詞。這裡的關鍵在於如何表示 context,每種模型最大的不同點都在於 context 的不同,這裡的 context 可能只是 encoder 的表示,也可能是 attention 和 encoder 的表示。decoder 部分通常採用 beam search 演算法來做生成。

1、Complex Attention Model [1]

模型中的 attention weights 是用 encoder 中每個詞最後一層 hidden layer 的表示與當前 decoder 最新一個詞最後一層 hidden layer 的表示做點乘,然後歸一化來表示的。

捕獲轉載1.PNG

2、Simple Attention Model [1]

模型將 encoder 部分在每個詞最後一層 hidden layer 的表示分為兩塊,一小塊用來計算 attention weights 的,另一大塊用來作為 encoder 的表示。這個模型將最後一層 hidden layer 細分了不同的作用。

3、Attention-Based Summarization(ABS) [2]

這個模型用了三種不同的 encoder,包括:Bag-of-Words Encoder、Convolutional Encoder 和 Attention-Based Encoder。Rush 是 HarvardNLP 組的,這個組的特點是非常喜歡用 CNN 來做 nlp 的任務。這個模型中,讓我們看到了不同的 encoder,從非常簡單的詞袋模型到 CNN,再到 attention-based 模型,而不是千篇一律的 rnn、lstm 和 gru。而 decoder 部分用了一個非常簡單的 NNLM,就是 Bengio[10] 於 2003 年提出來的前饋神經網路語言模型,這一模型是後續神經網路語言模型研究的基石,也是後續對於 word embedding 的研究奠定了基礎。可以說,這個模型用了最簡單的 encoder 和 decoder 來做 seq2seq,是一次非常不錯的嘗試。

4、ABS+ [2]

Rush 提出了一個純資料驅動的模型 ABS 之後,又提出了一個 abstractive 與 extractive 融合的模型,在 ABS 模型的基礎上增加了 feature function,修改了 score function,得到了這個效果更佳的 ABS+模型。

5、Recurrent Attentive Summarizer(RAS) [3]

這個模型是 Rush 的學生提出來的,輸入中每個詞最終的 embedding 是各詞的 embedding 與各詞位置的 embedding 之和,經過一層卷積處理得到 aggregate vector:

捕獲轉載2.PNG

根據 aggregate vector 計算 context(encoder 的輸出):

捕獲轉載3.PNG

其中權重由下式計算:

捕獲轉載4.PNG

decoder 部分用 RNNLM 來做生成,RNNLM 是在 Bengio 提出的 NNLM 基礎上提出的改進模型,也是一個主流的語言模型。

6、big-words-lvt2k-1sent 模型 [4]

這個模型引入了 large vocabulary trick(LVT) 技術到文字摘要問題上。本方法中,每個 mini batch 中 decoder 的詞彙表受制於 encoder 的詞彙表,decoder 詞彙表中的詞由一定數量的高頻詞構成。這個模型的思路重點解決的是由於 decoder 詞彙表過大而造成 softmax 層的計算瓶頸。本模型非常適合解決文字摘要問題,因為摘要中的很多詞都是來自於原文之中。

7、words-lvt2k-2sent-hieratt 模型 [4]

捕獲轉載5.PNG

文字摘要中經常遇到這樣的問題,一些關鍵詞出現很少但卻很重要,由於模型基於 word embedding,對低頻詞的處理並不友好,所以本文提出了一種 decoder/pointer 機制來解決這個問題。模型中 decoder 帶有一個開關,如果開關狀態是開啟 generator,則生成一個單詞;如果是關閉,decoder 則生成一個原文單詞位置的指標,然後拷貝到摘要中。pointer 機制在解決低頻詞時魯棒性比較強,因為使用了 encoder 中低頻詞的隱藏層表示作為輸入,是一個上下文相關的表示,而僅僅是一個詞向量。這個 pointer 機制和後面有一篇中的 copy 機制思路非常類似。

8、feats-lvt2k-2sent-ptr 模型 [4]

捕獲轉載6.PNG

資料集中的原文一般都會很長,原文中的關鍵詞和關鍵句子對於形成摘要都很重要,這個模型使用兩個雙向 RNN 來捕捉這兩個層次的重要性,一個是 word-level,一個是 sentence-level,並且該模型在兩個層次上都使用 attention,權重如下:

9、COPYNET [8]

捕獲轉載7.PNG

encoder 採用了一個雙向 RNN 模型,輸出一個隱藏層表示的矩陣 M 作為 decoder 的輸入。decoder 部分與傳統的 Seq2Seq 不同之處在於以下三部分:

預測:在生成詞時存在兩種模式,一種是生成模式,一種是拷貝模式,生成模型是一個結合兩種模式的概率模型。

狀態更新:用 t-1 時刻的預測出的詞來更新 t 時刻的狀態,COPYNET 不僅僅詞向量,而且使用 M 矩陣中特定位置的 hidden state。

讀取 M:COPYNET 也會選擇性地讀取 M 矩陣,來獲取混合了內容和位置的資訊。

這個模型與第 7 個模型思想非常的類似,因為很好地處理了 OOV 的問題,所以結果都非常好。

10、MRT+NHG [7]

這個模型的特別之處在於用了 Minimum Risk Training 訓練資料,而不是傳統的 MLE(最大似然估計),將評價指標包含在優化目標內,更加直接地對評價指標做優化,得到了不錯的結果。

結果

評價指標是否科學可行對於一個研究領域的研究水平有著直接的影響,目前在文字摘要任務中最常用的評價方法是 ROUGE(Recall-Oriented Understudy for Gisting Evaluation)。ROUGE 受到了機器翻譯自動評價方法 BLEU 的啟發,不同之處在於,採用召回率來作為指標。基本思想是將模型生成的摘要與參考摘要的 n 元組貢獻統計量作為評判依據。

在英文資料集 DUC-2004 上進行評測,結果如下:

捕獲轉載8.PNG

在中文資料集 LCSTS 上進行評測,結果如下:

捕獲轉載9.PNG

不管是中文資料集還是英文資料集上,最好的結果都是來自於模型 10[7], 並且該模型只是採用最普通的 seq2seq+attention 模型,都沒有用到效果更好的 copy 機制或者 pointer 機制。

思考

自動文摘是我關注的第一個 nlp 領域,早期了很多相關的 paper,從方方面面都有所瞭解,也有一些比較淺薄的想法,現在總結一下。

1、為什麼 MRT 那篇文章的結果會比其他各種各樣的模型都要好呢?因為他直接將 ROUGE 指標包含在了待優化的目標中,而不是與其他模型一樣,採用傳統的 MLE 來做,傳統的目標評價的是你的生成質量如何,但與我們最終評價的指標 ROUGE 並無直接關係。所以說,換了一種優化目標,直接定位於評價指標上做優化,效果一定會很好。這點不僅僅在自動文摘中出現過,我記得在 bot 相關的 paper 中還有機器閱讀理解相關的 paper 中都有出現,只是具體的評價指標不同而已。這一點很有啟發性,如果在文章 [7] 中採用 copy 機制來解決 OOV 問題,會不會有更加驚人的效果呢?我們拭目以待。

2、OOV(out of vocabulary) 的問題。因為文字摘要說到底,都是一個語言生成的問題,只要是涉及到生成的問題,必然會遇到 OOV 問題,因為不可能將所有詞都放到詞表中來計算概率,可行的方法是用選擇 topn 個高頻詞來組成詞表。文章 [4] 和 [8] 都採用了相似的思路,從 input 中拷貝原文到 output 中,而不僅僅是生成,這裡需要設定一個 gate 來決定這個詞是 copy 來還是 generate 出來。顯然,增加了 copy 機制的模型會在很大程度上解決了 OOV 的問題,就會顯著地提升評價結果。這種思路不僅僅在文摘問題上適用,在一切生成問題上都適用,比如 bot。

3、關於評價指標的問題。一個評價指標是否科學直接影響了這個領域的發展水平,人工評價我們就不提了,只說自動評價。ROUGE 指標在 2003 年就被 Lin 提出了 [9],13 年過去了,仍然沒有一個更加合適的評價體系來代替它。ROUGE 評價太過死板,只能評價出 output 和 target 之間的一些表面資訊,並不涉及到語義層面上的東西,是否可以提出一種更加高層次的評價體系,從語義這個層面來評價摘要的效果。其實技術上問題不大,因為計算兩個文字序列之間的相似度有無數種解決方案,有監督、無監督、半監督等等等等。很期待有一種新的體系來評價摘要效果,相信新的評價體系一定會推動自動文摘領域的發展。

4、關於資料集的問題。LCSTS 資料集的構建給中文文字摘要的研究奠定了基礎,將會很大程度地推動自動文摘在中文領域的發展。現在的網際網路最不缺少的就是資料,大量的非結構化資料。但如何構建一個高質量的語料是一個難題,如何儘量避免用過多的人工手段來保證質量,如何用自動的方法來提升語料的質量都是難題。所以,如果能夠提出一種全新的思路來構建自動文摘語料的話,將會非常有意義。

參考文獻: