探索python textrank关键词提取功能

  • 时间:
  • 2565人关注

这篇文章主要为大家详细介绍了python实现textrank关键词提取,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,另外这篇文章主要知识点是关于python、textrank、关键词提取、Python的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

用python写了一个简单版本的textrank,实现提取关键词的功能。

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 = {} #记录节点的边连接字典 
    self.iternum = iternum#迭代次数 
 
  #对句子进行分词 
  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) 
 
  #根据窗口,构建每个节点的相邻节点,返回边的集合 
  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 
 
  #根据边的相连关系,构建矩阵 
  def createMatrix(self): 
    self.matrix = np.zeros([len(set(self.word_list)), len(set(self.word_list))]) 
    self.word_index = {}#记录词的index 
    self.index_dict = {}#记录节点index对应的词 
 
    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 
 
  #根据textrank公式计算权重 
  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) 
 
  #输出词和相应的权重 
  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)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。' 
  tr = TextRank(s, 3, 0.85, 700) 
  tr.cutSentence() 
  tr.createNodes() 
  tr.createMatrix() 
  tr.calPR() 
  tr.printResult() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


上一篇:python字符串和整数相互转换的实例分享

下一篇:如何在flask中使用before_request与after_request

相关内容

  • Python如何限制输出日志的大小

    这篇文章主要介绍了Python 限制输出日志的大小方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    05-06Python限制日志大小

    阅读更多
  • python实现可视化的MD5、sha256哈希加密小工具

    这篇文章主要介绍了详解python实现可视化的MD5、sha256哈希加密小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    04-07python MD5、sha256哈希加密

    阅读更多
  • Python gevent协程切换实现方法

    这篇文章主要介绍了Python gevent协程切换实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    04-07Python gevent协程切换

    阅读更多
  • python/golang实现循环链表的代码

    这篇文章主要介绍了python/golang如何实现循环链表,帮助大家更好的理解和学习循环链表的实现方法,感兴趣的朋友可以了解下

    04-07python/golang 循环链表

    阅读更多
  • 2020版Python学习路线图(附学习资料)

    这篇文章主要介绍了Python学习路线图(2020最新版),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    04-07Python学习路线图

    阅读更多
  • Python文本分析

    Python文本分析

    本书是Intel首席科学家撰写,全面系统阐释Python文本分析的相关基础知识、实用技术及实践,介绍了文本和语言语法、结构和语义的基础概念和高级概念等,欢迎下载

    大小:100.4 MBPython编程

    点击下载
  • Python数据分析与数据化运营

    <font color='#FF0000'>Python数据分析与数据化运营</font>

    (1)创作者是有10多年数据统计分析与数字化经营工作经验的大数据专家,在世界各国公司都工作中过,阅历丰富。 (2)创作者擅于小结和创作,善于共享,编写数据统计分析类畅销书3部。

    大小:31.96 MBPython数据

    点击下载
  • Python数据科学导论

    Python数据科学导论

    这是一本优秀的数据科学入门教材,全面、系统阐述计算机驱动的数据科学相关知识,将教会你如何培养大脑洞察连接的能力,如何以事实为依据分析演绎出结论,以及如何从过去的经历中汲取经验,欢迎下载

    大小:110.6 MBPython

    点击下载
  • Python入门经典

    Python入门经典

    大小:48.1 MBPython入门

    点击下载
  • Python神经网络编程

    Python神经网络编程

    这是一本自己动手用Python编写神经网络的力作,详细介绍了理解神经网络如何工作所必须的基础知识,并介绍了所需的微积分知识和树莓派知识,欢迎下载

    大小:11.5 MBPython编程

    点击下载
  • 从Python开始学编程

    从Python开始学编程

    本书以Python为样本,不仅介绍了编程的基本概念,还着重讲解了编程语言的范式(面向过程、面向对象、面向函数),并把编程语言的范式糅在Python 中,让读者不仅学会Python,未来在学习其他

    大小:10.5 MBPython编程

    点击下载
  • Python编程基础

    Python编程基础

    本书以任务为导向的编写模式,全面介绍了Python编程基础及其相关知识的应用,以及如何利用Python的知识解决部分实际问题

    大小:6 MBPython入门

    点击下载
  • Python数据分析与挖掘实战

    Python数据分析与挖掘实战

    10余名大数据挖掘行业杰出权威专家和科技人员,10多年大数据分析资询与执行工作经验结晶体。从大数据挖掘的运用来看,以电力工程、航空公司、诊疗、互联网技术、生产加工及其公共文化

    大小:46.8 MBPython

    点击下载
  • 11招玩转网络安全:用Python,更安全

    11招玩转网络安全:用Python,更安全

    大小:156.5 MB网络安全

    点击下载

学习笔记