杰瑞科技汇

Python wordcloud包怎么用?

wordcloud 包是一个用于根据文本数据生成词云图的强大工具,词云图是一种直观的可视化方式,它将文本中出现频率高的词以更大的字号、更醒目的颜色展示出来,而低频词则显示得较小,从而让用户能快速抓住文本的核心主题。

Python wordcloud包怎么用?-图1
(图片来源网络,侵删)

安装

你需要安装这个包,最简单的方式是使用 pip

pip install wordcloud

重要提示: wordcloud 包依赖于一些图像处理库,主要是 Pillownumpy,在安装 wordcloud 时,通常会自动安装这些依赖,但如果遇到问题,你可能需要手动安装它们:

pip install numpy matplotlib pillow

matplotlib 也通常被推荐安装,因为它常用于显示生成的词云图。


基本使用

下面是一个最简单的 "Hello, World!" 示例,展示如何生成一个词云。

Python wordcloud包怎么用?-图2
(图片来源网络,侵删)

步骤 1: 准备文本数据

你可以使用任何字符串作为输入。

text = """
Python is an interpreted, high-level and general-purpose programming language. 
Python's design philosophy emphasizes code readability with its notable use of significant indentation. 
Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects.
Python is dynamically-typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming.
"""

步骤 2: 创建 WordCloud 对象并生成词云

from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 创建一个 WordCloud 对象
# 你可以在这里设置各种参数,比如背景色、最大词数、字体大小等
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
# 使用 matplotlib 显示生成的词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")  # 关闭坐标轴
plt.show()

运行这段代码,你就能看到一个基于你提供文本的词云图。


核心参数详解

WordCloud 类的构造函数有很多参数,通过调整它们可以定制词云的外观。

参数名 描述 示例
width 词云图像的宽度(像素) width=800
height 词云图像的高度(像素) height=400
background_color 背景颜色 background_color='white'background_color='#FFFFFF'
max_words 显示的最大单词数量 max_words=100
stopwords 停用词列表,这些词将被忽略,可以是集合或列表。 stopwords={'python', 'is'}
mask 一个形状掩码,传入一个图片路径或 numpy 数组,词云将根据此形状生成。 mask=np.array(Image.open('shape.png'))
colormap 词语的颜色方案,可以使用 matplotlib 的颜色名称或字符串。 colormap='viridis'colormap='autumn'
max_font_size 最大字体大小 max_font_size=60
min_font_size 最小字体大小 min_font_size=10
font_path 指定一个字体文件的路径(对于中文支持至关重要) font_path='simhei.ttf'
contour_width, contour_color 词云轮廓的宽度和颜色 contour_width=1, contour_color='steelblue'

高级用法示例

示例 1: 使用停用词

像 "the", "a", "is", "in" 这样的词没有实际意义,应该被过滤掉。

Python wordcloud包怎么用?-图3
(图片来源网络,侵删)
from wordcloud import WordCloud, STOPWORDS
# 默认的英文停用词
stopwords = set(STOPWORDS)
# 你也可以添加自己的停用词
stopwords.add("python") # 假设我们不希望 "python" 出现在词云中
wordcloud = WordCloud(stopwords=stopwords, background_color='white').generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

示例 2: 使用自定义形状

你可以使用一张图片作为词云的模板。

import numpy as np
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 1. 准备文本
text = "Python Java C++ JavaScript Go Rust PHP Swift Kotlin"
# 2. 加载形状图片
mask_image = np.array(Image.open("path/to/your/shape.png")) # 一个心形或圆形的图片
# 3. 生成词云
wordcloud = WordCloud(mask=mask_image, background_color="white", contour_width=3, contour_color='steelblue').generate(text)
# 4. 显示
plt.figure(figsize=(10, 10))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

注意:形状图片最好是背景为白色、前景为黑色的图片,这样效果最好。

示例 3: 中文词云处理

处理中文有一个关键问题:分词wordcloud 本身不提供分词功能,你需要先对中文文本进行分词,然后将分词后的结果(通常是空格或特定符号连接的字符串)传给它。

  1. 安装分词库:最常用的是 jieba

    pip install jieba
  2. 使用 jieba 进行分词并生成词云

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 1. 准备中文文本
chinese_text = """
Python是一种广泛使用的高级编程语言,以其简洁清晰的语法而著称,它支持多种编程范式,
包括面向对象、命令式、函数式和过程式编程,Python的动态类型系统和垃圾回收功能,
使得开发者能够更专注于解决问题,而不是底层细节,Python拥有庞大的标准库和活跃的社区,
被广泛应用于Web开发、数据科学、人工智能、自动化脚本等领域。
"""
# 2. 使用 jieba 进行分词
# 将分词结果用空格连接成一个字符串
words = " ".join(jieba.cut(chinese_text))
# 3. (重要) 指定中文字体路径
# 你需要下载一个中文字体文件(如 simhei.ttf, simsun.ttc 等)并指定其路径
# Windows 系统通常在 C:/Windows/Fonts/ 目录下可以找到
font_path = "C:/Windows/Fonts/simhei.ttf" # 请替换为你系统上实际存在的字体路径
# 4. 生成词云
wordcloud = WordCloud(
    font_path=font_path,  # 必须指定,否则无法正确显示中文
    width=800,
    height=400,
    background_color='white',
    max_words=50
).generate(words)
# 5. 显示
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

保存词云图

你可以将生成的词云图保存为图片文件。

# ... 在生成 wordcloud 对象之后 ...
# 保存为 PNG 图片
wordcloud.to_file("my_wordcloud.png")
# 保存为 JPEG 图片
# wordcloud.to_file("my_wordcloud.jpg")

wordcloud 包是进行文本数据可视化非常方便的工具,它的核心流程很简单:

  1. 获取文本:从文件、数据库或网络获取原始文本。
  2. 预处理文本(可选但重要):如分词(中文)、去除停用词、转换大小写等。
  3. 创建 WordCloud 对象:根据需求配置参数。
  4. 生成词云:调用 .generate() 方法。
  5. 展示或保存:使用 matplotlib 展示,或使用 .to_file() 保存。

对于中文用户,请务必记住 jieba 分词font_path 指定字体 这两个关键点。

分享:
扫描分享到社交APP
上一篇
下一篇