当前位置: 首页 > news >正文

使用Python+docx+jieba+wordcloud给word文档生成词云图

一、使用Python+docx+jieba+wordcloud给word文档生成词云图

import docx # 用于读取word文档
import jieba # 用于中文分词
import re # 用于正则表达式匹配
import wordcloud # 用于生成词云图
import matplotlib.pyplot as plt # 用于显示和保存图片# 定义一个函数,用于从word文档中提取所有的文本
def get_text_from_docx(filename):# 创建一个docx.Document对象,打开指定的word文档doc = docx.Document(filename)# 创建一个空字符串,用于存储所有的文本text = ""# 遍历文档中的每一段for para in doc.paragraphs:# 将段落的文本追加到字符串中,并加上换行符text += para.text + "\n"# 返回字符串return text# 定义一个函数,用于对文本进行分词,并返回一个词汇列表
def get_words_from_text(text):# 创建一个空列表,用于存储分词结果words = []# 使用jieba.cut方法对文本进行分词,返回一个生成器对象segs = jieba.cut(text)# 遍历生成器对象中的每一个分词结果for seg in segs:# 去掉分词结果两端的空白字符seg = seg.strip()# 如果分词结果不为空,并且是中文或英文单词,则将其添加到列表中if seg and (re.match(r"[\u4e00-\u9fa5]+", seg) or re.match(r"[a-zA-Z]+", seg)):words.append(seg)# 返回列表return words# 定义一个函数,用于根据词汇列表生成词云图,并保存为jpg图像
def generate_wordcloud_from_words(words, filename):# 将词汇列表转换为以空格分隔的字符串text = " ".join(words)# 创建一个wordcloud.WordCloud对象,设置字体、背景颜色、最大词数等参数wc = wordcloud.WordCloud(font_path="msyh.ttc", background_color="white", max_words=100)# 使用generate方法根据字符串生成词云图wc.generate(text)# 使用matplotlib.pyplot模块显示和保存图片plt.imshow(wc) # 显示图片plt.axis("off") # 关闭坐标轴plt.savefig(filename) # 保存图片为jpg格式# 定义要处理的word文档的文件名
docx_filename = "words.docx"# 定义要保存的词云图的文件名
jpg_filename = "wordcloud.jpg"# 从word文档中提取所有的文本
text = get_text_from_docx(docx_filename)# 对文本进行分词,并返回一个词汇列表
words = get_words_from_text(text)# 根据词汇列表生成词云图,并保存为jpg图像
generate_wordcloud_from_words(words, jpg_filename)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java18 设计模式
  • vue2.0+ts中默认demo组件
  • ubuntu 安装opencv(3.4.16)
  • 【C++二分查找 贪心】1552. 两球之间的磁力
  • C语言 | Leetcode C语言题解之第384题打乱数组
  • 五、代理模式
  • E1.S接口如何解决SSD过热问题?
  • AI问答-协议-上传协议:FTP、FTPS、SFTP
  • 【算法 动态规划 简单多状态 dp 问题】打家劫舍题型
  • 第十七章 rust异步库tokio入门
  • Web安全之XSS跨站脚本攻击
  • Jmeter执行多机联合负载
  • 【Ubuntu22.04】搭建Android开发环境
  • npm登录
  • 做短视频素材哪里找?10个自媒体必备的短视频素材网站分享给你
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Angular 4.x 动态创建组件
  • CODING 缺陷管理功能正式开始公测
  • css选择器
  • GraphQL学习过程应该是这样的
  • Linux Process Manage
  • Python_网络编程
  • Redash本地开发环境搭建
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 编写符合Python风格的对象
  • 对超线程几个不同角度的解释
  • 使用Gradle第一次构建Java程序
  • 应用生命周期终极 DevOps 工具包
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 如何在招聘中考核.NET架构师
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • #、%和$符号在OGNL表达式中经常出现
  • #stm32驱动外设模块总结w5500模块
  • #图像处理
  • (2)空速传感器
  • (HAL库版)freeRTOS移植STMF103
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (多级缓存)多级缓存
  • (三)SvelteKit教程:layout 文件
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)c52学习之旅-流水LED灯
  • .net CHARTING图表控件下载地址
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Core 中插件式开发实现
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C][数据结构][树]详细讲解
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [C语言]一维数组二维数组的大小