iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 22
2
AI & Machine Learning

以100張圖理解 Neural Network -- 觀念與實踐系列 第 22

Day 22:自動擷取摘要(Automatic Text Summarization) -- NN 作法

  • 分享至 

  • xImage
  •  

前言

昨天我們談到萃取法(Extractive Method),從本文中擷取相對重要的字句,當作整篇文章的摘要,雖然可行,但不是我們平常處理的方式,較普遍的作法,應該是消化整篇文章的內容,融會貫通,再以自創的字句描述大意,這就是所謂的『抽象法』(Abstractive Method),作法通常分兩階段:

  1. 熔合(fusion):連貫萃取出的重要字句。
  2. 壓縮(compression):將字句精簡,變成摘要。以下圖為例,右方為原文,經精簡後,變成『俄國要求聯合作戰以反恐』(russia calls for joint front against terrorism),中間『熱力圖』(Heatmap)顯示越深的顏色,表示越值得注意(Attention)的單字。
    https://ithelp.ithome.com.tw/upload/images/20171231/20001976gv4mSNYs6n.png
    圖. 字句壓縮(compression)熱力圖,圖片來源:『A Neural Attention Model for Abstractive Sentence Summarization

擷取摘要的處理過程如下圖:
https://ithelp.ithome.com.tw/upload/images/20171231/20001976wWRpP2IkT9.png
圖. 擷取摘要的處理過程,圖片來源:『A Neural Attention Model for Abstractive Sentence Summarization

  1. 首先根據 encoder-decoder 作法,以 input encoder 輸入 18 個單字,output decoder 輸出 7 個單字,預測出 terrorism 這個單字為主題。
  2. 一般化(generalize):將『俄羅斯國防部長』(russian defense minister)簡化為『俄國』。
  3. 轉述(paraphrase):將『為了戰鬥』(for combating)簡化為『針對』(against)。
  4. 壓縮(compressing):將『創建』(the creation of)刪除。

作法(Approach)

除了採取 Neural Network 演算法外,以 Machine Learning 領域而言,也有人使用 Naive-Bayes 分類器,計算 tf-idf,統計 NER 數量,或者使用『決策樹』(Decision Tree)、『隱藏馬可夫模型』(Hidden Markov Model,HMM) 等知名的 data mining 演算法處理,額外考慮字句的位置、相似性,作法相當多,有興趣可參閱『A Survey on Automatic Text Summarization』

以下我們僅就 Neural Network 演算法作一概念性的介紹,包括Facebook AI Research (FAIR)及 Stanford/Google 合作的模型,兩者都是以 seq2seq encoder-decoder 為基礎,再加上一些其他的概念衍生而成。

Facebook AI Research (FAIR) 模型

這個模型編碼器(encoder)額外實驗三種模型:

  1. Bag-of-Words Encoder:使用詞袋,請參考『Day 20:自然語言處理的一些術語介紹』說明,統計單字出現頻率,找出重要單字(Content Words)。
  2. Convolutional Encoder:加上時序的卷積(Keras Conv1D)層及池化層(pooling layer),考慮前後單字間的關係。
  3. Attention-Based Encoder:Attention可參考下面Stanford/Google 模型示意圖,當要decoder產生下一個單字時,重新檢視前面所有讀過的單字(稱為context vector),而非之前所講的只考慮前一個單字,再加上 Decoder 的記憶狀態,從字典中計算最大機率的單字,當作下一個輸出。

最後,再結合 beam-search decoder 技術產生摘要,它使用條件機率計算下一個output,『seq2seq中的beam search算法过程』一文有很清楚的解釋。模型訓練時,使用紐約時報新聞(DUC-2014)資料集,產生14個字的摘要,與資料集與人工撰寫的摘要作比對,以評估其適當性。另外,也用 Gigaword 新聞資料集,它含有950萬條新聞比較。

詳細的說明可參閱『A Neural Attention Model for Abstractive Sentence Summarization』一文。

Stanford/Google 模型

他們基本上是採用雙向(Bidirectional) LSTM 模型,加上 Attention,如下圖:
https://ithelp.ithome.com.tw/upload/images/20180101/20001976xJNHfCABiZ.png
圖. Stanford/Google 模型,圖形來源:Get To The Point:Summarization with Pointer-Generator Networks

模型特點是可以產生在原始本文中未出現的單字,例如,上圖的 beat,就不在本文中,但也因此可能造成摘要不精準,所以,模型略做修改,將上述模型產生的單字與本文的相對位置作比較,誰的機率大,就採用那個單字,公式如下:
https://ithelp.ithome.com.tw/upload/images/20180101/20001976JaVfpNkaAw.png

評估標準

基本上要判斷摘要是否切中命題,就不能以準確率評比了,目前大概有幾個指標:

  1. ROUGE(Recall-Oriented Understudy for Gisting Evaluation):又分為ROUGE-n、ROUGE-L及ROUGE-SU,主要是比對預測與實際的摘要,兩者的n-gram、skip n-gram或LCS(longest common subsequence)的相似度。

LCS(longest common subsequence) 指的是預測與實際的摘要相似的單字序列數,n-gram單字比較要連續,LCS不需要。

  1. BLUE:與位置無關的比較,只比較整個摘要的相似度。
  2. METEOR:依摘要的單字順序,作一對一的比較。
  3. CIDEr:對摘要字句作整體向量化,再比較預測與實際摘要的相似度。

目前以 ROUGE 為主要評估標準,Stanford/Google 模型用 Gigaword 新聞資料集測試的準確率如下:
ROUGE-1 Average_R: 0.38272 (95%-conf.int. 0.37774 - 0.38755)
ROUGE-1 Average_P: 0.50154 (95%-conf.int. 0.49509 - 0.50780)
ROUGE-1 Average_F: 0.42568 (95%-conf.int. 0.42016 - 0.43099)
ROUGE-2 Average_R: 0.20576 (95%-conf.int. 0.20060 - 0.21112)
ROUGE-2 Average_P: 0.27565 (95%-conf.int. 0.26851 - 0.28257)
ROUGE-2 Average_F: 0.23126 (95%-conf.int. 0.22539 - 0.23708)

部分測試結果如下:
原文: novell inc. chief executive officer eric schmidt has been named chairman of the internet search-engine company google .

人工撰寫的摘要: novell ceo named google chairman

自動擷取的摘要: novell chief executive named to head internet company

======================================

原文: gulf newspapers voiced skepticism thursday over whether newly re - elected us president bill clinton could help revive the troubled middle east peace process but saw a glimmer of hope .

人工撰寫的摘要: gulf skeptical about whether clinton will revive peace process

自動擷取的摘要: gulf press skeptical over clinton 's prospects for peace process

結論

Google 模型有提供Tensorflow範例,要執行必須先安裝 bazel,它類似 Maven,是一個建置程式的腳本工具,程式過長,不適合在此說明,另外,Gigaword 新聞資料集是有版權的,筆者未實際測試,僅參考『Taming Recurrent Neural Networks for Better Summarization』說明,該文認為目前技術能達到的程度如下:

  1. 自動擷取的摘要在單字的選取上,已很接近人工撰寫的摘要,但在理解程度上的表現待加強。
  2. 有時候會選到次要的字句,而忽略重要的字句。
  3. 有時候句子會組合錯誤,例如『德國以3:2打敗阿根廷』,但自動擷取的摘要卻變成『阿根廷打敗德國2:0』。
  4. 多個字句的摘要,較無連貫性。
    上述文章作者認為RNN還必須結合更多的語言知識,才能突破以上的盲點,英文尚且如此,中文可能更加遙遠,也許從特定領域著手,比較容易套用到實際的商業模式中,也期待不久的將來,有預先訓練好的模型,可參考使用,否則一般小公司大概也沒有資源,自行訓練模型吧。

本篇沒有相對的程式可供實驗,感覺有點吃不飽的感覺,如讀者有同感,筆者在此致歉。/images/emoticon/emoticon06.gif


上一篇
Day 21:自動擷取摘要(Automatic Text Summarization)
下一篇
Day 23:銷售量預測 -- LSTM 的另一個應用
系列文
以100張圖理解 Neural Network -- 觀念與實踐31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言