欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實(shí)現(xiàn)textrank關(guān)鍵詞提取

 更新時間:2018年06月22日 14:06:36   作者:sparksnail  
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)textrank關(guān)鍵詞提取,具有一定的參考價值,感興趣的小伙伴們可以參考一下

用python寫了一個簡單版本的textrank,實(shí)現(xiàn)提取關(guān)鍵詞的功能。

import numpy as np 
import jieba 
import jieba.posseg as pseg 
 
class TextRank(object): 
   
  def __init__(self, sentence, window, alpha, iternum): 
    self.sentence = sentence 
    self.window = window 
    self.alpha = alpha 
    self.edge_dict = {} #記錄節(jié)點(diǎn)的邊連接字典 
    self.iternum = iternum#迭代次數(shù) 
 
  #對句子進(jìn)行分詞 
  def cutSentence(self): 
    jieba.load_userdict('user_dict.txt') 
    tag_filter = ['a','d','n','v'] 
    seg_result = pseg.cut(self.sentence) 
    self.word_list = [s.word for s in seg_result if s.flag in tag_filter] 
    print(self.word_list) 
 
  #根據(jù)窗口,構(gòu)建每個節(jié)點(diǎn)的相鄰節(jié)點(diǎn),返回邊的集合 
  def createNodes(self): 
    tmp_list = [] 
    word_list_len = len(self.word_list) 
    for index, word in enumerate(self.word_list): 
      if word not in self.edge_dict.keys(): 
        tmp_list.append(word) 
        tmp_set = set() 
        left = index - self.window + 1#窗口左邊界 
        right = index + self.window#窗口右邊界 
        if left < 0: left = 0 
        if right >= word_list_len: right = word_list_len 
        for i in range(left, right): 
          if i == index: 
            continue 
          tmp_set.add(self.word_list[i]) 
        self.edge_dict[word] = tmp_set 
 
  #根據(jù)邊的相連關(guān)系,構(gòu)建矩陣 
  def createMatrix(self): 
    self.matrix = np.zeros([len(set(self.word_list)), len(set(self.word_list))]) 
    self.word_index = {}#記錄詞的index 
    self.index_dict = {}#記錄節(jié)點(diǎn)index對應(yīng)的詞 
 
    for i, v in enumerate(set(self.word_list)): 
      self.word_index[v] = i 
      self.index_dict[i] = v 
    for key in self.edge_dict.keys(): 
      for w in self.edge_dict[key]: 
        self.matrix[self.word_index[key]][self.word_index[w]] = 1 
        self.matrix[self.word_index[w]][self.word_index[key]] = 1 
    #歸一化 
    for j in range(self.matrix.shape[1]): 
      sum = 0 
      for i in range(self.matrix.shape[0]): 
        sum += self.matrix[i][j] 
      for i in range(self.matrix.shape[0]): 
        self.matrix[i][j] /= sum 
 
  #根據(jù)textrank公式計算權(quán)重 
  def calPR(self): 
    self.PR = np.ones([len(set(self.word_list)), 1]) 
    for i in range(self.iternum): 
      self.PR = (1 - self.alpha) + self.alpha * np.dot(self.matrix, self.PR) 
 
  #輸出詞和相應(yīng)的權(quán)重 
  def printResult(self): 
    word_pr = {} 
    for i in range(len(self.PR)): 
      word_pr[self.index_dict[i]] = self.PR[i][0] 
    res = sorted(word_pr.items(), key = lambda x : x[1], reverse=True) 
    print(res) 
 
if __name__ == '__main__': 
  s = '程序員(英文Programmer)是從事程序開發(fā)、維護(hù)的專業(yè)人員。一般將程序員分為程序設(shè)計人員和程序編碼人員,但兩者的界限并不非常清楚,特別是在中國。軟件從業(yè)人員分為初級程序員、高級程序員、系統(tǒng)分析員和項(xiàng)目經(jīng)理四大類。' 
  tr = TextRank(s, 3, 0.85, 700) 
  tr.cutSentence() 
  tr.createNodes() 
  tr.createMatrix() 
  tr.calPR() 
  tr.printResult() 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中復(fù)數(shù)的共軛復(fù)數(shù)知識點(diǎn)總結(jié)

    python中復(fù)數(shù)的共軛復(fù)數(shù)知識點(diǎn)總結(jié)

    在本篇內(nèi)容里小編給大家整理的是關(guān)于python中復(fù)數(shù)的共軛復(fù)數(shù)知識點(diǎn)總結(jié),有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python標(biāo)準(zhǔn)庫之sqlite3使用實(shí)例

    Python標(biāo)準(zhǔn)庫之sqlite3使用實(shí)例

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之sqlite3使用實(shí)例,本文講解了創(chuàng)建數(shù)據(jù)庫、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新與刪除數(shù)據(jù)操作實(shí)例,需要的朋友可以參考下
    2014-11-11
  • Python中作用域的規(guī)則與應(yīng)用

    Python中作用域的規(guī)則與應(yīng)用

    在?Python?編程中,作用域(Scope)?是指一個變量可以被訪問和引用的范圍,這篇文章主要為大家介紹了Python中作用域的規(guī)則與應(yīng)用的相關(guān)知識,需要的可以了解下
    2025-01-01
  • python內(nèi)置數(shù)據(jù)類型之列表操作

    python內(nèi)置數(shù)據(jù)類型之列表操作

    數(shù)據(jù)類型是一種值的集合以及定義在這種值上的一組操作。這篇文章主要介紹了python內(nèi)置數(shù)據(jù)類型之列表的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Python利用py-redis實(shí)現(xiàn)分布式鎖

    Python利用py-redis實(shí)現(xiàn)分布式鎖

    隨著業(yè)務(wù)的增長,后端技術(shù)架構(gòu)會慢慢的從單體服務(wù)轉(zhuǎn)向多服務(wù)或者微服務(wù)的分布式架構(gòu),本文主要為大家介紹了如何利用Py-Redis實(shí)現(xiàn)簡單的分布式鎖,需要的可以參考一下
    2023-08-08
  • python 實(shí)現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法

    python 實(shí)現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法

    今天小編就為大家分享一篇python 實(shí)現(xiàn)批量xls文件轉(zhuǎn)csv文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對比

    關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對比

    這篇文章主要介紹了關(guān)于numpy.polyfit()與Stats.linregress()方法最小二乘近似擬合斜率對比,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Python之np.where()如何替換缺失值

    Python之np.where()如何替換缺失值

    這篇文章主要介紹了Python中的np.where()如何替換缺失值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python?超簡潔且詳細(xì)爬取西瓜視頻案例

    Python?超簡潔且詳細(xì)爬取西瓜視頻案例

    今天給大家?guī)硪黄廊∥鞴弦曨l的小教程,很簡單的幾十行代碼就可以實(shí)現(xiàn)了,每一段代碼都詳細(xì)說明了用途,看完你就能夠自己動手寫,感興趣的同學(xué)快來跟著小編往下看吧
    2021-11-11
  • python db類用法說明

    python db類用法說明

    這篇文章主要介紹了python db類用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論