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

使用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)


http://www.kler.cn/a/289765.html

相关文章:

  • 【LeetCode】【算法】581. 最短无序连续子数组
  • C# 模拟浏览器自操作(自动化办公)
  • @ComponentScan:Spring Boot中的自动装配大师
  • 车-路-站-网”信息耦合的汽车有序充电
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • 物理设备命名规则(Linux网络服务器 15)
  • [论文笔记]RAFT: Adapting Language Model to Domain Specific RAG
  • 竞赛实战--天池金融风控分类问题
  • 社会阶层结构
  • AI机械键盘,罗技推出首款AI机械键盘K98M
  • mysql迁移大量数据备选方案
  • 百度飞浆OCR半自动标注软件OCRLabel配置【详细
  • 大数据学习|理解和对比 Apache Hive 和 Apache Iceberg
  • MIPI接口简介
  • 排查zabbix web部分页面打开慢的问题
  • 深入理解 Prometheus 数据模型与指标监控
  • 软件设计之JDBC(1)
  • day06-集合-CollectionListSet
  • 检查linux是否被入侵之计划任务和系统后门
  • 快速排序(动图详解)(C语言数据结构)
  • Ceph RBD使用
  • String核心设计模式——建造者模式
  • 性能工具之 JProfiler 简单登录案例分析实战
  • 网络安全服务基础Windows--第10节-FTP主动与被动模式
  • 【工具篇】vscode设置护眼色主题皮肤
  • JavaScript基础概述