丁香醫生的評論區和后臺,每天都會收到成千上萬條關于健康的問題。為了幫助用戶解決各種健康疑問,丁香醫生提供了多種不同形式的服務。對于高頻、有共性的問題,通過數百位醫生、專家收集整理資料,編寫成專業易懂、FAQ問答形式的「健康百科」。此外,還有大量「專家科普」深度長文,解釋每個醫療知識背后的來龍去脈。
這兩類內容都具備良好的結構化,有相對工整的標題,有歸屬的科室,同時或以醫療實體分類,或以健康topic分類等。用戶通過搜索的方式即可方便地觸達到內容。不過,醫學畢竟是個復雜的話題,很多病癥在不同人身上個體差異也特別大,參照最近大家陽了的情況:
得新冠就像小馬過河,小馬問松鼠,水深嗎?松鼠說:“太深了!我朋友過河被淹死了!”小馬又問小狗,小狗說:“挺深的,我好不容易才游過去的。”小馬又去問黃牛。
黃牛笑著說:“要布洛芬嗎?”
主動的科普做不到事無巨細地把所有細節、可能性都寫出來。用戶有個性化的問題,在科普文章中找不到答案,可以選擇使用付費線上問診服務,直接找個醫生問。當問診結束后,問診記錄會默認保持保密狀態。此時,如果你愿意,幫助那些遇到類似問題的人,可以將問題設置為公開。本次問診記錄將會隱去所有敏感信息后,進入搜索索引。通過用戶檢索,數據將展示在「公開問題」欄目。
接觸過信息檢索的同學一定都有體會,要提升搜索效果,一方面要在語義匹配上下功夫,另一方面也要盡可能提升原始數據的結構化程度。眼尖的同學肯定發現了,被公開的問診記錄已經被自動帶上了標題。對于長文本檢索來說,標題是個非常重要的索引字段,它包含了全文的核心主旨,不僅有利于文檔與Query的語義匹配,同時對于用戶閱讀體驗也更好。通常,文章標題都是由編輯同學起的,人有高度抽象的思維能力,可以做到復雜事物的總結歸納,理清楚最主要的脈絡邏輯。在當前的場景中,我們希望模型也能具備類似的能力,即提煉出用戶問診主訴,并生成一個流暢通順的問句。
在還是RNN-Seq2seq為主流架構的3年前,團隊也在摘要生成方面做了不少嘗試,當時的技術背景下,我們大多探索的方向是在如何在結構上加些trick,提升長文的編碼能力。或是各種結合copy機制,來提升關鍵信息的識別,引入外部知識實體數據等方向。但是,由于受限于主體encoder的編碼能力,最終結果總是差強人意,雖然偶有讓人眼前一亮的case,但是當時模型輸出的穩定性還是不足以應用在實際場景中。
然而在隨后的3年里,預訓練模型迎來了爆發,在大模型的加持下,NLG的效果迅速提升至一個十分可觀的水平。結合我們的任務,Google發布的T5成為了我們的基礎框架。在經過幾輪標注數據調教后,baseline版本已基本達到可讀狀態。但是在落地之前,還有幾個問題需要解決,比如由于生成低資源導致的語句不流暢、生成句子前后事實不一致、輸入文本過長等。
近幾年,摘要生成也是NLP領域比較火熱的一個方向,本文結合學界的幾項工作,談談如何緩解上述問題的一些思路。
一、摘要生成與多任務 or 多目標相結合
從預訓練模型興起時,多任務就成了很多工作的解決方案,摘要領域也同樣如此,比如提事實一致性可以增加一個事實一致性的任務,提升流暢性可以增加一個提升流暢度的任務,摘要領域最具影響的多任務來自2019年Google的Pegasus。
《PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization》
該篇文章開創性的引入一個新的預訓練任務gap sentences generation(GSG),并借此在12個數據集上取得了SOTA,將預訓練模型摘要的效果提升了一個臺階。對于一個文本段落,GSG任務訓練方式是:選擇在encoder階段mask掉一段文本中的部分句子,并將這部分句子作為decoder的target進行訓練。
整個任務形式非常簡單,效果卻異常出彩。而對于如何選擇被mask的句子,為了使得被mask的句子內容上更加接近一個"摘要",文章給的思路是通過計算句子與其余句子的Rouge,選擇top-N進行mask。這里Rouge可以替換為其他分值,比如Fact PEGASUS就在選擇的分值上增加了FACTCC,用于提升生成摘要的事實一致性。
《BRIO: Bringing Order to Abstractive Summarization》
本文是筆者認為今年較好的文章,一度在幾個數據集benchmark榜上占據第一的位置。這篇文章通過多任務緩解了自回歸模型的兩個缺點:
(1)自回歸模型在生成過程中通常會受到bias帶來的影響;
(2)生成式摘要的訓練數據通常為一篇文章對應一句摘要,模型在學習的是一個點到點的分布,這并不是很好的形式;
文章中將摘要抽取的訓練分兩個階段,第一階段首先訓練MLE的loss,第二階段模型采用多任務訓練排序loss+MLE loss訓練,整個訓練過程重復這兩個階段直到收斂。
排序任務通過beam-search生成若干句子,對原文計算Rouge對生成句子進行排序。排序loss由句子生成概率和排序的位置決定,其目的是希望模型生成質量高(Rouge分值高)句子的概率高于質量差的概率。
這里第二階段的loss公式可以解釋如下,?L_xent為MLE loss,L_ctr為排序loss,S_i,S_j為模型通過beam-search采樣得到的句子,其中i,j即為排序順序,f(s_i)為模型生成句子長度規劃后的log概率。對比 MLE loss,排序loss學習到的并非是一個點的分布,另外該loss中兩個句子生成概率相減,巧妙規避了詞頻帶來的bias。
《Calibrating Sequence likelihood Improves Conditional Language Generation》
來自PEGASUS同組的工作,當前的SOTA模型,其思想和BRIO非常相似,在模型Fine-tune之后,引入了Calibration階段,two-stages的多任務訓練(這里并不像BRIO重復訓練),同樣的配方同樣的味道。
這篇文章做了非常多的實驗,對多種loss和訓練方式進行測試,這里簡單歸納下實驗結論:
(1)多任務的loss選擇上:最簡單的rankloss取得了最好的效果。
(2)生成句子的排序指標上:采用BertScore/decoder的結果/Rouge等幾種方法都差不多。
(3)生成數據的方式:Beam-search 好于Diverse Beam Search和Nucleus Sampling。
(4)多任務的另一個loss選擇kl-divergence和cross entropy表現差不多。
(5)進入第二個訓練階段的指標:采用困惑度取最好。
文章還證實了多任務結合two-stages的訓練可以減少預測過程對beam-search等trick的依賴。
《FRSUM: Towards Faithful Abstractive Summarization via Enhancing Factual Robustness》
這篇文章來自Baidu的EMNLP2022的工作,在多任務基礎上通過引入對抗攻擊的思路來提升摘要的事實一致性。
文章構造了一個對抗攻擊任務,文本信息通過encoder進入deocder前會被加上一個擾動h,另外希望模型在有擾動的情況下,在factual span輸出的真實結果概率高于對抗集中其他可能實體的概率。這里選擇的factual span則是事先確定模型最可能出現的一些錯誤類型,針對factual span構造對抗集來自輸入文本。從消融實驗可以看出擾動和對抗任務都帶來一定程度的事實一致性的提升。
二、長文本摘要策略
長文本摘要目前主流的工作是兩個方向,一個利用BigBird、LongFromer之類的稀疏attention結構增加模型可接受的輸入長度;另一個則是通過截斷、貪婪策略來減少輸入長度。
《How Far are We from Robust Long Abstractive Summarization?》
文章來自2022EMNLP,對于長文本的摘要生成,該篇文章首先做個了比較有趣的信息量實驗。對于平均為6k個token的英文文章,信息量最多的位置在1k-2k區間,0-1k區間信息量排第二,因此對于長文本的處理如果簡單取top 512長度輸入很有可能只得到一個次優解。
文章實驗了兩種方式,方式一是不限制輸入長度采用sparse-attention(Longformer的local-attention);方式二是限制輸入長度,輸入文本通過貪婪方式篩選(reduce-then-summ,根據Rouge貪婪選擇若干句子)。
在文本長度限制為1k,4k,8k的輸出結果上,對于方式一,增加輸入長度能帶來輕微的提升,即便是由full attention變成sparse-attention。對于方式二,1k的長度限制結合full attention取得了最佳,增加長度和稀疏attention并沒有在方式二中帶來提升。采用1k長度結合篩選再輸入無疑是最貼近模型的預訓練的方式,限制在1k長度也避免了對attention和position embedding的改造,除去了冗余信息也減少生成模型跑偏的風險。
《Investigating Efficiently Extending Transformers for Long Input Summarization》
另一篇采用sparse attention解決長文本的是Google的Pegasus-X,支持最大token長度長達16k,可在huggingface下載。該篇文章引入了staggered block-local Transformer。這種transformer不同層采用了不同的local-attention范圍,這種堆疊的思想類似于CNN感受野,最上層的transformer通過錯位attention可以達到非常長的感受野。
文章通過實驗證明了staggered block-local Transformer即使在有全局的global attention的情況下也能帶來一定的提升。
《A Multi-Stage Summarization Framework for Long Input Dialogues and Documents》
這篇文章來自微軟今年的ACL的工作,相比前兩篇文章多了一些工業風。
文章采用了split-then-summarize的形式來應對長文本摘要問題,在一些長文本訓練集上取得了sota的效果。將長文本摘要生成過程分成N個粗摘要過程和一個精摘要過程,每個過程對應都有不同的模型來適配,一共有N+1個模型。文章特別提及到了多個過程共用模型會帶來性能下降。
粗摘要過程的模型訓練數據,是將原始文章和目標摘要進行段落拆分進行匹配得到。這個匹配策略是貪婪的最大化Rouge分值。最終輸入的精摘要模型的文章長度并沒有被壓縮在模型輸入最大長度K以內,而是在1K~2K之間。文章給的解釋是,壓縮到K的目標長度更容易產生過短粗摘要,這些過短的摘要拼接后會帶來一些噪聲。
三、利用圖結構
文章中通常存在一些結構信息,比如句子是否同屬于一個段落,句子間一些指代關系,句子是否包含關鍵詞等,這些信息通常可以與圖結構相結合提升摘要的效果。
《HEGEL: Hypergraph Transformer for Long Document Summarization》
該篇文章通過文章結構信息提升抽取式摘要結果,雖然是抽取式摘要但其將構造圖結構信息的方式仍然值得借鑒。該篇文章將句子、句子所屬段落、topic、keyword作為圖中節點構造圖結構,topic和keyword都是通過抽取的方式得到。句子經過sentence encoder之后在經過兩層Hypregraph attention匯聚點和邊的信息獲得更好的句子表示,再進行抽取任務。
《Abstractive Summarization Guided by Latent Hierarchical Document Structure》
該篇文章同樣來自今年的EMNLP,該篇文章提出了HierGNN結構希望能通過圖結構學到文章中句子之間的依賴關系,來提升摘要生成效果。從最終的實驗結果上看預訓練和非預訓練模型均有一定的提升。
和上篇文章類似,這里將句子看作圖中節點,邊則是兩個句子間的依賴關系f,文章對于一個節點s分別給了p(parent),c(child)兩種的表示。
圖中的節點經過HierGNN的reasoning結構節點匯聚周圍節點的信息,兩層網絡更新過程中有類似遺忘門的gate結構。
最終每個節點的表示會和decoder t時刻的輸出進行graph attention加權求和獲得圖表示,再和decoder輸出經過token attention,softmax獲得對應vocab的分值。
總結
雖然預訓練模型對摘要抽取帶來許多便利,但是實際應用中仍會遇到語句不流暢、前后事實不一致等問題,然而這些問題在嚴肅醫療科普中的容錯率是比較低的。除了通過上述所提到的工作,改善摘要的生成過程。同時我們也建議在生成之后完善后續評估環節,比如針對生成結果的流暢性評估過濾環節。我們在該環節除了包含一些業務規則之外,還會從困惑度、Rouge、Domain分類結果、摘要包含的實體個數等維度進行二次打分。
引用
[1]《Pegasus: Pre-training with extracted gap-sentences for abstractive summarization》
[2]《FactPEGASUS: Factuality-Aware Pre-training and Fine-tuning for Abstractive Summarization》
[3]《BRIO: Bringing Order to Abstractive Summarization》
[4]《Calibrating Sequence likelihood Improves Conditional Language Generation》
[5]《How Far are We from Robust Long Abstractive Summarization》
[6]《Investigating Efficiently Extending Transformers for Long Input Summarization》
[7]《A Multi-Stage Summarization Framework for Long Input Dialogues and Documents》
[8]《HEGEL: Hypergraph Transformer for Long Document Summarization》
[9]《Abstractive Summarization Guided by Latent Hierarchical Document Structure》
編輯:黃飛
?
評論