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

中文分词与数据可视化03

wordcloud 库简介

wordcloud(词云)是一个用于生成词云图的 Python 库,能够根据词频自动生成视觉化的文本分布图,高频词会以更大的字体显示。它常与 jieba 结合使用,适合文本数据的探索性分析和可视化展示。

安装

pip install wordcloud
依赖库(需提前安装)
  • matplotlib:用于显示或保存图像。

  • pillow(PIL):处理图像文件(如下图)。

pip install matplotlib pillow

核心功能与函数

1. 基础词云生成

核心类 WordCloud
通过配置参数生成词云对象,常用参数如下:

  • font_path:字体文件路径(中文需指定中文字体,否则乱码)。

  • width/height:图片尺寸(默认 400x200)。

  • background_color:背景颜色(默认黑色)。

  • max_words:最大显示词数(默认 200)。

  • mask:指定词云形状(基于图片的遮罩)。

from wordcloud import WordCloud
import matplotlib.pyplot as plttext = "Python 数据分析 机器学习 深度学习 人工智能 编程 算法 数据挖掘"# 创建词云对象
wc = WordCloud(font_path="msyh.ttc",  # 指定中文字体(Windows 可用)width=800,height=600,background_color="white",max_words=50
)# 生成词云
wc.generate(text)# 显示词云
plt.imshow(wc)
plt.axis("off")  # 隐藏坐标轴
plt.show()# 保存为文件
wc.to_file("wordcloud.png")

运行结果:


2. 关键函数与方法

generate(text)
功能:根据输入文本生成词云(自动统计词频)。

wc.generate("Hello world Python Python data science")

generate_from_frequencies(word_freq)
功能:直接通过词频字典生成词云(需手动统计词频)。

# 示例:结合 jieba 分词和 Counter 统计词频
import jieba
from collections import Countertext = "自然语言处理是人工智能的重要分支,深度学习推动其发展。"
words = jieba.lcut(text)
word_freq = Counter(words)wc.generate_from_frequencies(word_freq)

to_file(filename)
功能:将词云保存为图片文件(支持 PNG/JPG 等格式)。

wc.to_file("output.jpg")

to_array()
功能:将词云转换为 NumPy 数组,便于进一步处理。

array = wc.to_array()


3. 高级功能
  • 自定义形状词云
    使用 mask 参数指定图片形状(需黑白遮罩图):

from PIL import Image
import numpy as np# 加载遮罩图(如心形)
mask = np.array(Image.open("heart_mask.png"))wc = WordCloud(mask=mask,background_color="white",font_path="msyh.ttc"
)

过滤停用词
结合自定义停用词表过滤无关词汇:

stopwords = ["的", "是", "和"]
filtered_text = " ".join([word for word in words if word not in stopwords])
wc.generate(filtered_text)

调整颜色方案
通过 colormap 参数设置配色(如 viridisplasma):

wc = WordCloud(colormap="viridis")


完整示例(结合jieba)

import jieba
from wordcloud import WordCloud
from collections import Counter
import matplotlib.pyplot as plt# 读取文本文件
with open("news.txt", "r", encoding="utf-8") as f:text = f.read()# 分词并过滤停用词
words = jieba.lcut(text)
stopwords = ["的", "了", "在", "是", "和"]
filtered_words = [word for word in words if word not in stopwords and len(word) > 1]# 统计词频
word_freq = Counter(filtered_words)# 生成词云
wc = WordCloud(font_path="msyh.ttc",width=1000,height=700,background_color="white",max_words=100
)
wc.generate_from_frequencies(word_freq)# 显示并保存
plt.imshow(wc)
plt.axis("off")
plt.show()
wc.to_file("news_wordcloud.png")

常见问题解决

  1. 中文乱码

    • 必须指定中文字体路径(如 font_path="msyh.ttc")。

  2. 依赖安装失败

    • Windows 用户需安装 Microsoft C++ Build Tools:Microsoft C++ Build Tools - Visual Studio

  3. 图片形状不生效

    • 确保遮罩图为黑白图,背景为纯白色(RGB 255,255,255)。


扩展应用

  • 社交媒体分析:生成用户评论词云。

  • 报告可视化:展示调查报告中的高频词。

  • 结合其他库:用 matplotlib 调整布局,或用 stylecloud 生成更美观的词云。


总结

wordcloud 是一个简单高效的文本可视化工具,适合快速生成词云。掌握核心参数和函数后,可轻松结合分词库(如 jieba)和数据分析库完成复杂任务。

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

相关文章:

  • 【2025版】OpenFeign快速入门
  • Cursor:简单三步提高生成效率
  • HJ5 进制转换【牛客网】
  • 工作流介绍
  • TIMER免疫浸润分析
  • 谷歌地球引擎GEE将多个遥感影像作为多个波段合并成一张图像并下载的方法
  • C++ deque大小操作、deque数据插入、deque数据删除
  • Linux学习笔记|GCC编译指令基础|静动态库|makefile
  • KAG:通过知识增强生成提升专业领域的大型语言模型(五)
  • Python异常处理与OOP深度解析及实战案例
  • 软件调试纵横谈-18-页堆
  • Java程序员学AI(一)
  • [强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程-下
  • Python 从列表中删除值的多种实用方法详解
  • C++学习:六个月从基础到就业——C++17:std::optional/variant/any
  • 玄机-第一章 应急响应-Linux日志分析
  • LoRA微调的参数学习
  • 1-机器学习的基本概念
  • 浅入ES5、ES6(ES2015)、ES2023(ES14)版本对比,及使用建议---ES6就够用(个人觉得)
  • 电子电路:什么是电子电路中的噪声?为什么会产生噪声?噪声全部是负面影响吗?
  • React-Query使用react-testing-library进行测试
  • c/c++的opencv直方图初识
  • HarmonyOS:应用文件访问(ArkTS)
  • C++算法(23):memset原理、性能对比与替代策略
  • 数据共享的艺术
  • C++中的容器
  • 进程和线程的区别和联系
  • FreeRTOS的学习记录(中断管理)
  • 5.18打卡
  • 延时双删-争议与我的思路-001