python读取PDF文件并做词云可视化

简介: python读取PDF文件并做词云可视化

Python编程读取至少一篇pdf文档。并编程实现以下功能:

   ①实现其中的热词统计分析

   ②绘制热词统计分析的词云

一、PDF文档的选择

我选择的PDF中文字内容如下:

二、效果展示

三、完整代码

1. import pdfplumber  # 导入库
2. import jieba
3. from wordcloud import WordCloud
4. import numpy as np
5. import matplotlib.pyplot as plt
6. plt.rcParams['font.sans-serif']=['SimHei']
7. plt.rcParams['axes.unicode_minus']=False
8. # 用pdf文件解析器读取文件
9. with pdfplumber.open('中华文化.pdf') as f:
10. # 用for循环读取文件中的每一页
11. for page in f.pages:
12.         text = page.extract_text()
13.         txt_f = open(r'中华文化.txt', mode='a', encoding='utf-8')  # 创建txt文件
14.         txt_f.write(text)  # 写入txt文件
15. 
16. file = open('中华文化.txt',encoding='utf-8')
17. file = file.read()  #读取txt文件
18. txtlist = jieba.lcut(file) 
19. string = " ".join(txtlist) 
20. stop_words = {}  
21. counts = {}  
22. for txt in txtlist:
23. if len(txt) == 1:  
24.         stop_words[txt] = stop_words.get(txt, 0) + 1
25. else:
26.         counts[txt] = counts.get(txt, 0) + 1
27. items = list(counts.items())
28. items.sort(key=lambda x: x[1], reverse=True)  
29. y1 = []
30. labels = []
31. for i in range(1,10):
32.     y1.append(items[i][1])
33.     labels.append(items[i][0])
34. # plt.figure(figsize=(8,4))
35. width = 0.3
36. x = np.arange(len(y1))
37. a = [i for i in range(0,9)]
38. plt.xticks(a,labels,rotation = 30)
39. plt.bar(x=x,height=y1,width=width)
40. plt.title('PDF文件中热词统计分析')
41. plt.savefig("热词统计分析.png")
42. plt.show()
43. print("-------热词统计分析完成!-------")
44. stoplist=[]   
45. item = list(stop_words.items())
46. for i in range(len(item)): 
47.     txt,count = item[i]
48.     stoplist.append(txt)  
49. #print(stoplist)
50. setlist = set(stoplist)  
51. wcd = WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', scale=15, stopwords=setlist)
52. wcd.generate(string)
53. wcd.to_image()
54. print("-------热词词云生成完成!-------")
55. wcd.to_file('词云.png')  # 导出图片

四、总结

  1. 题目要求读取至少一篇pdf文档,那么需要用到pdfplumber库,用with pdfplumber.open('中华文化.pdf') as f:这条语句将文件打开,之后用for循环读取文件的每一页,并将读取到的内容存到txt文件中。
  2. 再利用jieba分词库对文本处理,使用精确模式对文本进行分词,列表转化为字符串,绘制词云要传入的对象是字符串.
  3. 接着统计词语及其出现的次数,通过键值对的形式存储要排除的词及出现次数,通过键值对的形式存储词语及其出现的次数,注意将当个词语删除,遍历所有词语,每出现一次其对应的值加 1,根据词语出现的次数进行从大到小排序。
  4. 根据上面的处理结果画热词统计分析图,用for循环向label和y1中添加排名前十的词汇和它对应出现的次数,用plt画出,横坐标为对应词汇,纵坐标为出现次数,可以看出,出现最多的词是“父母”和“我们”、其次是“弟子规”和“朋友”。
  5. 创建排除单个词的列表,遍历列表中所有的字典,将key添加到要排除的列表,将列表转化为集合,后面WordCloud()方法的stopwords传入的参数要求为集合,将string变量传入generate()方法,给词云输入文字,利用WordCloud生成词云照片。


相关文章
|
2月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
374 60
|
2月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
24天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
24 2
|
2月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
69 1
Python实用记录(十三):python脚本打包exe文件并运行
|
2月前
|
机器学习/深度学习 数据可视化 Python
Python实用记录(三):通过netron可视化模型
使用Netron工具在Python中可视化神经网络模型,包括安装Netron、创建文件和运行文件的步骤。
38 2
Python实用记录(三):通过netron可视化模型
|
2月前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
2月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
2月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
2月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
2月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
255 1