中文文本分析及词云生成

article/2025/7/21 23:45:47

一、代码解析(按执行顺序)

1. 库导入
import jieba  # 中文分词工具
from wordcloud import WordCloud  # 词云生成器
from collections import Counter  # 词频统计
import matplotlib.pyplot as plt  # 可视化
import numpy as np  # 图像矩阵处理
from PIL import Image  # 图像处理
  • 关键点jieba需通过pip install jieba安装,PIL实际是Pillow库(需pip install pillow

2. 文本读取
with open(r"E:\python\Anaconda (Anaconda)\python学习\1.txt", "r", encoding="utf-8") as f:text = f.read()
  • 注意:路径中的空格不会影响读取,但建议路径尽量简洁(如E:\python_project\data.txt

  • 风险点:若文件不是UTF-8编码会报错,可用chardet库检测文件编码

3. 中文分词
ls = jieba.lcut(text)  # 精确模式分词
filtered_words = [word for word in ls if len(word) > 1]  # 过滤单字
  • jieba模式对比

    • lcut:返回列表(推荐)

    • cut:返回生成器(适合大文件)

  • 过滤逻辑:中文单字通常无意义(如"的"、"是")

4. 词频统计
word_freq = Counter(filtered_words)
  • 输出示例Counter({'Python': 25, '学习': 18, ...})

  • 调试技巧:可打印前20高频词 print(word_freq.most_common(20))

5. 词云生成
mask = np.array(Image.open(r"D:\Python\...\heart.png"))  # 转换为numpy数组
wc = WordCloud(font_path="C:\\Windows\\Fonts\\simhei.ttf",  # 必须指定中文字体mask=mask,  # 形状控制background_color="white"  # 建议与mask图片背景色一致
)
wc.generate_from_frequencies(word_freq)
  • 常见问题

    • 字体路径错误 → 词云显示方框

    • mask图片非白底 → 形状异常

6. 可视化与保存
plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file("news_wordcloud.png")  # 保存到当前目录
  • 优化建议:添加plt.figure(figsize=(10,6))控制画布大小


二、新手易错点排查表

问题现象可能原因解决方案
词云显示乱码1. 未正确设置中文字体
2. 系统缺少字体
1. 检查font_path路径
2. 将字体文件复制到项目目录直接引用
形状不符合预期1. mask图片背景非纯白
2. 图片尺寸过小
1. 用PS/画图工具将背景设为纯白
2. 使用与width/height参数匹配的图片
分词效果差1. 未加载自定义词典
2. 未过滤停用词
1. jieba.load_userdict("my_dict.txt")
2. 添加停用词过滤逻辑

三、代码优化建议

1. 添加停用词过滤
# 在过滤单字后添加
stopwords = ["的", "是", "了", "在"]  # 可读取外部文件
filtered_words = [w for w in filtered_words if w not in stopwords]
2. 提升可视化效果
plt.figure(figsize=(12, 8))  # 调整画布大小
plt.imshow(wc, interpolation="bilinear", cmap="viridis")  # 修改配色
plt.title("你的词云标题", fontsize=14, pad=20)  # 添加标题
3. 异常处理
try:mask = np.array(Image.open("heart.png"))
except FileNotFoundError:print("蒙版图片不存在!")mask = None  # 回退到矩形词云

完整代码如下:

import jieba
from wordcloud import WordCloud
from collections import Counter
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image  # 新增导入# 读取文本文件
with open(r"E:\python\Anaconda (Anaconda)\python学习\1.txt", "r", encoding="utf-8") as f:text = f.read()# 使用结巴分词进行分词
ls = jieba.lcut(text)# 过滤单字词语(可选)
filtered_words = [word for word in ls if len(word) > 1]# 统计词频
word_freq = Counter(filtered_words)  # 或直接使用 Counter(ls)# 生成词云
wc = WordCloud(font_path="C:\\Windows\\Fonts\\simhei.ttf",width=1000,height=700,background_color="white",mask=np.array(Image.open(r"D:\Python\notebook\lovepage\love\heart.png"))  # ✅ 正确导入 Image
)
wc.generate_from_frequencies(word_freq)# 显示并保存
plt.imshow(wc, interpolation='bilinear')  # 添加 interpolation 避免警告
plt.axis("off")
plt.show()  # 显示图像(非 Notebook 环境需调用)
wc.to_file("news_wordcloud.png")

运行结果:

爱心图片:


http://www.hkcw.cn/article/kNmRIMFqWh.shtml

相关文章

芯片手册解读

一: 1.这是一款差分转单端的芯片: 2.给出了逻辑高低的识别门限:并不是大于100mv和小于-100mv就识别不到了——而是大于100mv和小于-100mv都可以识别到,手册的意思仅仅代表门限节点而已,完全可以在进入门限后的其他电…

LangChain-Tool和Agent结合智谱AI大模型应用实例2

1.Tool(工具) 定义与功能 单一功能模块:Tool是完成特定任务的独立工具,每个工具专注于一项具体的操作,例如:搜索、计算、API调用等 无决策能力:工具本身不决定何时被调用,仅在被触发时执行预设操作 输入输出明确:每个工具需明确定义输入、输出参数及格式 2.Agent(…

专业级图片分割解决方案

在日常处理图片的过程中,我们常常会遇到需要将一张图分割成多个小图的情况。这一款高效又实用的图片分割工具——它操作简单、功能强大,关键是完全免费开源,适合所有有图像处理需求的朋友! 在使用之前,先花几分钟把它…

Re--题

一.[NSSCTF 2022 Spring Recruit]easy C 直接看for循环,异或 写代码 就得到了flag easy_Re 二.[SWPUCTF 2021 新生赛]非常简单的逻辑题 先对这段代码进行分析 flag xxxxxxxxxxxxxxxxxxxxx s wesyvbniazxchjko1973652048$-&*&l…

iOS 集成网易云信IM

云信官方文档在这 看官方文档的时候&#xff0c;版本选择最新的V10。 1、CocoPods集成 pod NIMSDK_LITE 2、AppDelegate.m添加头文件 #import <NIMSDK/NIMSDK.h> 3、初始化 NIMSDKOption *mrnn_option [NIMSDKOption optionWithAppKey:"6f6568e354026d2d658a…

边缘计算网关支撑医院供暖系统高效运维的本地化计算与边缘决策

一、项目背景 医院作为人员密集的特殊场所&#xff0c;对供暖系统的稳定性和高效性有着极高的要求。其供暖换热站传统的人工现场监控方式存在诸多弊端&#xff0c;如人员值守成本高、数据记录不及时不准确、故障发现和处理滞后、能耗难以有效监测和控制等&#xff0c;难以满足…

Google Earth Pro 7.3 中文绿色版 - 谷歌地球专业版(精准定位,清晰查看您家位置)

谷歌卫星高清地图 下载链接&#xff1a;https://pan.quark.cn/s/c6069864c9f3 Google Earth Pro-7.3.6.9796-x64 Google Earth WinMac安装版 GoogleEarthProPortable googleearthpromac-intel-7.3.6.10155 GoogleEarthProWin-7.3.6.10155 GoogleEarthProWin-x64-7.3.6.10…

【工作笔记】 WSL开启报错

【工作笔记】 WSL开启报错 时间&#xff1a;2025年5月30日16:50:42 1.现象 Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x80370114 Error: 0x80370114 ??????????????????Press any key to continue...

《TCP/IP 详解 卷1:协议》第3章:链路层

以太网和IEEE802局域网/城域网标准 IEEE802局域网/城域网标准 IEEE 802 是一组由 IEEE&#xff08;电气与电子工程师协会&#xff09;定义的局域网和城域网通信标准系列&#xff0c;涵盖了从物理层到链路层的多个网络技术。其中&#xff1a; IEEE 802.3 定义的是传统的以太网…

【定昌linux开发板】设置密码的有效时间

查看密码策略命令 sudo chage -l 用户名 先查询下默认情况下&#xff0c;密码策略 结果&#xff1a; 可以看出&#xff0c;密码没什么策略 那么我要设置30天后过期&#xff0c;并且七天前要进行提醒 sudo chage -M 30 用户名 再进行查询&#xff0c;结果如下 显示密码的有…

Vue-数据监听

数据监听 基础信息 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>数据监听</title><!-- 引入Vue --><script type"text/javascript" src"../js/vue.js&qu…

Java 注解式限流教程(使用 Redis + AOP)

Java 注解式限流教程&#xff08;使用 Redis AOP&#xff09; 在上一节中&#xff0c;我们已经实现了基于 Redis 的请求频率控制。现在我们将进一步升级功能&#xff0c;使用 Spring AOP 自定义注解 实现一个更优雅、可复用的限流方式 —— 即通过 RateLimiter 注解&#xf…

C++学习-入门到精通【10】面向对象编程:多态性

C学习-入门到精通【10】面向对象编程&#xff1a;多态性 目录 C学习-入门到精通【10】面向对象编程&#xff1a;多态性一、多态性介绍&#xff1a;多态电子游戏二、类继承层次中对象之间的关系1.从派生类对象调用基类函数2.将派生类指针指向基类对象3.通过基类指针调用派生类的…

基于springboot的医护人员排班系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

1、python代码实现与大模型的问答交互

一、基础知识 1.1导入库 torch 是一个深度学习框架&#xff0c;用于处理张量和神经网络。modelscope是由阿里巴巴达摩院推出的开源模型库。 AutoTokenizer 是ModelScope 库的类&#xff0c;分词器应用场景包括自然语言处理&#xff08;NLP&#xff09;中的文本分类、信息抽取…

再见Cursor!Trae Pro 登场

5 月 27 日&#xff0c;字节跳动旗下的 AI 编辑器 Trae 国际版正式推出了 Pro 订阅计划。长期以来&#xff0c;Trae 凭借免费使用和出色的编程体验&#xff0c;深受大家喜爱。不过&#xff0c;免费版在实际使用中&#xff0c;排队等待的情况时有发生&#xff0c;着实给用户带来…

【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】

1. 是什么 Docker 是一个用于开发、部署和运行应用程序的开源平台&#xff0c;它使用 容器化技术 将应用及其依赖打包成独立的容器&#xff0c;确保应用在不同环境中一致运行。 2. Docker与虚拟机 2.1 Docker&#xff08;容器化&#xff09; 容器化是一种轻量级的虚拟化技术…

rm删除到回收站

rm删除到回收站 背景安装trash-clipip安装包管理器安装 将trash-put别名设为rm设置回收站文件过期时间 trash基本用法删除文件删除后文件去了哪里 查看回收站从回收站中恢复文件恢复文件到指定路径 删除回收站中的指定文件 背景 在Linux命令行下操作的时候会不小心误删文件或目…

DDP与FSDP:分布式训练技术全解析

DDP与FSDP:分布式训练技术全解析 DDP(Distributed Data Parallel)和 FSDP(Fully Sharded Data Parallel)均为用于深度学习模型训练的分布式训练技术,二者借助多 GPU 或多节点来提升训练速度。 1. DDP(Distributed Data Parallel) 实现原理 数据并行:把相同的模型复…

数据采集是什么?一文讲清数据采集系统的模式!

目录 一、数据采集是什么&#xff1f; 二、为什么要进行数据采集 1. 为企业决策提供依据 2. 推动科学研究的发展 3. 提升生产效率和质量 三、数据采集系统的模式 1. 实时采集模式 2. 定时采集模式 3. 事件驱动采集模式 四、不同模式的应用场景及选择考虑因素 1. 应用…