自然語言處理 (NLP) -2 文本摘要Text Summarization 

原本打算只寫一篇就把自然語言處理和文本摘要紀錄完,結果一不留神就寫了一堆,只好再起一篇主要敘述文本摘要(Text Summarization),現今業界也有很多人在做這一塊,但是大家各有不同的做法和看法,所謂文本摘要(Text Summarization),主要是讓機器可以在讀取很多文章、很多串文字後,幫人類彙整出這些文章、文字串的重點,而這些彙整出的重點,可能是比較具象的,譬如文章中很頻繁地提到哪些人事物,或是比較抽象化的,用機器自己的手法產生一段摘要敘述;在經過一些整理後,我條列出目前在文本摘要(Text Summarization)這個領域,主要有幾種常見研究議題如下;

  1. 文本摘要 Text Summarization,主要是讓機器可以在讀入一大篇文章後,輸出這篇文章主要想表達的內容,這類作法有點像是幫文章做一份摘要,讓閱讀的人可以快速且簡單地了解接下來要發生什麼事,而一篇文章通常有起承轉合等,不同類型的文章也會有不同表現手法,譬如新聞類文章的重點多在第一段,但是評論類則會多在中後段,所以實際使用模型學習時,不容易令模型掌握到究竟哪段才是重點!
  2. 文件摘要 Document Summarization,主要是訴求讓機器讀入一份文件,裡面會有多篇文章,接著再把讀入多篇文章後的重點萃取出來,讓使用者知道這份文件裡面有哪些重點,這裡和文本摘要比較不同的是,一份文件不會只有一個重點,且也難以用一段摘要就能表現清楚,不過在一些研究中,Document Summarization通常會和Text Summarization混合在一起,若是有人發現我講錯了,再請跟我說一下,感恩!
  3. 多文件摘要Multi-Documents Summarization,主要是讓機器讀入多份文件,這樣講好像是廢話?但是在多文件摘要時,會先進行分類和歸納,同一類型文章會被歸納成一個叢集(Cluster),而透過機器對於這些文章的理解,進而取出這批文章想要表達的重點,或是找出文章內相異、相同論點等,譬如說,今天有一批研究茶葉種植的文章好了,在多文章摘要時,我們可以看出這一批文章裡面存在著哪些觀點,例如某些文章主張高緯度有著茶葉生長,而某些文章可能主張高緯度對茶葉生長無幫助等。
  4. 觀點摘要 Opinion Summarization,我如果硬要把觀點萃取看成一種摘要,可能有點牽強,但也並無不可,觀點摘要的需求主要來自於社群網路興起後的產物,譬如在Youtube、網路新聞甚至電商平台上等,通常可以看到許多評論Comments,而這些評論大多可以反映群眾對於Youtube或是電商商品本身的看法,通過觀點摘要,我們可以看出一段影片,一則新聞或是一個商品引起的群眾力量,只是不同於前面幾個摘要是化簡為繁,觀點摘要通常是化繁為簡,因為評論通常字數不多,且更口語化,也隱含著更多不同的看法跟理念,當然也有更多時候只是路人起鬨而已;不過在現今的觀點摘要做法,通常是用爬蟲+統計,量化各種看法後,多加整理而成,是否能抽象化成一種概念,以目前來說都是用人工輔助解決居多,如果要讓機器自動產生一個抽象化的理念,就不是那麼容易了。
modern art
要多抽象有多抽象? Photo by Bruno Thethe on Pexels.com

前面講完文章摘要後,我們大可以掌握到這門學科就是把一堆文字轉換成簡短、有效的文字敘述,而目前常見研究論文中,在實現摘要這件事情上,我們主要有兩大步驟要實現;

  1. 文章理解,如何把輸入的文章、文檔轉化成可用資訊片段。
  2. 文字處理,如何把可用的資訊片段,找出潛在的訊息,並進而推導出完整的答案。
  3. 文章生成,如何把推導出的答案,轉化出一串文字,作為完整的說明。

說到這裡,我們不難發現,這幾個步驟似乎和ChatBot差不多? 沒錯,事實也是如此,在我們常見的系統或功能設計中,也不外乎輸入(文章理解)、處理(文字處理)、輸出(文章生成)三個步驟,只是在這裡,我們所面臨的輸入輸出功能,不管是邏輯規劃,功能設計,都比先前我之前遇到的功能設計還要複雜得多,相對要付出的知識成本也比較多就是了。

white printer paper
其實, 一切都是需要設計而已。Photo by picjumbo.com on Pexels.com
文章理解,如何把輸入的文章、文檔轉化成可用資訊片段。

回頭來到一開始的輸入階段,首先我們要把文章輸入到系統中,好讓機器可以理解文章內容,在這裡,現今常見的手法,多是透過一些手法讓機器可以理解文章內容,常見的方法有兩種,萃取式(Extractive)和抽象式(Abstractive)。

萃取式(Extractive)的概念,基本上是文章把文章輸入後,排除掉一些贅字和連接詞,將文章裡的詞彙作權重(Weight)計算Text Ranking之類的,找出排行前幾名的文字,接著用排名來決定哪些文字是重點。

或是用溶蝕(Erosion),逐步消去文章內重要性比較低的文字和段落,只保留重要的段落內容,其實兩者作法相似,但是出發點不同,用權重(Weight)排名找出來的重點會比較片段且雜亂,把文章裡面的詞彙、段落抽取出來,可以看做在一大段文字中,只畫出自己需要的關鍵字;用溶蝕找出來的重點,因為多用排除法,則比較會保留文章原文法。

不懂甚麼是Erosion ? 希望Squid Game這段可以幫助你理解。

–待續

在〈自然語言處理 (NLP) -2 文本摘要Text Summarization 〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *