目录
词云,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现。词云可以快速过滤掉大量的低频低质的文本信息,使得浏览者只要一眼就可领略文本的主旨。所谓一叶知秋是也。
wordclund 是 python 制作词云的一个第三方库,官方文档 wordcloud。其特点是:
- 填充所有的可用空间
- 能够使用任意的mask
- 修改轻松而实现高效
1、安装
既然是第三方库,就需要有劳 python包管理器 pip 的大驾了。
python3 -m pip install wordcloud
注意:wordcloud 似乎对 arm64 系统尚不支持,安装会报错:
error: command '/usr/bin/aarch64-linux-gnu-gcc' failed with exit code 1
原因可能为缺少依赖软件包。
2、使用
wordcloud 把词云当作一个 WordCloud 对象,其主要操作函数为 wordcloud.WordCloud(),可以根据文本词语出现的频率输出词云,并通过调整相应参数实现不同的输出效果。
参数及含义:
(font_path=None, width=400, height=200, margin=2,\
ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,\
color_func=None, max_words=200, min_font_size=4,\
stopwords=None, random_state=None, background_color='black',\
max_font_size=None, font_step=1, mode="RGB",\
relative_scaling='auto', regexp=None, collocations=True,\
colormap=None, normalize_plurals=True, contour_width=0,\
contour_color='black', repeat=False,include_numbers=False,\
min_word_length=0, collocation_threshold=30)
参数 | 描述 |
---|---|
font_path | 字体路径 |
width | 画布宽度(像素) |
height | 画布高度(像素) |
margin | 边缘(像素) |
ranks_only | |
prefer_horizontal | |
mask | 配合imread()函数使用,若参数为空,则使用二维遮罩绘制词云。若非空,则设置的宽高值将被忽略,遮罩被 mask 形状取代。 |
scale | 缩放比例 |
color_func | 可调用的颜色函数对象 |
max_words | 显示的最大单词(词语)数 |
min_font_size | 最小字号 |
stop_words | 不显示的单词列表 |
random_state | |
background_color | 画布背景色 |
max_font_size | 最大字号 |
font_step | 字号步进 |
mode | 颜色模式。当模式为RGBA,背景色为None时,将生成透明背景。 |
relative_scaling | 相对比例 |
regexp | 正则表达式,用于将输入文本分割为进程文本中的标记。 |
collocations | 是否包含两个单词的搭配(双字母组合) |
colormap | 为每个单词随机绘制颜色,如果指定了color_func则会忽略。 |
normalize_plurals | 是否删除单词末尾的s |
contour_width | 轮廓宽度,如果>1且mask非空,将会绘制轮廓。 |
contour_color | 轮廓颜色 |
repeat | 是否重复单词和短语,直到达到最大的单词或最小的字体大小 |
include_numbers | 是否将数字视为短语 |
min_word_length | 最小单词长度 |
collocation_threshold | 搭配阈值 |
3、操作流程
步骤 | 描述 |
---|---|
<f>=wordcloud.WordCloud() | 配置词云参数 |
<f>.generate(txt) | 加载文本至词云 |
<f>.to_file() | 输出词云文件(.png或.jpg) |
4、示例
英文文本(以莎翁剧本《Hamlet》为例)
import wordcloud
f=open('hamlet.txt').read()
txt=''.join(f)
w=wordcloud.WordCloud(width=1920,height=1080,background_color='white')
w.generate(txt)
w.to_file('hamlet.png')
中文文本(以十九届六中全会决议为例)
import jieba
import wordcloud
f=open('决议.txt','r',encoding='UTF-8')
t=f.read()
f.close()
ls=jieba.lcut(t)
txt=''.join(ls)
w=wordcloud.WordCloud(font_path='msyh.ttf',width=1920,height=1080,background_color='white')
w.generate(txt)
w.to_file('决议.png')
注意,中文文本字体路径不能为空,否则无法正确显示。
5、mask参数
mask 参数是一个很有趣的参数,它可以指定词云输出的形状。您要做的只是选择一张喜欢的图片(.png 或 .jpg 等格式,透明背景最好)作为 mask 即可。
from imageio import imread
mask=imread('mask.png')
<f>=wordcloud.WordCloud(...mask=mask...)
注:
关于英文及中文词频的统计,请参见:
1、英文词频:Hamlet, are u ok?要统计某个词汇或事物出现的频度,如何才能实现呢?https://blog.csdn.net/iprobobo/article/details/122767768
2、中文词频:《三国演义》与结巴(jieba)的碰撞中文分词练习https://blog.csdn.net/iprobobo/article/details/122774849
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106957.html