当前位置:   article > 正文

python读取PDF文件并做词云可视化_python从多个pdf文件中提取词云的代码

python从多个pdf文件中提取词云的代码

Hallo,各位小伙伴大家好啊!这个专栏是用来分享数据处理以及数据可视化的一些常见操作,以及自己的一些学习笔记,希望能给大家带来帮助呀!感兴趣的小伙伴也欢迎私信或者评论区交流呀!

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. file = open('中华文化.txt',encoding='utf-8')
  16. file = file.read() #读取txt文件
  17. txtlist = jieba.lcut(file)
  18. string = " ".join(txtlist)
  19. stop_words = {}
  20. counts = {}
  21. for txt in txtlist:
  22. if len(txt) == 1:
  23. stop_words[txt] = stop_words.get(txt, 0) + 1
  24. else:
  25. counts[txt] = counts.get(txt, 0) + 1
  26. items = list(counts.items())
  27. items.sort(key=lambda x: x[1], reverse=True)
  28. y1 = []
  29. labels = []
  30. for i in range(1,10):
  31. y1.append(items[i][1])
  32. labels.append(items[i][0])
  33. # plt.figure(figsize=(8,4))
  34. width = 0.3
  35. x = np.arange(len(y1))
  36. a = [i for i in range(0,9)]
  37. plt.xticks(a,labels,rotation = 30)
  38. plt.bar(x=x,height=y1,width=width)
  39. plt.title('PDF文件中热词统计分析')
  40. plt.savefig("热词统计分析.png")
  41. plt.show()
  42. print("-------热词统计分析完成!-------")
  43. stoplist=[]
  44. item = list(stop_words.items())
  45. for i in range(len(item)):
  46. txt,count = item[i]
  47. stoplist.append(txt)
  48. #print(stoplist)
  49. setlist = set(stoplist)
  50. wcd = WordCloud(width=1000, height=700, background_color='white', font_path='msyh.ttc', scale=15, stopwords=setlist)
  51. wcd.generate(string)
  52. wcd.to_image()
  53. print("-------热词词云生成完成!-------")
  54. 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生成词云照片。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号