背景

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")里设置的形状。

Python文本处理工具——TextRank相关推荐

  1. python文本分析库_8种Python文本处理工具集

    文本处理一般包括词性标注,句法分析,关键词提取,文本分类,情感分析等等,这是针对中文的,如果是对于英文来说,只需要基本的tokenize.本文为大家提供了以下这些工具包. 1.Jieba [结巴中文分 ...

  2. Python文本预处理:步骤、使用工具及示例

    作者 | Data Monster 译者 | Linstancy 编辑 | 一一 出品 | AI科技大本营(ID:rgznai100) 本文将讨论文本预处理的基本步骤,旨在将文本信息从人类语言转换为机 ...

  3. python 图形界面文本处理_python3.6 +tkinter GUI编程 实现界面化的文本处理工具

    一.背景: 1.工作中自己及同事在查数据库.测试接口时需要对一些字符串或json串作预处理,目前这些问题网上均有在线转换的工具,但很繁杂,可能需要打开几个网页窗口: 2.之前给妹子做的文本处理工具(h ...

  4. python爬虫自学笔记分析解密_python爬虫学习笔记——1 各种文本分析工具简介之汇总...

    此处只简单汇总一下各种文本工具名目,他们的详细使用参见具体帖子.本文主要参考<8种目前Python使用率最高的文本处理工具>一文0.SnowNLP包 用于中文文本的处理 1.Jieba 2 ...

  5. python 图形界面文本处理_python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)...

    更新: 2017.07.17 补充滚动条.win批处理拉起py 2017.08.13 新增自定义图标 一.背景: 1.工作中自己及同事在查数据库.测试接口时需要对一些字符串或json串作预处理,目前这 ...

  6. 基于PYTHON的超大文本分割工具

    "记事本"作为一款保存信息的载体,基本上每个网民都见过或使用过它.它不但读取方便,使用起来也是得心应手.不过,对于存放有超大数据的TXT文本,我们对它又爱又恨.爱它是因为我们的信息 ...

  7. python 中文分词工具

    python 中文分词工具 jieba,https://github.com/fxsjy/jieba jieba_fast,https://github.com/deepcs233/jieba_fas ...

  8. 『开发技术』Python中文分词工具SnowNLP教程

    介绍一个好用多功能的Python中文分词工具SnowNLP,全称Simplified Chinese Text Processing.在实现分词的同时,提供转换成拼音(Trie树实现的最大匹配)及繁体 ...

  9. Python中文分词工具大合集:安装、使用和测试

    转自:AINLP 这篇文章事实上整合了之前文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考. 首先介绍之前测试过的8款中文分词工具,这几款工具 ...

最新文章

  1. 如何使用netwokx进行复杂网络的中心性分析?
  2. 关于GPU-driver for linux的资料
  3. 利用PostMan 模拟上传/下载文件(亲测)
  4. BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
  5. JUnit 5 –基础
  6. 总结verilog产生随机数的$random和seed
  7. spring mvc学习(48):java判断系统是linux还是windows系统
  8. 计算机专业英语作业1,计算机专业英语作业1
  9. 发布你的程序包到Nuget
  10. 【缓存】Redis入门
  11. 怀旧服最新服务器塞卡尔,魔兽世界怀旧服:10个至今未开门的服务器!圣光服进度刚到20%!...
  12. MIT研制出空陆自动切换型无人机技术,构想多年的“飞行车”或将实
  13. java 错误页_《javaweb学习笔记2-jsp错误页设置》
  14. 2017蓝桥杯C++A:迷宫(DFS)
  15. shell脚本显示颜色的设置
  16. 计算机准考证要打印多大的纸,2020税务师准考证打印要求 应该用多大的纸打印?...
  17. Baxter学习笔记
  18. 技术岗找工作简历撰写方法
  19. 中国电信广东DNS服务器
  20. 短信验证码被盗刷了怎么办?

热门文章

  1. eth一张_千呼万唤的以太坊20到底启动了!你们据有32个ETH吗?
  2. EXCEL 按字符进行数据截取
  3. 免费u盘数据恢复软件有哪些?找个最适合你的!
  4. 2、无芯片RFID标签介绍
  5. C#之Image使用
  6. 解决 Vant中 输入框(Field)组件获取不到输入值
  7. Monkey测试—真机测试步骤
  8. 用JS写右下角烦人的弹窗小广告
  9. 微信公众平台开发之Java实现群发消息
  10. Schrodinger分子动力模拟软件与UltraLAB建模工作站配置探讨