無需搭建和訓練模型,87行代碼搞定文章摘要生成
曉查 編譯整理
量子位 出品 | 公眾號 QbitAI
在不想去讀長篇大論的時候,讓電腦幫助我們提煉文章的摘要,這簡直是懶癌患者福音,還能大大節約時間。
現在有人手把手教你如何用Python做到這一點,甚至都不要訓練模型,簡單易懂。
一名全棧工程師Praveen Dubey在Medium上分享了他的代碼。下面讓我們一起來看看他的思路吧。
提取摘要分幾步
Praveen Dubey首先面臨的是方法選擇的問題。通常生成文章摘要有兩種方法:抽象法、提取法。
抽象法基於語義理解選擇措辭,概括文章內容以生成新的較短文本。提取法則是通過選擇保留最重要的單詞子集,來總結文章。
作者選擇了提取法。相比於抽象法,這種方法不需要對文章進行深入的理解。
另外,提取法獲得的結果往往比抽象法更好,因為它是採用原文中的單詞,不像抽象法還存在自然語言生成的問題。
在文章中,作者使用無監督學習的方法,基於相似度矩陣,來生成排名來找到句子的相似性並對它們進行排名。這樣做的還有一個好處是,不需要使用項目前訓練和構建模型。
概率起來就是:輸入文章拆分成句子刪除停止詞建立相似度矩陣基於矩陣生成排名選擇前N個句子進行匯總。
安裝教程
接下來,將按照以上步驟創建屬於你自己的摘要生成器。
導入必要的軟體庫
從自然語言工具包NLTK中導入停止詞(stopwords),安裝numpy等依賴庫。
生成簡潔的句子
相似度矩陣
使用餘弦相似性來找到句子之間的相似性的地方。所謂餘弦相似性是兩個向量的夾角餘弦,以此作為向量之間相似性的度量。
生成匯總方法
方法將保持調用所有其他輔助函數來保持摘要pipeline的運行。
把以上代碼按順序匯總起來,就得到完整的代碼。
一次性減少2/3內容
本文作者對一段314詞的微軟新聞進行試驗,獲得了不到100詞的摘要,效果明顯。
如果你覺得縮減得還不夠,可以進一步處理,減少它的字元數。
作者在程序中使用了TextRank對句子進行排名,這是一種基於圖的通用NLP排名演算法。TextRank不依賴於任何訓練數據,可以處理任意文本。
此外,還有很多先進的技術可用於提取文本摘要。作者還提供了兩篇該領域的文章,如果你對這一話題感興趣,可以進一步深入學習。
傳送門
項目地址:
https://github.com/edubey/text-summarizer
文本摘要技術簡要概述:
https://arxiv.org/abs/1707.02268v3
自然語言生成的現狀調查:核心任務、應用和評估:
https://arxiv.org/abs/1703.09902v1
作者系網易新聞·網易號「各有態度」簽約作者
—完—
年度評選報名
加入社群
量子位AI社群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。
喜歡就點「好看」吧 !


※這個隱瞞了100多天的彩蛋,在聖誕節搞丟了一群開發者的飯碗
※Facebook開源新NLP框架:簡化部署流程,大規模應用也OK
TAG:量子位 |