【Python 实战】wordcloud 带你生成漂亮的词云图

前两天写了一篇微信聊天记录导出教程:微信聊天记录导出为电脑文件实操教程(附代码)

后台很多小伙伴对词云感兴趣:给一段文本,然后根据其中词语出现的频率,生成好看的词云,像下面这张图一样:

生成这个其实很简单,几行 Python 代码就能搞定,今天就来带大家实操一番。

1. 环境准备

配置好 Python 环境后,需要安装两个包:

  • jieba:用于分词
  • wordcloud:用于生成词云
pip install jieba
pip install wordcloud

2. 获取模板图片(可选)

wordcloud 中默认生成的是矩形图片。

如果希望生成的词云图片具有特定的样式,你需要准备一张 png 格式的含有透明图层的图片,像下面这样:

怎么获取 png 格式的图片?

打开:https://www.remove.bg/zh/upload

上传一张图片,然后点击下载即可:

3. 获取字体文件

Windows 电脑中,字体默认保存在 C:\Windows\Fonts\,文件后缀为 .ttf。

找到想要想要生成的字体路径。

4. 获取文本信息

大家可以试试自己的微信聊天记录。

这里我们以《红楼梦》小说为例进行演示,输入的是 .txt 文本文件。

import jieba
def cut_words(text):
    # 使用 jieba 分词
    words = jieba.cut(text)
    return ' '.join(words)
with open('D:\Downloads\data\红楼梦.txt', 'r', encoding='utf-8') as f:
        text = f.read()
text = cut_words(text)

5. 生成词云图

最后,初始化一个 wordcloud 实例,把刚刚分词后的文本输入进来,生成最终的词云图片。

import wordcloud
def generate_wordcloud(text, stopwords=None, mask=None, max_words=50, img_name='1.jpg'):
    wordcloud = WordCloud(width=800, height=400, 
                        mask=mask,
                        background_color='white',
                        stopwords=stopwords,
                        font_path='C:\Windows\Fonts\simkai.ttf', # simkai.ttf STXINGKA.TTF
                        max_words=max_words,
                        ).generate(text)
    wordcloud.to_file(img_name)
  • text:第 4 步分词后的文本;
  • mask:第 2 步拿到的模板图片;
  • stopwords: 停止词,对于你不想在词云中出现的词,你都可以添加到这个文件中过滤掉它;
  • max_words:比如50,就是选择出现频率最高的50个词进行展示。

你可以换用不同的背景 mask 试试~

写在最后

如果本文对你有帮助,欢迎点赞收藏备用!

我是猴哥,一直在做 AI 领域的研发和探索,会陆续跟大家分享路上的思考和心得,以及干货教程。

新朋友欢迎关注 “猴哥的AI知识库” 公众号,下次更新不迷路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值