文本摘要基礎知識

2022/04/11閱讀時間約 16 分鐘
本來是想理解一下當前「文本摘要」到底做到了什麼程度,搜索到了這一篇【關于 文本摘要】 那些你不知道的事。徵得作者同意之後,進行轉載。對於想理解「文本摘要」做些什麼、有哪些方法的讀者可以看一下。
綜合判斷,目前的「文本摘要」雖然已經走了很遠的路,卻還處於發展階段。可以開發的東西還有很多,想要達到普遍令人滿意的程度,依然還有漫長的路程要走。英文如此,中文更難!
原文作者:李玲
項目地址:https://github.com/km1994/NLP-Interview-Notes
個人論文讀書筆記:https://github.com/km1994/nlp_paper_study
個人介紹:大佬們好,我叫楊夕,該項目主要是我們的小伙伴在研讀頂會論文和復現經典論文過程中,所見、所思、所想、所聞,可能存在一些理解錯誤,希望大佬們多多指正。

一、動機篇

1.1 什麼是文本摘要?

文本(自動)摘要是利用計算機自動地將文本(或文檔集合)轉換成簡短摘要的一種信息壓縮技術。
一般而言,生成的簡短摘要必須滿足信息量充分、能夠覆蓋原文的主要內容、冗餘度低和可讀性高等要求。

1.2 文本摘要技術有哪些類型?

從不同的角度文本自動摘要技術可以被劃分為不同的類型。
按照摘要的功能劃分:
• 指示型摘要(indicative)——僅提供輸入文檔(或文檔集)的關鍵主題,旨在幫助用戶決定是否需要閱讀原文,如標題生成。
• 報導型摘要(informative)——提供輸入文檔(或文檔集)的主要信息,使用戶無需閱讀原文。
• 評論型摘要(critical)——不僅提供輸入文檔(或文檔集)的主要信息,而且需要給出關于原文的關鍵評論。
根據輸入文本的數量劃分:
• 單文檔摘要(single-document summarization)
• 多文檔摘要(multi-document summarization)
根據輸入和輸出語言的不同劃分:
• 單語言摘要(monolingual summarization)——輸入和輸出都是同一種語言
• 跨語言摘要(cross-lingual summarization)——輸入和輸出是不同的語言
• 多語言摘要(multi-lingual summarization)——輸入是多種語言,輸出是其中的某一種語言
根據應用形式的劃分:
• 通用型摘要(generic summarization)——總結原文作者的主要觀點
• 面向用戶查詢的摘要(query-based summarization)——提供與用戶興趣密切相關的內容
根據文摘與原文的關係(即文摘獲取方法)劃分:
• 抽取式摘要(extraction-based summarization)——摘錄原文的重要句子形成摘要
• 壓縮式摘要(compression-based summarization)——抽取并簡化原文的重要句子形成摘要
• 理解式摘要(abstraction-based summarization)——改寫或重新組織原文內容形成摘要
按照輸出文摘的長度劃分:
• 標題式摘要
• 短摘要
• 長摘要
其中抽取式、壓縮式、理解式(或稱生成式)是常用的分類方法。

二、抽取式摘要篇

2.1 抽取式摘要是怎麼做的?

抽取式摘要,即直接從原文中抽取一些句子組成摘要。抽取式的方法基于一個假設,一篇文檔的核心思想可以用文檔中的某一句或幾句話來概括。那麼摘要的任務就變成了找到文檔中最重要的幾句話。
這種摘要方式本質上是個排序問題,給每個句子打分排序,再考慮冗餘性、新穎性、多樣性等做一些後處理(比如MMR),抽取高分的句子作為摘要。這個過程涉及到句子重要性評估算法和基于約束的摘要生成算法。

2.1.1 句子重要性評估算法有哪些?

常見的句子重要性評估算法有:
• 基于統計:統計詞頻、位置、長度、是否包含標題詞等信息,計算句子的得分,再選出得分高的句子作為摘要。例如Lead3、TextTeaser等。特點:簡單易用,但對詞句的使用大多僅停留在表面信息。
• 基于圖模型:將句子看作結點,句子之間的相似度看作邊,構建圖,然後用PageRank算法迭代得到每個句子的得分。例如TextRank, LexRank等
• 基于潛在語義:使用主題模型,挖掘語句的隱藏信息。例如LDA,HMM等
• 基于線路規划:將摘要問題轉為線路規划,求全局最優解。
• 基于機器學習:句子分類(摘要句、非摘要句,可視為序列標注問題)、聚類(每個類選擇一個距離質心最近的句子)等

2.1.2 基于約束的摘要生成方法有哪些?

排序之後的結果只考慮了相關性并沒有考慮新穎性,非常有可能出現排名靠前的幾句話表達的都是相似的意思。所以需要引入一個懲罰因子,將新穎性考慮進去。對所有的句子重新打分,如下公式:
序號i表示排序後的順序,從第二句開始,排第一的句子不需要重新計算,後面的句子必須被和前一句的相似度進行懲罰。
這個算法就是MMR(Maximum Margin Relevance,最大邊緣相關)(注意:這里的公式不是原始的MMR公式,而是針對文本摘要任務做了修改) 。它是常見的最小化冗餘度算法,主要是面向查詢相關的文檔自動摘要任務提出。基本思想是在未選句子集合中選擇一個與輸入查詢最相關并且與已選句子最不相似的句子,迭代該過程,直至句子數目或單詞數目達到上限。

2.1.3 TextTeaser算法是怎麼抽取摘要的?

簡單來說,根據詞頻、位置、長度、是否包含標題詞等統計指標,計算句子的得分,再選出得分高的句子作為摘要。
具體來說,TextTeaser的統計指標有:
1)句子長度,長度為某個長度(比如20)的句子為最理想的長度,依照距離這個長度的遠近來打分。
2)句子位置,根據句子在全文中的位置,給出分數。(比如每段的第一句是核心句的比例大概是70%)。也可以考慮用句子在段落中的位置來評估。
3)文章標題與文章內容的關係,句子是否包含標題詞,根據句子中包含標題詞的多少來打分。
4)句子關鍵詞打分,文本進行預處理之後,按照詞頻統計出排名前10的關鍵詞,通過比較句子中包含關鍵詞的情況,以及關鍵詞分布的情況來打分。
綜合上述步驟的打分做累加,然後倒排得到每個句子的重要性得分,此時要考慮到摘要的可讀性,通俗的做法是按照句子在文章中出現的順序輸出得分最高的n句話作為摘要。
Python代碼開源版本:https://github.com/DataTeaser/textteaser

2.1.4 TextRank算法是怎麼抽取摘要的?

簡單來說,將句子看作結點,句子之間的相似度看作邊,構建圖,然後用類似PageRank的算法迭代得到每個句子的得分,最終將得分高的句子輸出得到摘要。
詳細的步驟如下:
3,. 句子權重計算:迭代傳播權重計算各句子的得分,計算公式如下:

2.2 抽取式摘要的可讀性問題是什麼?

自動文摘質量一直被詬病的問題就是可讀性。因為各個句子都是從不同的段落中選擇出來的,如果只是生硬地連起來生成摘要的話,很難保證句子之間的銜接和連貫。保證可讀性是一件很難的事情。
有一個取巧的方法,就是將排序之後的句子按照原文中的順序輸出,可以在一定程度下保證一點點連貫性。

三、壓縮式摘要篇

3.1 壓縮式摘要是怎麼做的?

壓縮式自動摘要對句子進行壓縮,保留重要的句子成分,刪除無關緊要的成分,使得最終的摘要在固定長度的範圍內包含更多的句子,以提升摘要的覆蓋度。
核心模塊:句子壓縮
• 可視為樹的精簡問題。
• 可視為01序列標注問題。
句子壓縮任務可以被定義為一個刪詞問題:刪除句子中不重要的詞,形成該句子的一個壓縮式表達。常見的方法:
• 基于句法分析樹(無監督):先得到句子對應的短語結構樹,再根據規則刪除不重要的子樹(比如刪除介詞短語子樹、時間短語子樹等)
• 基于噪聲信道模型(有監督):給定原始長句子s,尋找最佳壓縮句子t,使得後驗概率P(t|s)最大(利用貝葉斯准則得到後驗概率)。
• 基于決策(有監督):從結構樹改寫的角度對句子進行處理,通過一系列「移進-規約-刪除」動作實現
壓縮式自動摘要方法結合了句子選擇和句子壓縮兩個算法過程,結合方法可以是:(1)先選擇後壓縮;(2)先壓縮後選擇;(3)兩個過程同時進行。
例如整數線性規划ILP,句子中的每個詞都對應一個二值變量表示該詞是否保留,每個詞都有一個打分(比如tf-idf),目標函數就是最大化句子中的詞的打分。最簡單的限制比如說至少保留一個詞,再比如說當形容詞被保留時其修飾的詞也要保留(根據parse tree)。

四、生成式摘要篇

4.1 生成式摘要是怎麼做的?

生成式摘要,它試圖通過理解原文的意思來生成摘要,其實就是模仿人類寫摘要的方式。
生成式摘要常見的方法有:
• 基于信息融合的生成式摘要:例如基于句法分析樹的信息融合技術,利用句法結構樹定義概念和事實,計算概念和事實的重要性,度量概念和事實的兼容性,最終組合概念和事實形成摘要句子。
• 基于編碼-解碼的生成式摘要:在語義向量空間內對文本進行編碼,然後通過解碼網絡逐詞生成摘要。
由于深度學習的發展,基于編碼-解碼的生成式摘要更常見。

4.2 生成式摘要存在哪些問題?

使用seq2seq框架做摘要通常會遇到以下幾個問題:
1. OOV問題。源文檔語料中的詞的數量級通常會很大,但是經常使用的詞數量則相對比較固定。因此通常會根據詞的頻率過濾掉一些詞做成詞表。這樣的做法會導致生成摘要時會遇到UNK的詞。
2. 摘要的可讀性。通常使用貪心算法或者beamsearch方法來做decoding。這些方法生成的句子有時候會存在不通順的問題。
3. 摘要的重復性。這個問題出現的頻次很高。與2的原因類似,由于一些decoding的方法的自身缺陷,導致模型會在某一段連續timesteps生成重復的詞。
4. 長文本摘要生成難度大。對于機器翻譯來說,NLG的輸入和輸出的語素長度大致都在一個量級上,因此NLG在其之上的效果較好。但是對摘要來說,源文本的長度與目標文本的長度通常相差很大,此時就需要encoder很好的將文檔的信息總結歸納并傳遞給decoder,decoder需要完全理解并生成句子。可想而知,這是一個很難的事情。
5. 模型的訓練目標與最終的評測指標不太一致。這里牽扯到兩個問題,一個是seq2seq的訓練模式中,通常會使用teacher-forcing的方式,即在decoder上,將真實target的輸入和模型在前一時刻生成的詞一起送到下一個時刻的神經元中計算。但是在inference時,是不會有真實target的,因此存在一個gap;另一個問題就是通常模型訓練的目標函數都是交叉熵損失函數。但是摘要的評測卻不是以交叉熵來判斷的,目前一些榜單通常以ROUGE、BLEU等方式評測,雖然這些評測也不是很完美,但是與交叉熵的評測角度均在較大差異。

4.3 Pointer-generator network解決了什麼問題?

指針生成網絡從兩方面針對seq-to-seq模型在生成式文本摘要中的應用做了改進。
第一,使用指針生成器網絡可以通過指向從源文本中復制單詞(解決OOV的問題),這有助于准確復制信息,同時保留generater的生成能力。PGN可以看作是抽取式和生成式摘要之間的平衡。
通過一個門來選擇產生的單詞是來自于詞匯表,還是來自輸入序列復制。
第二,使用coverage跟蹤摘要的內容,不斷更新注意力,從而阻止文本不斷重復(解決重復性問題)。利用注意力分布區追蹤目前應該被覆蓋的單詞,當網絡再次注意同一部分的時候予以懲罰。

五、摘要質量評估方法

5.1 摘要質量的評估方法有哪些類型?

1.人工評價方法

請專家對系統的自動摘要結果打分,但是專家之間差異性較大。解決方法之一是金字塔方法(pyramid method)。m位專家撰寫參考摘要,然後人工分析每個參考摘要,提取摘要內容單元(summary content unit, SCU)(表示摘要中子句級的重要語義單元)的集合,并為參考摘要中每個SCU賦值,被w個參考摘要提及則賦值為w。然後計算所有SCU在系統摘要中的得分之和,系統摘要得分與理想摘要得分的比值作為質量評價得分。

2.自動評價方法

(1)內部(intrinsic)評價:分析摘要的質量評價
• 形式度量(form metrics):側重于語法、摘要的連貫性和組織結構
• 內容度量(content metrics):側重內容和信息,比如ROUGE(Recall-Oriented Understudy for Gisting Evaluation)。
(2)外部(extrinsic)評價:依據摘要結果對其他應用任務的效果評價

5.2 什麼是ROUGE?

ROUGE(Recall-Oriented Understudy for Gisting Evaluation)是評估自動文本摘要和機器翻譯的一組指標。它通過將待審摘要或翻譯與一組參考摘要或翻譯進行比較計算,得出相應的分數,以衡量自動生成的摘要或翻譯與參考摘要之間的相似度。
它的基本思想是將待審摘要和參考摘要的n元組共現統計量作為評價依據。然後通過一系列標準進行打分。
ROUGE包括:ROUGH-N、ROUGH-L、ROUGH-W、ROUGH-S和ROUGH-SU幾個類型。通俗地講就是通過一些定量化的指標來描述待審摘要和參考文摘之間的相似性,維度考慮比較多,在一定程度上可以很好地評價產生的摘要。

5.3 幾種ROUGE指標之間的區別是什麼?

ROUGE是將待審摘要和參考摘要的n元組共現統計量作為評價依據。
ROUGE-N = 每個n-gram在參考摘要和系統摘要中同現的最大次數之和 / 參考摘要中每個n-gram出現的次數之和
分母也可以是待審摘要中每個n-gram出現的次數之和,不過用參考摘要的話更看重召回,用待審摘要則更看重精確率。
ROUGE-L計算最長公共子序列的匹配率,L是LCS(longest common subsequence)的首字母。如果兩個句子包含的最長公共子序列越長,說明兩個句子越相似。
其中LCS(X,Y)是X和Y的最長公共子序列的長度,m,n分別表示參考摘要和待審摘要的長度(一般就是所含詞的個數)。R和P分別表示召回率和精確率,F即是Rouge-L。一般只考慮召回率,所以參數\betaβ會被設置為一個很大的數。
Rouge-W是Rouge-L的改進版,使用了加權最長公共子序列(Weighted Longest Common Subsequence),連續最長公共子序列會擁有更大的權重。
ROUGE-S使用了skip-grams。在參考摘要和待審摘要進行匹配時,不要求gram之間必須是連續的,可以跳過幾個單詞。比如skip-bigram,在產生grams時,允許最多跳過兩個詞。比如「cat in the hat」的 skip-bigrams 就是 「cat in, cat the, cat hat, in the, in hat, the hat」.

5.4 BLEU和ROUGE有什麼不同?

BLEU 是 2002 年提出的,而 ROUGE 是 2003 年提出的。
BLEU的計算主要基于精確率,ROUGE的計算主要基于召回率。
ROUGE 用作機器翻譯評價指標的初衷是這樣的:在 SMT(統計機器翻譯)時代,機器翻譯效果稀爛,需要同時評價翻譯的准確度和流暢度;等到 NMT (神經網絡機器翻譯)出來以後,神經網絡腦補能力極強,翻譯出的結果都是通順的,但是有時候容易瞎翻譯。
ROUGE的出現很大程度上是為了解決NMT的漏翻問題(低召回率)。所以 ROUGE 只適合評價 NMT,而不適用于 SMT,因為它不管候選譯文流不流暢。
BLEU的計算公式:

參考資料

1. 《文本數據挖掘》宗成慶等人著
2. textteaser算法學習
3. TextRank算法
4. 自動文摘評測方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S
5. 文本生成13:萬字長文梳理文本生成評價指標
6. 文本自動摘要任務的「不完全」心得總結
7. 真正理解指針生成網絡Pointer-Generator Networks
為什麼會看到廣告
朔雪寒
朔雪寒
筆名:朔雪寒。長期從事人工智慧、軍事理論、歷史、預測科學、語言學、哲學研究。著作:《孫子兵法論正》、《道德經論正》、《孫臏考》、《策略的哲學》、《預測的哲學》、《孫子兵法白話譯註》、《《子華子》公案徹底終結》、《《鬼谷子》公案徹底終結》。軟體:中文輸入法、中文校對系統、基於規則的中文分詞系統等。
留言0
查看全部
發表第一個留言支持創作者!