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

中文分词与数据可视化01

一、环境准备

1. 安装必要的 Python 库
pip install jieba         # 中文分词工具
pip install wordcloud    # 生成词云
pip install matplotlib   # 绘图库
pip install numpy        # 处理图像数据(如果要用自定义形状)
pip install pillow       # 图像处理(加载背景图)
2. 准备资源
  • 文本文件:比如 text.txt(存放你要分析的中文文本)

  • 停用词表:比如 stopwords.txt(过滤无意义词汇)

  • 中文字体:如 SimHei.ttf(避免词云中显示乱码)

  • 自定义形状图片(可选):比如 mask.png(词云填充成特定形状)

二、完整代码示例

1. 代码框架
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter# 1. 读取文本文件
with open("text.txt", "r", encoding="utf-8") as f:text = f.read()# 2. 中文分词(使用 Jieba)
words = jieba.cut(text)# 3. 过滤停用词
with open("stopwords.txt", "r", encoding="utf-8") as f:stopwords = set([line.strip() for line in f])filtered_words = [word for word in words if word not in stopwords and len(word) > 1]# 4. 统计词频
word_freq = Counter(filtered_words)# 5. 生成词云
wc = WordCloud(font_path="SimHei.ttf",   # 指定中文字体路径background_color="white", # 背景颜色max_words=200,            # 最多显示的词数width=800,               height=600
)wc.generate_from_frequencies(word_freq)# 6. 显示词云
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")  # 隐藏坐标轴
plt.show()# 7. 保存词云(可选)
wc.to_file("wordcloud.png")

三、关键步骤详解

1. 分词与停用词过滤
  • 分词jieba.cut(text) 返回一个生成器,需转换为列表(如 list(words))。

  • 停用词:从文件中加载常见停用词(如“的”、“了”、“是”),并过滤掉长度≤1的字符。

2. 词频统计

使用 Counter 统计词语出现次数,生成 {词语: 频次} 的字典。

3. 词云参数配置
  • font_path:必须指定中文字体路径,否则词云会显示方框。

  • max_words:控制词云中显示的最大词汇量。

  • 其他参数:background_color(背景颜色)、width/height(尺寸)。

4. 自定义形状词云

如果要让词云填充特定形状(如中国地图),需以下步骤:

from PIL import Image
import numpy as np# 加载形状图片(需黑白对比明显)
mask = np.array(Image.open("mask.png"))# 修改 WordCloud 参数
wc = WordCloud(font_path="SimHei.ttf",mask=mask,          # 指定形状background_color="white",contour_color="blue" # 轮廓颜色
)

四、示例数据

1. text.txt 内容示例

自然语言处理是人工智能领域的重要方向之一。通过分析文本数据,我们可以从中提取有价值的信息。中文分词是处理中文文本的基础步骤,而词云则能直观展示文本中的关键词。

2. stopwords.txt 停用词表






可以
我们

五、运行结果

生成的词云可能如下(高频词更大更明显):

自然语言处理     人工智能       文本数据
中文分词         基础步骤       词云
关键词          分析          提取

六、常见问题与解决

  1. 乱码问题:确保 font_path 指向正确的中文字体文件(如 SimHei.ttf)。

  2. 分词不准确

    • 添加自定义词典:jieba.load_userdict("user_dict.txt")

    • 调整分词模式:jieba.cut(text, cut_all=False)(精确模式)

  3. 词云形状不清晰:确保 mask 图片背景为纯白(RGB: 255,255,255)。

http://www.xdnf.cn/news/6868.html

相关文章:

  • 板对板连接器极限测试:振动、温差与盐雾三重挑战下的生存实录
  • 我的世界模组开发——特征(2)
  • 【Linux内核】设备驱动之块设备介绍
  • 连续赋值?多变量初始化?变量初始化?赋值运算符?
  • Kotlin 作用域函数(let、run、with、apply、also)对比
  • OCC笔记:Brep格式
  • 文章记单词 | 第94篇(六级)
  • Java 面向对象进阶:抽象类与接口的舞蹈
  • 基于C语言的歌曲调性检测技术解析
  • TTS:F5-TTS 带有 ConvNeXt V2 的扩散变换器
  • bitmap/hyperloglog/GEO详解与案例实战
  • 永久免费!专为 Apache Doris 打造的可视化数据管理工具 SelectDB Studio V1.1.0 重磅发布!
  • C语言程序设计期末复习
  • 初探Reforcement Learning强化学习【QLearning/Sarsa/QCN】
  • 强化学习中,frames(帧)和 episodes(回合)
  • 【Mysql】详解InnoDB存储引擎以及binlog,redelog,undolog+MVCC
  • 多指标组合策略
  • 微信小程序开发
  • 数学复习笔记 18
  • Codex与LangChain结合的智能代理架构:重塑软件开发的未来
  • python打卡day28
  • 管理前端项目依赖版本冲突导致启动失败的问题的解决办法
  • muduo库EventLoopThread模块详解——C++
  • DeepSeek快速指南:提升效率,告别内耗
  • Windows运维工具批处理版
  • [前端高频]数组转树、数组扁平化、深拷贝、JSON.stringifyJSON.parse等手撕
  • sizeof 和strlen的对比
  • 【C++ - 仿mudou库one thread one loop式高并发服务器实现】
  • 聊一聊如何确保接口文档的完整性和准确性
  • 深度学习中ONNX格式的模型文件