當我們點開某個網站或某個新聞APP的時候,經常能看到這樣的題目:“14億人都不知道的真相,歷史的血淚……”、“刪前速看!XXX視頻流出”等,可是當我們點進去的時候,往往會發現,都是標題黨,文章和內容完全不符合!
如果這時候有一種工具能先替我們閱讀新聞,再提煉出關鍵內容,那麼我們肯定不會再受到標題黨的影響,這對我們的生活無疑會有非常大的便利。而這需要的就是“文本摘要自動生成”技術!
文本摘要充斥着我們生活的方方面面,往小了說,新聞關鍵詞的提煉是文本摘要;往寬泛看,文本摘要也可以應用在像Google、百度等搜索引擎的結果優化中,真正實現搜索中的“所見即所得”,“Smarter & Faster”,再也不會翻好幾頁都找不到想要的信息了。
(Google開源的Textsum人類/機器摘要結果對比)
主流的文本摘要方式
目前主流的文本摘要自動生成有兩種方式,一種是抽取式(extractive),另一種是生成式 (abstractive)。
抽取式顧名思義,就是按照一定的權重,從原文中尋找跟中心思想最接近的一條或幾條句子。而生成式則是計算機通讀原文後,在理解整篇文章意思的基礎上,按自己的話生成流暢的翻譯。
抽取式的摘要目前已經比較成熟,但是抽取質量及內容流暢度均差強人意。伴隨着深度學習的研究,生成式摘要的質量和流暢度都有很大的提升,但目前也受到原文本長度過長、抽取內容不佳等的限制。
文本摘要的發展概況
抽取式摘要是一種比較成熟的方案,其中Text rank排序算法以其簡潔、高效的特點被工業界廣泛運用。大體思想是先去除文章中的一些停用詞,之後對句子的相似度進行度量,計算每一句相對另一句的相似度得分,迭代傳播,直到誤差小於0.0001。再對上述得到的關鍵語句進行排序,便能得到想要的摘要。抽取式摘要主要考慮單詞詞頻,並沒有過多的語義信息,像“豬八戒”,“孫悟空”這樣的詞彙都會被獨立對待,無法建立文本段落中的完整語義信息。
(Text rank原理如上圖所示,根據句子的相似性進行排序打分。)
生成式文本摘要主要依靠深度神經網絡結構實現,2014年由Google Brain團隊提出的Sequence-to-Sequence序列,開啓了NLP中端到端網絡的火熱研究。Sequence-to-Sequence又稱爲編、解碼器(Encoder、Decoder)架構。其中Encoder、Decoder均由數層RNN/LSTM構成,Encoder負責把原文編碼爲一個向量C;Decoder負責從這個向量C中提取信息,獲取語義,生成文本摘要。
但是由於“長距離依賴”問題的存在,RNN到最後一個時間步輸入單詞的時候,已經丟失了相當一部分的信息。這時候編碼生成的語義向量C同樣也丟失了大量信息,就導致生成的摘要不夠準確。
Bahdanau等人在14年發表的論文《Neural Machine Translation by Jointly Learning to Align and Translate》中,第一次將Attention機制應用於NLP中。Attention機制是一種注意力(資源)分配機制,在某個特定時刻,總是重點關注跟它相關的內容,其他內容則進行選擇性忽視。就像下圖,在翻譯“Knowledge”時,只會關注“知識”.這樣的對齊能讓文本翻譯或者摘要生成更具針對性。
RNN/LSTM單元,由於每個詞是按順序輸入網絡的,所以會記錄文章的序列信息。因此,大部分的NLP任務,都是採用的RNN架構。但是這也限制了網絡訓練及摘要生成的速度,因爲RNN必須一個個輸入,一個個生成,無法並行計算。2016年Facebook AI Research(FAIR)發表了《A Convolutional Encoder Model for Neural Machine Translation》,對Encoder部分採用似乎不擅長處理序列信息的卷積網絡(CNN)來實現,結果在翻譯、摘要任務中,也達到了當年的最高水準;
2017年5月,還是FAIR,發佈了《Convolutional Sequence to Sequence Learning》,第一次實現了Encoder、Decoder都採用CNN單元,使得網絡在訓練階段,可以並行計算,效率進一步提升。同時引入了Multi-step Attention(多跳注意),相比之前只在最後一層生成翻譯時往回看,多跳注意使得Decoder階段生成每一層的語義向量時都往回看,進一步提升了準確度。同時還有一些其他的Trick:引入單詞的位置信息,殘差網絡,計算Attention時候對高層語義信息和低層細節信息,兼收並取等。最後在生成翻譯和摘要時,速度相比之前最快的網絡,提升了近9倍。同時在WMT-14英德、英法兩項的單模型訓練結果中,BLEU得分達到了25.16、40.46,其中英法翻譯也是迄今爲止的最高得分。
時隔一個月,17年6月,Google團隊發佈了名爲《Attention Is All You Need》的文章,即不用CNN和RNN單元,只用Self-Attention和Encoder-Decoder Attention,就完全實現了端到端的翻譯任務。並且在WMT-14英德、英法翻譯任務中,BLEU值達到了28.4和41.0的高分。因爲同樣可以並行計算,模型的訓練及生成速度也有所提升。Self-Attention相比於之前的模型更加關注句子的內部結構,也就是word-pairs的信息,附圖是論文中Attention可視化的結果,可以發現僅在源文端,模型便學習到了“making more difficult”的word-pairs信息。
同理對目標端,模型也會單獨學習句子的內部結構信息。之後利用Encoder-Decoder Attention建立源文和目標詞組、句子的對應關係。相比於FAIR 的卷積模型到很高層才能看到句子的完整信息,Self-Attention在第一層便巧妙地建立了每個詞和整個句子的聯繫,同時位置編碼採用三角函數的相對位置法表示,理論上可以泛化到訓練中未見過的更長長度句子的翻譯中。目前Self-Attention僅用在了翻譯任務中,但這樣的思想,在文本摘要自動生成的任務中,也是可以參照的。
(Google Transformer模型的拆解)
總結:
從傳統的Textrank抽取式,到深度學習中採用RNN、CNN單元處理,再引入Attention、Self-Attention、機器生成摘要的方式,這些跟人類思維越來越像,都建立在對整段句子的理解之上。與此同時生成摘要的效果,也常常讓我們驚豔。
但文本摘要自動生成依然還有很多難題,比如如果段落太長,那麼機器對段落的理解時間就要很長, 而過長的時間會導致機器對段落信息的記憶的損失。而且深度學習非常依賴有標籤的樣本,標註工作也是一筆非常大的開銷。
總的來說,文本摘要自動生成是個非常具有前景但也非常具有挑戰性的技術。
聯繫我們,關注圖鴨微信公衆號