《Python數據挖掘》筆記(七) 自動化文本摘要

Python數據挖掘:概念、方法與實踐。Megan Squire著,姚軍譯,機械工業出版社,2017年。

筆記中有些內容直接引用原書。

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

文本摘要的目標是編寫一個能夠減小文本尺寸,同時保留其主要意義的程序。有個摘要機器人叫autotldr,創建於2011年,在Reddit上有獨立的用戶頁面。

在本章中,我們將學習:

a. 什麼是文本摘要,為什麼它很重要?

b. 我們如何從頭構建一個簡單的文本摘要?

c. 如何實現更精密的文本摘要系統並比較其效能?

7.1 什麼是自動化文本摘要

H.P.Luhn在1958年的論文《The automatic creation of literature abstracts》中描述了一種文本摘要方法:計算機讀取文章中的每個句子,提取頻繁出現的詞語,然後找出包含最多有效詞語的句子。這是本文摘要提煉方法的早期範例。

還有抽象摘要方法,試圖提取文本中的關鍵思路,將其重新打包成人類可讀的合成文本。

7.2 文本摘要工具

三種方法:簡單的基於NTLK的方法,基於Gensim的方法,稱為Sumy的Python摘要程序包。

7.2.1 使用NTLK的簡單文本摘要

以Luhn在《The automatic creation

of literature abstracts》中描述的方法為基礎,構造簡單的文本摘要程序。這個基本的提煉程序首先為文本樣本中的每個句子分詞,然後選擇出現最頻繁的詞語,排除不重要的詞語(稱為停用詞),最後找出包含重要詞語的句子。

Github代碼

python代碼中用到的模塊包括:tokenize.word_tokenize, tokenize.sent_tokenize,

probability.FreqDist, collections.stopwords。

7.2.2 使用Gensim的文本摘要

Gensim主題建模程序包包含了一種稍微複雜一些的文本摘要方法。Gensim尋找文本中重要句子的方法始於一個無向加權圖的構建,該圖中的節點是句子,節點之間的鏈接是句子相互之間相似性的計量。這種方法稱為TextRank,和用於網頁查找的PageRank相似。在TextRank中,相似性由兩個句子共享的常見詞法標記數量計量。為了避免像樸素Luhn方法中的給長句更多特權,TextRank考慮句子的長度,對相似性得分進行規格化。構建圖之後,提取具有最高權值的句子作為整個文本的代表性摘要。

代碼使用Gensim中的summarization庫。

7.2.3 使用Sumy的文本摘要

Sumy是一個內建多種演算法的成熟文本摘要庫。代碼展示了Sumy實現的4種不同文本摘要演算法:Luhn方法、TextRank方法、LSA(潛在語義分析Latent Semantic Analysis)方法、Edmundson方法。除了英語外,Sumy還有捷克語、法語、德語、葡萄牙語、斯洛伐克語和西班牙語的停用詞。

LSA技術建立一個矩陣,行代表詞語,列代表句子。行和列的交叉點的值是每個詞在每個句子中出現的次數。相似性確定方法是,首先從數學上簡化矩陣,然後比較簡化矩陣中向量角的餘弦,找出相似的行。

Edmundson與Luhn的主要差異在於,分析師可以注入某些詞語,作為與句子重要性高度相關的提示。指向重要句子的單詞例子稱為取正值的褒義詞,與此相反的是取負值的貶義詞,也就是對句子重要性有負面影響的詞語。無效詞則是對句子的重要性是中性(無關)的。在Sumy的Edmunson實現中,用戶必須配置褒義詞、貶義詞和無效詞列表。

7.3 小結

BrianZhang:《Python數據挖掘》筆記(一)擴展你的數據挖掘工具箱zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(二)關聯規則挖掘zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(三)實體匹配zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(四) 網路分析zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(五) 文本情緒分析zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(六) 文本中的命名實體識別zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(七) 自動化文本摘要zhuanlan.zhihu.com圖標BrianZhang:《Python數據挖掘》筆記(九)挖掘數據異常zhuanlan.zhihu.com圖標軟體開發之路zhuanlan.zhihu.com圖標
推薦閱讀:

用Matplotlib製作動畫
python的應該一個class放一個文件嗎?
Python · 樸素貝葉斯(零)· 簡介
有哪些大型公司在使用 Python?有哪些知名項目是主要由 Python 寫成的?

TAG:數據挖掘 | Python |