知識圖譜如何助力文本摘要生成

來源:丁香園大數據

本文約3800字,建議閱讀8分鐘

本文基於摘要生成,重點考慮如何幫助模型生成特定領域的知識點,並簡要介紹一些用於應對無關重複這類退化現象的方案。

引言

文本生成類任務應用場景廣泛,挑戰性強,隨着Attention-Seq2seq,Copy-Net,GPT這類極具影響力的工作出現,以及CNN/DM,LCSTS這樣大規模生成類數據集的提出,生成類任務的熱度也逐漸攀升,ACL2019僅摘要生成就有20餘篇(劉鵬飛博士對此做了非常詳盡的總結),不過其成熟度還遠不及文本匹配,實體識別這類任務,生成結果無關重複,丟失重點的現象依舊容易出現。本文基於摘要生成,重點考慮如何幫助模型生成特定領域的知識點,並簡要介紹一些用於應對無關重複這類退化現象的方案。

基礎生成

在語料充分時,神經網絡"理解"文本句式的能力很強,生成結果也相對流暢,tensor2tensor這類成熟開源項目效果很好。但實際場景下數據量可能有限,開源項目的潛力不易發揮,Transformer也未必優於LSTM,因此,我們仍然選擇基於LSTM的經典seq2seq結構。此外,受2015年pointer-net啓發,2016年的copy-net讓模型對文本段中的oov不再束手無策,在此基礎上,google次年發佈的pointer-generator大大簡化了copy機制的過程,同時提出了coverage機制應對生成重複問題,CNN/DM數據集也出自本文。對比一些開源項目後,我們也以本文結構作爲baseline。

Get To The Point: Summarization with Pointer-Generator Networks

本文模型結構簡潔,思路清晰,與基礎的seq2seq比較非常方便,在這兩年很多摘要生成工作中都作爲baseline出現,表現不俗。作爲一個子任務工作,項目star已達1.5k+,也說明一定影響力。

文中用attention作爲分佈的方法,就源於2015年的pointer-net:

Pointer-net直接用attention結果a^t作爲分佈預測生成點,生成結果必定出現在原文中。所以這種方法可以讓模型生成原文中出現的OOV詞,另外還可以強化部分詞在分佈中的概率。從筆者的實驗來看,在數據量有限時,seq2seq能力欠佳,疊加attention帶來的收益相當可觀。

此外,本文所用的coverage機制指的是用covloss來懲罰重複現象,即:

不難理解,c就是之前attention分佈的疊加,所以之前的重複位置i會強化向量c的第i維,顯然累積分佈越分散covloss就越小,這樣,covloss就起到了懲罰作用。

融入實體知識

知識的表示和融合可以說是幾乎所有NLP任務的擴展方向,畢竟完全依賴神經網絡黑箱潛力的方向即便可行,恐怕也因計算資源限制將多數團隊拒之門外(例如Google最新的 T5)另外我們也認爲,特別對於很多垂直領域,專業知識帶來的收益是很大的。在醫療方向的摘要生成上,我們同樣希望能借助實體知識提升模型能力。

其實考慮實體知識特徵的生成類工作已有不少了,最容易想到的大致有實體,模版以及主題,下面將簡要介紹與這三種相關的工作。

Neural Question Generation from Text- A Preliminary Study

無論是依靠知識圖譜,還是藉助BERT類模型在NER任務上的良好表現,實體特徵的獲取應該都很容易實現。在文本分類相關任務中,融合外部特徵的常見做法,就是編碼這些特徵,然後選擇不同的encoding層做concat,本文在問題生成任務中,對這類融合方式做了實驗對比,模型結構上除了加入copy機制外,沒有更多值得特別注意的改變。不過本文對concat各種特徵做了實驗比較,作者選取了word case,POS,NER,answer-tag作爲額外特徵,結果在下表中顯示:

其中有幾處指標變化值得關注,首先NQG+表示增加了copy機制,與NQG對比可見提升比較明顯;此外下面與NQG對比,NER,POS,Case這三種的下降都不明顯,似乎說明concat這幾種特徵效果並不好;最後Answer這一項效果顯著,這是作者用類似NER的tag標識了問題中答案的部分,似乎這一特徵起到了決定性的作用。

這樣看來,直接concat特徵,把麻煩交給編碼器的思路並不可行,而影響巨大的answer特徵也許是起到了"過濾"的作用,我們知道,生成摘要就是組織關鍵信息,直覺上過濾無用信息應該對生成模型有所幫助,或許藉助知識特徵進行過濾的思路值得試試。

BiSET: Bi-directional Selective Encoding with Template for Abstractive Summarization

模版往往是抽取式模型常用的方式,本文則是提出了利用模版過濾原文編碼特徵的方法。

思路和實現都很直白,就是常見的加入gate單元計算概率。圖中的(b)就是(a)中的Selective模塊,對輸入文本段和模版分別編碼,然後構造兩個可訓練的gate單元計算權重,最後的z就是過濾後的輸入編碼。

本文提供了另一個用外部特徵進行過濾的思路,模型結構並不複雜,但構造模版並不輕鬆,需要結合應用場景考慮。相比之下,下面這種方法簡單粗暴,卻也能帶來不錯的效果。

Multi-Source Pointer Network for Product Title Summarization

當你用了pointer generator,又考慮融入實體知識特徵時,就會自然想到這篇文章的做法。既然可以用attention作爲分佈強化原文中詞的概率,那用在實體知識特徵上當然也沒問題。

特別對於垂直領域語料,模型準確生成一個領域實體詞的價值遠大於生成流暢的廢話,本文是用於生成商品描述,我們則是用在醫療數據集上,目的都是讓生成結果儘可能涵蓋關鍵信息。相比於上面concat的做法,這裏再用一次attention疊加的效果更明顯。

實例-1

實例-2

實例-3

上面是pointer generator加實體attention疊加的生成結果,訓練數據集不足時,通過抽取實體輔助生成,模型可以相對準的抓住原文的關鍵信息。

不過這種方法有一個麻煩,就是受實體特徵的影響很大,畢竟關鍵詞和實體詞還是有差別的,基於BERT的NER模型可以覆蓋相對完整的實體,但無法識別出哪些是關鍵詞,而關鍵詞的重要性更大於實體詞,丟失了關鍵詞很容易誤導模型。因此,單純的NER並不滿足。

我們考慮主題的思路,但在pointer-generator的結構下,需要詞一級的準確性,LDA並不滿足,之後我們嘗試了上一篇blog內介紹的方法(應用知識圖譜的文本標籤方法),在知識圖譜和主題模型的共同幫助下,相比於僅用BERT,抽取關鍵詞效果更好,生成結果錯誤生成/丟失關鍵詞的現象也有所緩解。

退化現象

重複一直是文本生成類任務的通病,這在一些文章中被稱爲退化,我們也在尋找合適的應對方案,coverage機制就是一種方案,但並不足夠,下面的工作介紹了另一種損失函數,在詞和子句(ngram)兩個點共同發力應對退化現象。

NEURAL TEXT DEGENERATION WITH UNLIKELIHOOD TRAINING

本文提出用Unlikelihood損失來懲罰重複生成(解決退化現象),其實基本通過標題就能想到,Likelihood是用來預測詞表中的下一個生成詞,Unlikelihood就是預測不想生成的詞。

沒錯,最後損失函數就長這樣,有一個詞表表示不想生成的詞,已經生成的詞在裏面可以緩解重複現象,還能根據不同需求加入一些詞避免錯誤。在詞級別的Unlikelihood基礎上,作者還設計子句級的Unlikelihood,形式也基本一樣,就是避免重複n-gram,各位感興趣可以閱讀文章附錄的詳細分析。

The Curious Case of Neural Text Degeneration

雖然本文相關的實驗均基於續寫類任務,但仍極具參考價值。該團隊重點關注生成結果的多樣性,並提出新生成方法,作者對比了beam search生成的概率分佈與真人自然語言分佈的差異,指出這種生成策略是產生重複現象的重要原因。

大家知道beam search可以看作視野更開闊的貪心搜索,即便是有窗口K,每一步仍然是選擇累計概率高的詞作爲輸出,正如圖中黃線所示,這與藍線表示的自然語言差異巨大,通常人們產生的語句是由高頻日常用語和特定場景的低頻詞共同組成的。可以大致認爲,beam search無法產生足夠豐富的語句。

此外,作者還表示,傾向於最大概率的生成策略不僅在每一步丟失豐富性,還會累積地強化重複現象。不難想象,正因爲重複的n-gram概率高,現有模型才容易變成結巴。

針對上述問題,作者提出用Nucleus Sampling替換主流的beam search作爲生成策略。不同於之前的搜索方法,採樣方法希望通過增加隨機性來提高生成的豐富性,同時要注意降低生成低頻詞帶來的語句錯誤。Nucleus Sampling又稱Top-p Sampling,具體的,先設定一個概率闕值p ,將現有詞概率由大到小排序,取累積概率值達到p的前N個詞,重新計算softmax再從中採樣。對比Top-k採樣策略,Top-p限制了生成低頻詞帶來的語句錯誤,這種方法也被應用在GPT-2生成上,感興趣的讀者可以參考其中的參數設定。

Non-Autoregressive

LevT: Levenshtein Transformer

我們一直奢望找到讓生成模型更靈活的方法,傳統的自迴歸模型,無論如何融入特徵,基本框架都是編解碼器提供歷史向量編碼,輸出端計算詞典概率p(x_t|x_old),能否讓模型對輸出端的token有更強的控制呢?本文提供了一種大膽的思路,從標題已經能看出,作者把編Levenshtein距離的操作和Transformer融合在一起做生成模型,輸出端不僅要決定詞本身,還要決定對詞施加的操作。

LevT模型包含插入和刪除兩種操作,用Levenshtein距離作爲回報函數指導模型選擇操作。具體如上圖所示,對於刪除操作,模型僅需要做二分類抉擇,而對插入操作,模型首先需要插入佔位符,再從詞典中選擇插入詞,下式描述了操作策略。

作者提出用模仿學習訓練該策略模型。構造一個專家策略,從模型策略中採樣序列作爲輸入,交給專家策略判斷操作。專家策略有兩種構造方法,一種是構造一個oracle,每次接收真實序列,返回最優操作a*,另一種可以訓練一個字迴歸模型作爲teacher,用beam search的生成結果作爲真實序列。

個人認爲,即便是在Non-autoregressive領域內,這應該也算是創新性非常強的工作了,可以對生成結果進行修改,操作策略也能自主學習,而且操作之間可以並行,速度並不慢。

總結

數據量有限時,pointer-generator可能比複雜的baseline或開源項目更適合,在此基礎上,融合實體知識有更多可以參考的工作,此外結合實體知識後分詞和詞典整理之類的細節不容忽視。相比於語義匹配這類相對成熟的任務,文本生成類工作更難達到一個可以接受的結果,目前的模型都無法完全避免生成重複,生成錯誤,丟失關鍵點等問題,在應用場景中。如何應對重複問題,提高生成多樣性依舊老生常談但成效有限,另外Non-autoregressive方向有一些非常新穎的工作,除了上面提到的LevT外,還有一些從生成位置入手的工作值得學習,BERT之後的XLNet也針對Non-autoregressive有獨特的設計,可見這一領域的潛力,最後評價指標一直是生成領域的弱項,也爲應用。



引用

[1] Pointer Networks

[2] Incorporating Copying Mechanism in Sequence-to-Sequence Learning

[3] Get To The Point: Summarization with Pointer-Generator Networks

[4] Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

[5] Neural Question Generation from Text: A Preliminary Study

[6] BiSET: Bi-directional Selective Encoding with Template for Abstractive Summarization

[7] Multi-Source Pointer Network for Product Title Summarization

[8] 知識圖譜如何應用到文本標籤化算法中

[9] Neural Text Generation with Unlikelihood Training

[10] The Curious Case of Neural Text Degeneration

[11] Levenshtein Transformer

編輯:王菁

校對:林亦霖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章