第3篇:三分鐘熱情學NLP-關鍵詞提取TextRank算法
TextRank算法,借鑒了PageRank的思想,或者可以直接理解成:TextRank是PageRank的2.0版。
1、PageRank算法
谷歌的2位創(chuàng)始人佩奇和布林,借鑒了評判論文重要性的方法(學術界,如果1篇論文被引用得越多,就會認為該論文越重要)來評價網頁的重要性,概況來說就是2點:
1、要數(shù)量。某個網頁被越多網頁鏈接的話,說明這個網頁越重要,其對應的PageRank值越高;
2、要質量。被PageRank值較高的網頁A鏈接的網頁B,則被鏈接的這個網頁B的PageRank值也會相應提高;
注:PageRank值,簡稱PR值;
如下圖所示(圖片來源https://www.cnblogs.com/Luv-GEM/p/10884493.html)


2、TextRank算法
通過把文本分割成若干組成單元(如:句子)并建立圖模型, 利用投票機制對文本中的重要成分進行排序,可實現(xiàn)利用單篇文檔本身的信息進行關鍵詞提取。
步驟包括:
1、對文本進行切割,按照完整的句子進行切割;
2、對于每個句子進行分詞和詞性標注,去掉停用詞,保留名詞、動詞、形容詞等;
3、計算詞向量;
4、將詞向量合并為句子的句向量表示;
5、計算句向量之前的相似性;計算轉移概率矩陣,用于句子的TenxRank計算;
6、按照TextRank值進行排序;
7、取排名靠前的句子作為摘要;
如下圖所示(圖片來源:https://zhuanlan.zhihu.com/p/55270310)

3、TextRank算法實戰(zhàn)
本部分以Jieba分詞下的TextRank進行實戰(zhàn),摘選一段jieba的git上的對jieba.analyse.textrank的參數(shù)說明。
jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默認過濾詞性。
輸入
import jieba
import jieba.analyse
s = "此外,公司擬對全資子公司吉林歐亞置業(yè)有限公司增資4.3億元,增資后,吉林歐亞置業(yè)注冊資本由7000萬元增加到5億元。吉林歐亞置業(yè)主要經營范圍為房地產開發(fā)及百貨零售等業(yè)務。目前在建吉林歐亞城市商業(yè)綜合體項目。2013年,實現(xiàn)營業(yè)收入0萬元,實現(xiàn)凈利潤-139.13萬元。"
for x, w in jieba.analyse.textrank(s, withWeight=True):
print('%s %s' % (x, w))
輸出
吉林 1.0
歐亞 0.9966893354178172
置業(yè) 0.6434360313092776
實現(xiàn) 0.5898606692859626
收入 0.43677859947991454
增資 0.4099900531283276
子公司 0.35678295947672795
城市 0.34971383667403655
商業(yè) 0.34817220716026936
業(yè)務 0.3092230992619838
在建 0.3077929164033088
營業(yè) 0.3035777049319588
全資 0.303540981053475
綜合體 0.29580869172394825
注冊資本 0.29000519464085045
有限公司 0.2807830798576574
零售 0.27883620861218145
百貨 0.2781657628445476
開發(fā) 0.2693488779295851
經營范圍 0.2642762173558316