Python文本处理工具——TextRank

article/2025/8/28 14:42:06

背景

TextRank是用与从文本中提取关键词的算法,它采用了PageRank算法,原始的论文在这里。Github地址。

这个工具使用POS( part-of-speech tagging : 词性标注 )然后抽取名词,这种方法对于关键词提取独具特色。

注意:

  • 先安装NLTK再使用这个工具。
  • NLTK版本要求3.2.1以上。

下载github上的文件

ls
 驱动器 G 中的卷是 项目&工程卷的序列号是 E272-EC3DG:\CSDN_blog\textrank 的目录2016/06/19  下午 05:01    <DIR>          .
2016/06/19  下午 05:01    <DIR>          ..
2016/06/19  下午 04:30    <DIR>          .ipynb_checkpoints
2016/06/19  下午 05:00             1,406 Python文本处理工具——TextRank.ipynb
2016/06/19  下午 05:01    <DIR>          textrank-master1 个文件          1,406 字节4 个目录 69,318,959,104 可用字节
cd textrank-master/
G:\CSDN_blog\textrank\textrank-master
ls
 驱动器 G 中的卷是 项目&工程卷的序列号是 E272-EC3DG:\CSDN_blog\textrank\textrank-master 的目录2016/06/19  下午 05:01    <DIR>          .
2016/06/19  下午 05:01    <DIR>          ..
2016/06/19  下午 05:01    <DIR>          candidates
2016/06/19  下午 05:01    <DIR>          conferences
2016/04/26  下午 11:23             2,212 README.md
2016/04/26  下午 11:23             8,884 textrank.py2 个文件         11,096 字节4 个目录 69,318,959,104 可用字节

在textrank-master文件夹里有两个文件夹,分别是candidates和conferences。candidates是选举的演讲文件集(部分),conferences是nlp会议的论文集(部分)。

TextRank使用

python textrank.py folder

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> python textrank.py conferences
Traceback (most recent call last):File "textrank.py", line 2, in <module>import langid
ImportError: No module named langid

运行程序的时候发现没有安装Python langid包。这个包的功能是识别语言的工具。

langid.py is a standalone Language Identification (LangID) tool.

pip 安装langid

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> pip install langid
Collecting langidDownloading langid-1.1.6.tar.gz (1.9MB)100% |████████████████████████████████| 1.9MB 339kB/s
Requirement already satisfied (use --upgrade to upgrade): numpy in c:\anaconda2\lib\site-packages (from langid)Building wheels for collected packages: langidRunning setup.py bdist_wheel for langid ... doneStored in directory: C:\Users\zang\AppData\Local\pip\Cache\wheels\6a\7b\7f\5d73ed7227652857010410aebdb279e46b78a6586493c2de6b
Successfully built langid
Installing collected packages: langid
Successfully installed langid-1.1.6

再次运行TextRank

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> python textrank.py conferences
Traceback (most recent call last):File "textrank.py", line 14, in <module>
    tagger = nltk.tag.perceptron.PerceptronTagger()File "C:\Anaconda2\lib\site-packages\nltk\tag\perceptron.py", line 140, in __init__
    AP_MODEL_LOC = str(find('taggers/averaged_perceptron_tagger/'+PICKLE))File "C:\Anaconda2\lib\site-packages\nltk\data.py", line 641, in find
    raise LookupError(resource_not_found)
LookupError:
**********************************************************************Resource u'taggers/averaged_perceptron_tagger/averaged_perceptron_tagger.pickle' not found.  Please use the NLTK Downloader toobtain the resource:  >>> nltk.download()Searched in:
    - 'C:\\Users\\zang/nltk_data'
    - 'C:\\nltk_data'
    - 'D:\\nltk_data'
    - 'E:\\nltk_data'
    - 'C:\\Anaconda2\\nltk_data'
    - 'C:\\Anaconda2\\lib\\nltk_data'
    - 'C:\\Users\\zang\\AppData\\Roaming\\nltk_data'
**********************************************************************

unfortunately!!! 我本地没有taggers/averaged_perceptron_tagger/averaged_perceptron_tagger.pickle这个文件,打开本地nltk_data,发现还真是,只有下载了。

Resource u’taggers/averaged_perceptron_tagger/averaged_perceptro
n_tagger.pickle’ not found.

nltk下载POS模型文件

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> python
Python 2.7.11 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:58:36) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://anaconda.org
>>> import nltk
>>> nltk.download()
showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
True
>>> quit()

下载过程中会有个弹窗,要自己选择下载的文件,在Models里第一个averaged_perceptron_tagger,然后点击下载,如果网络环境比较好的话,很快就可以下载完成了。

再次运行TextRank

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> python textrank.py conferences
Traceback (most recent call last):File "textrank.py", line 14, in <module>tagger = nltk.tag.perceptron.PerceptronTagger()File "C:\Anaconda2\lib\site-packages\nltk\tag\perceptron.py", line 141, in __init__self.load(AP_MODEL_LOC)File "C:\Anaconda2\lib\site-packages\nltk\tag\perceptron.py", line 209, in loadself.model.weights, self.tagdict, self.classes = load(loc)File "C:\Anaconda2\lib\site-packages\nltk\data.py", line 801, in loadopened_resource = _open(resource_url)File "C:\Anaconda2\lib\site-packages\nltk\data.py", line 924, in _openreturn urlopen(resource_url)File "C:\Anaconda2\lib\urllib2.py", line 154, in urlopenreturn opener.open(url, data, timeout)File "C:\Anaconda2\lib\urllib2.py", line 431, in openresponse = self._open(req, data)File "C:\Anaconda2\lib\urllib2.py", line 454, in _open'unknown_open', req)File "C:\Anaconda2\lib\urllib2.py", line 409, in _call_chainresult = func(*args)File "C:\Anaconda2\lib\urllib2.py", line 1265, in unknown_openraise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: d>

又报错了….

仔细看下报错的信息,猜测是nltk版本低了,更新nltk。

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> pip install nltk --upgrade
Collecting nltkDownloading nltk-3.2.1.tar.gz (1.1MB)100% |████████████████████████████████| 1.1MB 423kB/s
Building wheels for collected packages: nltkRunning setup.py bdist_wheel for nltk ... doneStored in directory: C:\Users\zang\AppData\Local\pip\Cache\wheels\55\0b\ce\960dcdaec7c9af5b1f81d471a90c8dae88374386efe6e54a50
Successfully built nltk
Installing collected packages: nltkFound existing installation: nltk 3.2Uninstalling nltk-3.2:Successfully uninstalled nltk-3.2
Successfully installed nltk-3.2.1

继续运行TextRank

zang@ZANG-PC G:\CSDN_blog\textrank\textrank-master
> python textrank.py conferences
Reading articles/acl15
Reading articles/acl16short
Reading articles/emnlp15
Reading articles/naacl2016
Reading articles/naacl2016long
Reading articles/naacl2016short
ls
 驱动器 G 中的卷是 项目&工程卷的序列号是 E272-EC3DG:\CSDN_blog\textrank\textrank-master 的目录2016/06/19  下午 05:13    <DIR>          .
2016/06/19  下午 05:13    <DIR>          ..
2016/06/19  下午 05:01    <DIR>          candidates
2016/06/19  下午 05:01    <DIR>          conferences
2016/06/19  下午 05:14    <DIR>          keywords-conferences-textrank
2016/04/26  下午 11:23             2,212 README.md
2016/04/26  下午 11:23             8,884 textrank.py2 个文件         11,096 字节5 个目录 69,318,905,856 可用字节

成功了!!啦啦啦。keywords-conferences-textrank就是运行结果。

cd keywords-conferences-textrank
G:\CSDN_blog\textrank\textrank-master\keywords-conferences-textrank
ls
 驱动器 G 中的卷是 项目&工程卷的序列号是 E272-EC3DG:\CSDN_blog\textrank\textrank-master\keywords-conferences-textrank 的目录2016/06/19  下午 05:14    <DIR>          .
2016/06/19  下午 05:14    <DIR>          ..
2016/06/19  下午 05:14            10,787 acl15
2016/06/19  下午 05:14             3,101 acl16short
2016/06/19  下午 05:14            10,964 emnlp15
2016/06/19  下午 05:14             6,045 naacl2016
2016/06/19  下午 05:14             2,997 naacl2016long
2016/06/19  下午 05:14             2,225 naacl2016short6 个文件         36,119 字节2 个目录 69,318,901,760 可用字节

打开acl15:

learning:0.0153
neural:0.0122
word:0.0122
semantic:0.0118
parsing:0.0094
language:0.0093
representation:0.0086
model:0.0082
network:0.0079
via:0.0076
translation:0.0075
…..

对应的是关键词和重要程度打分。

词云可视化结果

cd textrank-master/
G:\CSDN_blog\textrank\textrank-master
from os import path
from scipy.misc import imread
import matplotlib.pyplot as pltfrom wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
%matplotlib inlinetext = open('./keywords-conferences-textrank/acl15')
word_scores_list = []
for line in text:line = line.strip()word,score = line.split(":")word_scores_list.append((word,int(float(score)*10000)))
# read the mask / color image
# taken from http://jirkavinse.deviantart.com/art/quot-Real-Life-quot-Alice-282261010
acl_coloring = imread("acl1.png")wc = WordCloud(background_color="white",mask=acl_coloring,stopwords=STOPWORDS.add("said"),max_font_size=40, random_state=42)
#wc.generate(text)
wc.generate_from_frequencies(word_scores_list)
image_colors = ImageColorGenerator(acl_coloring)plt.imshow(wc)
plt.axis("off")
plt.figure()
# recolor wordcloud and show
# we could also give color_func=image_colors directly in the constructor
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray)
plt.axis("off")
plt.show()
wc.to_file("./keywords-conferences-textrank/acl15.png")

这里写图片描述



这里写图片描述


这里写图片描述


最后一张绿色的椭圆就是acl_coloring = imread("acl1.png")里设置的形状。


http://chatgpt.dhexx.cn/article/EHCHwSZS.shtml

相关文章

TextRank学习笔记

TextRank起源与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法&#xff0c;这是一个用作网页重要度排序的算法。 并且&#xff0c;这个算法也是基于图的&#xff0c;每个网页可以看作是一个图中的结点&#xff0c;如果网页A能够跳转到网页B&#xff0c;那么则有一条A-…

【TextRank】关键词提取 算法原理 公式推导 源码分析

1.前言 在介绍TextRank前&#xff0c;我想先给大家介绍下PageRank&#xff0c;实质上个人认为可以把TextRank当做PageRank2.0。 谷歌的两位创始人的佩奇和布林&#xff0c;借鉴了学术界评判学术论文重要性的通用方法&#xff0c;“那就是看论文的引用次数”。由此想到网页的重要…

NLP - 关键词提取 - TextRank

NLP - 关键词提取 - TextRank 一、TextRank介绍二、PageRank介绍三、PageRank计算过程四、关键词提取任务 一、TextRank介绍 TextRank算法则可以脱离语料库的基础&#xff0c;仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本…

textrank算法原理与提取关键词、自动提取摘要PYTHON

首先介绍原理与概念 TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法&#xff08;其原理在本文在下面&#xff09;, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本…

TextRank算法总结

TextRank算法总结 最近在调研自动生成文本方面的内容&#xff0c;突然想到了自动文摘里的textRank&#xff0c;这里我将参考了一些资料并对这些知识点进行了整理总结&#xff0c;初步总结如下&#xff1a; 目录 PageRank简介基于TextRank的关键词提取基于TextRank的关键词短语提…

TextRank算法实践

TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法&#xff0c;PageRank算法主要用于给互联网网页排序&#xff0c;根据网页之间的跳转来构造一个初始权重矩阵&#xff08;转移矩阵&#xff09;&#xff0c;默认每个网页质量都是1 使用一个向量v&…

TextRank算法的基本原理及textrank4zh使用实例

TextRank算法是一种文本排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它能够从一个给定的文本中提取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法提取出该文本的关键句。其提出论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[…

TextRank算法

TextRank算法理解 TextRank算法 TextRank算法基于PageRank&#xff0c;用于为文本生成关键字和摘要。其论文是&#xff1a; Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004. 先从PageRank讲起 在浅入浅出…

TextRank

TextRank与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法&#xff0c;这是一个用作网页重要度排序的算法。 这个算法是基于图的&#xff0c;每个网页可以看作是一个图中的结点&#xff0c;如果网页A能够跳转到网页B&#xff0c;那么则有一条A->B的有向边。这样&am…

TextRank算法介绍及实现

目录 1、PageRank算法 2、TextRank算法 &#xff08;1&#xff09;关键词抽取&#xff08;keyword extraction&#xff09; &#xff08;2&#xff09;关键短语抽取&#xff08;keyphrase extration&#xff09; &#xff08;3&#xff09;关键句抽取&#xff08;sentence…

TextRank原理解释

目录 1. PageRank原理 2. TextRank &#xff08;1&#xff09;TextRank需要满足的条件 &#xff08;2&#xff09;TextRank思想的简要理解 &#xff08;3&#xff09;TextRank原理及例子讲解 1. PageRank原理 在这里可以看我转载的PageRank原理链接&#xff0c;比较详细h…

TextRank算法原理简析、代码实现

前言—PageRank 注&#xff1a;PageRank原理另行查询 在介绍TextRank前&#xff0c;我想先给大家介绍下PageRank&#xff0c;实质上个人认为可以把TextRank当做PageRank2.0。   谷歌的两位创始人的佩奇和布林&#xff0c;借鉴了学术界评判学术论文重要性的通用方法&#xff0…

NLP学习笔记——TextRank算法

一、算法简介 TextRank算法是一种基于图的排序算法&#xff0c;由谷歌的网页重要性排序算法PageRank算法改进而来&#xff0c;主要应用有关键词提取、文本摘要抽取等。该算法的主要思想是&#xff1a;把文档中的词&#xff08;句&#xff09;看成一个网络&#xff0c;词&#…

机器学习——逻辑回归常见面试题整理

逻辑回归 1.介绍 逻辑回归假设数据服从伯努利分布&#xff0c;通过极大化似然函数的方法&#xff0c;运用梯队下降来求解参数&#xff0c;来达到将数据二分类的目的。 2.逻辑回归的损失函数和梯度下降参数迭代方法 逻辑回归的损失函数是它的极大似然函数 参数迭代方法 3.逻…

面试精选逻辑推理题总结

类似的杀人游戏 1、500张骨牌整齐地排成一行&#xff0c;按顺序编号为1、2、3、……、499、500。第一次拿走所有奇数位置上的骨牌&#xff0c;第二次再从剩余骨牌中拿走奇数位置上的骨牌&#xff0c;以此类推。请问最后剩下的一张骨牌的编号是&#xff1f;&#xff08;256&…

IT科技企业逻辑思维面试题

逻辑思维面试题 一、假设有一个池塘&#xff0c;里面有无穷多的水。现有2个空水壶&#xff0c;容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。【请描述操作过程】 答&#xff1a;&#xff08;1&#xff09;先用容积为6升的水壶装满水&#xff1b; &#…

面试逻辑题分享--字母数字映射关系推算题

越来越多的朋友可能会发现&#xff0c;在现在找工作的时候&#xff0c;经常会遇到一些笔试题&#xff0c;而且其中不乏有逻辑题&#xff0c;企业希望通过一些逻辑题的测试&#xff0c;来判断求职者的一个逻辑思维能力。今晚在群里看到有小伙伴发了一个题&#xff0c;一时兴起&a…

前端_逻辑题 1

题目一 5只鸡5天能下5个蛋&#xff0c;100天下100个蛋需要多少只鸡&#xff1f; 1只鸡5天能下1个蛋&#xff0c;1只鸡100天能下20个蛋&#xff0c;所以100天下100个蛋需要5只鸡。 题目二 两个盲人都各自买了一对黑袜和一对白袜&#xff0c;四对袜子的布质、大小完全相同&#…

华为软件测试笔试真题之变态逻辑推理题【二】华为爆火面试题

“一头牛重800公斤&#xff0c;一座桥承重700公斤&#xff0c;问牛怎么过桥&#xff1f;” 这个问题在知乎上被浏览过13672927次&#xff0c;火热程度可见一斑。 据说这是华为的面试题&#xff0c;看似不合理的题目和国际闻名的大厂&#xff0c;极大的勾起了人们的兴趣。 不像面…

二、逻辑回归LR面试题总结

1. 简单介绍一下逻辑回归&#xff1f; 逻辑回归主要用来解决分类问题&#xff0c;线性回归的结果 Y Y Y带入一个非线性变换的Sigmoid函数中&#xff0c;得到 [ 0 , 1 ] [0,1] [0,1]之间取值范围的数 S S S&#xff0c; S S S可以把它看成是一个概率值&#xff0c;如果我们设置…