python如何实现textrank关键词提取

  介绍

这篇文章主要介绍python如何实现textrank关键词提取,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

import  numpy  as  np    import  jieba    import  jieba.posseg  as  pseg    ,   class  TextRank(对象):   ,,   def 才能;__init__(自我,,句子,,窗口,α,iternum):,   ,,,self.sentence =, sentence    ,,,self.window =, window    ,,,self.alpha =, alpha    ,,,self.edge_dict =,{}, #记录节点的边连接字典,   ,,,self.iternum =, iternum #迭代次数,   ,   #才能对句子进行分词,   def 才能cutSentence(自我):,   ,,,jieba.load_userdict (& # 39; user_dict.txt& # 39;),   ,,,tag_filter =,(& # 39;一个# 39;& # 39;d # 39;, & # 39; n # 39;, & # 39; v # 39;],   ,,,seg_result =, pseg.cut (self.sentence),   ,,,self.word_list =, (s.word  for  s 拷贝seg_result  if  s.flag 拷贝tag_filter),   ,,,印刷(self.word_list),   ,   #才能根据窗口,构建每个节点的相邻节点,返回边的集合,   def 才能createNodes(自我):,   ,,,tmp_list =, [],   ,,,word_list_len =, len (self.word_list),   ,,,for 指数,word 列举(self.word_list):拷贝,   ,,,,,if  word  not 拷贝self.edge_dict.keys ():,   ,,,,,,,tmp_list.append(词),   ,,,,,,,tmp_set =,设置(),   ,,,,,,,left =, index 作用;self.window  +, 1 #窗口左边界,   ,,,,,,,right =, index  +, self.window #窗口右边界,   ,,,,,,,if  left  & lt;, 0:, left =, 0,   ,,,,,,,if  right 祝辞=,word_list_len:, right =, word_list_len    ,,,,,,,for 小姐:拷贝范围(左,右):,   ,,,,,,,,,if 小姐:==,指数:,   ,,,,,,,,,,,continue    ,,,,,,,,,tmp_set.add (self.word_list[我]),   ,,,,,,,self.edge_dict[词],=,tmp_set    ,   #才能根据边的相连关系,构建矩阵,   def 才能createMatrix(自我):,   ,,,self.matrix =, np.zeros ((len(设置(self.word_list)), len(设置(self.word_list)))),   ,,,self.word_index =,{} #记录词的index    ,,,self.index_dict =,{} #记录节点指数对应的词,   ,   ,,,for 我,v 列举(设置(self.word_list)):拷贝,   ,,,,,self.word_index [v],=,小姐:   ,,,,,self.index_dict[我],=,v    ,,,for  key 拷贝self.edge_dict.keys ():,   ,,,,,for  w 拷贝self.edge_dict(例子):,   ,,,,,,,self.matrix [self.word_index[主要]][self.word_index [w]],=, 1,   ,,,,,,,self.matrix [self.word_index [w]] [self.word_index[主要]],=,1,   ,,,#归一化,   ,,,for  j 拷贝范围(self.matrix.shape [1]):,   ,,,,,sum =, 0,   ,,,,,for 小姐:拷贝范围(self.matrix.shape [0]):,   ,,,,,,,sum  +=, self.matrix[我][j],   ,,,,,for 小姐:拷贝范围(self.matrix.shape [0]):,   ,,,,,,,self.matrix[我][j],/=, sum    ,   #才能根据textrank公式计算权重,   def 才能calPR(自我):,   ,,,self.PR =, np.ones ((len(设置(self.word_list)), 1]),   ,,,for 小姐:范围(self.iternum):拷贝,   ,,,,,self.PR =,(1,安康;self.alpha), +, self.alpha  *, np.dot (self.matrix, self.PR),   ,   #输才能出词和相应的权重,   def 才能printResult(自我):,   ,,,word_pr =, {},   ,,,for 小姐:范围(len (self.PR)):拷贝,   null   null   null   null   null   null   null   null   null   null   null   null

python如何实现textrank关键词提取