天天看點

關鍵詞提取算法TextRank背景相關TF-IDF:思想具體實作: 代碼實作:

 用TextRank提取來提取關鍵詞,用PageRank的思想來解釋它:

  • 如果一個單詞出現在很多單詞後面的話,那麼說明這個單詞比較重要
  • 一個TextRank值很高的單詞後面跟着的一個單詞,那麼這個單詞的TextRank值會相應地是以而提高

背景相關TF-IDF:

僅僅從詞的統計資訊出發,而沒有充分考慮詞之間的語義資訊。現在本文将介紹一種考慮了相鄰詞的語義關系、基于圖排序的關鍵詞提取算法TextRank。 

思想

其思想非常簡單:通過詞之間的相鄰關系建構網絡,然後用PageRank疊代計算每個節點的rank值,排序rank值即可得到關鍵詞。PageRank本來是用來解決網頁排名的問題,網頁之間的連結關系即為圖的邊,疊代計算公式如下

關鍵詞提取算法TextRank背景相關TF-IDF:思想具體實作: 代碼實作:

網頁之間的連結關系可以用圖表示,那麼怎麼把一個句子(可以看作詞的序列)建構成圖呢?

TextRank将某一個詞與其前面的N個詞、以及後面的N個詞均具有圖相鄰關系(類似于N-gram文法模型)。 

具體實作:

設定一個長度為N的滑動視窗,所有在這個視窗之内的詞都視作詞結點的相鄰結點;則TextRank建構的詞圖為無向圖。下圖給出了由一個文檔建構的詞圖(去掉了停用詞并按詞性做了篩選)

關鍵詞提取算法TextRank背景相關TF-IDF:思想具體實作: 代碼實作:

考慮到不同詞對可能有不同的共現(co-occurrence),TextRank将共現作為無向圖邊的權值。那麼,TextRank的疊代計算公式如下: 

關鍵詞提取算法TextRank背景相關TF-IDF:思想具體實作: 代碼實作:

 代碼實作:

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# Author: Jia ShiLin

from jieba import analyse

# 引入關鍵詞提取接口
textrank = analyse.textrank  #

# 原始文本
path = 'TextRank.txt'
with open(path, ) as f:
    text = str(f.read())
    print('\nkeywords by textrank:')  # 基于TextRank算法進行關鍵詞提取


    #可以到定義的系統textrank.py原函數中修改默然值,檢視值,topK表示最高多少個詞了列出,allowPOS表示允許保留的詞性詞
    ##  def textrank(self, sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v'), withFlag=False):
    keywords = textrank(text,topK=10,withWeight=True,allowPOS=('n','a','ns'))

    #輸出提取出的關鍵詞 f
    words = [keywords for keywords,w in keywords if w >0.2]
    print(' '.join(words)+'\n')
           

refrence:

https://www.cnblogs.com/en-heng/p/6626210.html

NLP

繼續閱讀