Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)

时间:2023-01-26 10:07:27

一、各库功能说明

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)

运行程序,生成词云如下:

Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)

参考:

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生成词云(以深圳十三五规划纲要为例)的更多相关文章

  1. python 基于 wordcloud + jieba + matplotlib 生成词云

    词云 词云是啥?词云突出一个数据可视化,酷炫.以前以为很复杂,不想python已经有成熟的工具来做词云.而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑.准备好了吗,快跟我一起 ...

  2. 爬虫之使用requests爬取某条标签并生成词云

    一.爬虫前准备 1.工具:pychram(python3.7) 2.库:random,requests,fake-useragent,json,re,bs4,matplotlib,worldcloud ...

  3. wordcloud + jieba 生成词云

    利用jieba库和wordcloud生成中文词云. jieba库:中文分词第三方库 分词原理: 利用中文词库,确定汉字之间的关联概率,关联概率大的生成词组 三种分词模式: 1.精确模式:把文本精确的切 ...

  4. 【python3】爬取简书评论生成词云

    一.起因: 昨天在简书上看到这么一篇文章<中国的父母,大都有毛病>,看完之后个人是比较认同作者的观点. 不过,翻了下评论,发现评论区争议颇大,基本两极化.好奇,想看看整体的评论是个什么样, ...

  5. 已知词频生成词云图(数据库到生成词云)--generate&lowbar;from&lowbar;frequencies(WordCloud)

    词云图是根据词出现的频率生成词云,词的字体大小表现了其频率大小. 写在前面: 用wc.generate(text)直接生成词频的方法使用很多,所以不再赘述. 但是对于根据generate_from_f ...

  6. 作业练习P194,jieba应用,读取,分词,存储,生成词云,排序,保存

    import jieba #第一题 txt='Python是最有意思的编程语言' words=jieba.lcut(txt) #精确分词 words_all=jieba.lcut(txt,cut_al ...

  7. 根据词频生成词云&lpar;Python wordcloud实现&rpar;

    网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...

  8. 广师大学习笔记之文本统计&lpar;jieba库好玩的词云&rpar;

    1.jieba库,介绍如下: (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定 ...

  9. Python统计excel表格中文本的词频,生成词云图片

    import xlrd import jieba import pymysql import matplotlib.pylab as plt from wordcloud import WordClo ...

随机推荐

  1. 认识 EXT2 文件系统

    认识ext文件系统 硬盘组成与分割 文件系统特性 Linux 的 EXT2 文件系统(inode) 与目录树的关系 EXT2/EXT3 文件的存取与日志式文件系统的功能 Linux 文件系统的运行 挂 ...

  2. jquery 显示&OpenCurlyDoubleQuote;加载状态 结束”

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. &lbrack;TypeScript&rsqb; Configuring TypeScript Which Files to Compile with &quot&semi;Files&quot&semi; and &quot&semi;OutDir&quot&semi;

    This lesson shows how to configure the .tsconfig so you only compile the .ts files you want. It then ...

  4. apache服务器主域名跳转www域名

    为集中网站权重,有时候我们需要把www域名跳转到主域名,或者主域名跳转到www域名. apache服务器如何实现主域名跳转www域名: 打开网站根目录下.htaccess文件,没有的话新建一个上传至网 ...

  5. plt库

  6. web网站使用qq第三方登录

    Html代码: <a href=’/QQlogin’>qq登录</a> //后台代码: @RequestMapping(value = "/QQlogin" ...

  7. webpack模块定义和使用的模式

    在使用webpack作为模块加载工具时,我在想module.exports的模块应该是一种什么模式,最直接地思考是单例.不太确定,所以写一个简单例子做测试. 测试代码 singleton.js: va ...

  8. JavaWeb学习 &lpar;十七&rpar;————JSP属性范围

    所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得 ...

  9. Tomcat 8默认工具manager管理页面访问配置

    Tomcat 8默认工具manager管理页面访问配置 1. 分配相关的角色权限 需要配置的配置文件是${catalina.home}/conf/tomcat-users.xml先给Tomcat访问相 ...

  10. C&num;、&period;Net经典面试题目及答案

    1 请你说说   .NET  中类和结构的区别? 答:结构和类具有大体的语法,但是结构受到的限制比类要多.结构不能申明有默认的构造函数,为结构的副本是又编译器创建 和销毁的,所以不需要默认的构造函数和 ...