Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)
一、各库功能说明
pdfminer----用于读取pdf文件的内容,python3安装pdfminer3k
jieba----用于中文分词
wordcloud----用于生成词云
matplotlib----用于将词云可视化
这几个库的顺序也对应程序的顺序:
生使用pdfminer读取pdf文件的内容,然后使用jieba对内容进行中文分词,再然后使用wordcloud基于分词生成词云,最后使用matplotlib将词云可视化
二、程序源码
from urllib.request import urlopen
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import process_pdf, PDFResourceManager
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
from io import StringIO class MyWordCloud():
def __init__(self):
pass #此函数用于读取和返回pdf文件的内容
def getPdfText(self,pdf_url):
pdf_file_obj = urlopen(pdf_url) pdf_rm = PDFResourceManager()
ret_str = StringIO()
lap = LAParams()
tc = TextConverter(pdf_rm, ret_str, laparams=lap) process_pdf(pdf_rm, tc, pdf_file_obj)
tc.close()
pdf_text = ret_str.getvalue()
ret_str.close()
return pdf_text def genWordCloud(self,pdf_url):
pdf_text = self.getPdfText(pdf_url) # WordCloud(按英文习惯)以空格分词,中文不用空格所以WordCloud不能正确对中文进行分词
# 为了使用WordCloud我们就需要先自己自己想办法完成分词,并将所有分词以空格隔开
# 我们的方法是先用结巴生成中文序列,然后使用join方法使用空格拼接所有序列
jieba_cut_seq = jieba.cut(pdf_text)
pdf_cut_text = " ".join(jieba_cut_seq) # 默认字体不支中文,需要指定要使用的中文字体路径;可从自己电脑已安装的字体中选,目录C:\Windows\Fonts
font_path = "C:\\Windows\\Fonts\\simfang.ttf"
wc = WordCloud(font_path,width=1000, height=880).generate(pdf_cut_text) plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show() def __del__(self):
pass if __name__ == '__main__':
# 深圳十三五规划纲要文件的URL链接,要生成其他pdf文件的词云修改成该文件的URL即可
pdf_url = 'http://www.sz.gov.cn/fzggj/home/zwgk/ghjh/fzgh/201604/P020160412518770846515.pdf'
mwc = MyWordCloud()
mwc.genWordCloud(pdf_url)
运行程序,生成词云如下:

参考:
https://www.cnblogs.com/gooseeker/p/5527519.html
http://www.unixuser.org/~euske/python/pdfminer/programming.html
https://www.cnblogs.com/delav/p/7845539.html
Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)的更多相关文章
- python 基于 wordcloud + jieba + matplotlib 生成词云
词云 词云是啥?词云突出一个数据可视化,酷炫.以前以为很复杂,不想python已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...
- 爬虫之使用requests爬取某条标签并生成词云
一.爬虫前准备 1.工具:pychram(python3.7) 2.库:random,requests,fake-useragent,json,re,bs4,matplotlib,worldcloud ...
- wordcloud + jieba 生成词云
利用jieba库和wordcloud生成中文词云. jieba库:中文分词第三方库 分词原理: 利用中文词库,确定汉字之间的关联概率,关联概率大的生成词组 三种分词模式: 1.精确模式:把文本精确的切 ...
- 【python3】爬取简书评论生成词云
一.起因: 昨天在简书上看到这么一篇文章<中国的父母,大都有毛病>,看完之后个人是比较认同作者的观点. 不过,翻了下评论,发现评论区争议颇大,基本两极化.好奇,想看看整体的评论是个什么样, ...
- 已知词频生成词云图(数据库到生成词云)--generate_from_frequencies(WordCloud)
词云图是根据词出现的频率生成词云,词的字体大小表现了其频率大小. 写在前面: 用wc.generate(text)直接生成词频的方法使用很多,所以不再赘述. 但是对于根据generate_from_f ...
- 作业练习P194,jieba应用,读取,分词,存储,生成词云,排序,保存
import jieba #第一题 txt='Python是最有意思的编程语言' words=jieba.lcut(txt) #精确分词 words_all=jieba.lcut(txt,cut_al ...
- 根据词频生成词云(Python wordcloud实现)
网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...
- 广师大学习笔记之文本统计(jieba库好玩的词云)
1.jieba库,介绍如下: (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定 ...
- Python统计excel表格中文本的词频,生成词云图片
import xlrd import jieba import pymysql import matplotlib.pylab as plt from wordcloud import WordClo ...
随机推荐
- Oracle DBHelper 第二版
public static class OracleDBHelper { public static OracleCommand cmd = null; public static OracleCon ...
- mail命令
mail命令是命令行的电子邮件发送和接收工具.操作的界面不像elm或pine那么容易使用,但功能非常完整. 语法 mail(选项)(参数) 选项 -b<地址>:指定密件副本的收信人地址: ...
- Codeforces Round #271 (Div. 2) E. Pillars 线段树优化dp
E. Pillars time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Intellij Idea修改css文件即时更新生成效果
用来Idea也有一段时间了,觉得还是有很多地方没有用到,今天遇到了一个问题,百度了解决方法,正好在这里做一个小记录 主要问题是我在idea的项目里面修改了css文件,然后运行web文件,发现并没有做到 ...
- 怎样更新CentOS6.5的yum源
将yum源设置为国内yum源,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到. 国内源:可以使用wget获取或者直接下载 网易: CentOS5: http://mirrors.16 ...
- jsp技术和el表达式和jstl技术
注:本文参考黑马视频的讲义 jsp技术 1.jsp脚本 )<%java代码%> ----- 内部的java代码翻译到service方法的内部 )<%=java变量或表达式> - ...
- Python统计list中各个元素出现的次数
来自:天蝎圣诞结 利用Python字典统计 利用Python的collection包下Counter类统计 利用Python的pandas包下的value_counts类统计 字典统计 a = [1, ...
- java三大特性传送门
封装:https://blog.csdn.net/chenssy/article/details/12757911 继承:https://blog.csdn.net/chenssy/article/d ...
- 学大数据是先学java还是先学python?
大数据的发展趋势日渐明显,但是进入这个领域的门槛不小,除了要有心理准备,其次就是要付诸实际行动中去学习. 学习方法有很多,在没有基础的前提下,自学是因人而异是有难度.其次是大数据目前的工作方向主要是三 ...
- Linux下HBase和Maven的环境搭建
Maven环境部署如下: maven下载并进行环变量配置 export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.9export PATH=$MAVEN ...