赞
踩
TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)。
TextRank4ZH是针对中文文本的TextRank算法的python算法实现。
依赖
pip install textrank4zh
将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。
由此可以得到句子的集合和单词的集合。
每个单词作为pagerank中的一个节点。设定窗口大小为k,假设一个句子依次由下面的单词组成:
w1, w2, w3, w4, w5, ..., wn
w1, w2, ..., wk
、w2, w3, ...,wk+1
、w3, w4, ...,wk+2
等都是一个窗口。在一个窗口中的任两个单词对应的节点之间存在一个无向无权的边。
基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。
参照关键词提取提取出若干关键词。若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键词组。
例如,在一篇介绍支持向量机
的文章中,可以找到关键词支持
、向量
、机
,通过关键词组提取,可以得到支持向量机
。
将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。
通过 pagerank 算法计算得到的重要性最高的若干句子可以当作摘要。
类TextRank4Keyword、TextRank4Sentence在处理一段文本时会将文本拆分成4种格式:
#-*- encoding:utf-8 -*- from __future__ import print_function import sys import codecs from textrank4zh import TextRank4Keyword, TextRank4Sentence try: reload(sys) sys.setdefaultencoding('utf-8') except: pass text = codecs.open('../test/doc/01.txt', 'r', 'utf-8').read() tr4w = TextRank4Keyword() # py2中text必须是utf8编码的str或者unicode对象,py3中必须是utf8编码的bytes或者str对象 tr4w.analyze(text=text, lower=True, window=2) print('\n-- 关键词:' ) for item in tr4w.get_keywords(20, word_min_len=1): print(item.word, item.weight) print('\n-- 关键短语:' ) for phrase in tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2): print(phrase) print('\n-- sentences:') for s in tr4w.sentences: print(s) print('\n-- words_no_filter') for words in tr4w.words_no_filter: print('/'.join(words)) print('\n-- words_no_stop_words') for words in tr4w.words_no_stop_words: print('/'.join(words)) print('\n-- words_all_filters') for words in tr4w.words_all_filters: print('/'.join(words)) tr4s = TextRank4Sentence() tr4s.analyze(text=text, lower=True, source = 'all_filters') print( '\n-- 摘要:' ) for item in tr4s.get_key_sentences(num=3): # index是语句在文本中位置,weight是权重 print(item.index, item.weight, item.sentence)
报错1
AttributeError: module ‘networkx’ has no attribute ‘from_numpy_matrix’
使用 networkx 3.0 及以上版本,可能会报这个错误;暂时可将版本降低到 1.9.1。
pip3 install networkx==1.9.1
报错2
ImportError: cannot import name ‘escape’ from ‘cgi’ (/Users/xx/miniconda3/lib/python3.8/cgi.py)
解决方法:修改文件
/Users/xx/miniconda3/lib/python3.8/site-packages/networkx/readwrite/gml.py
将
from cgi import escape
替换为
from html import escape
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。