python中如何生成词云

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂

在这里插入图片描述

今天给大家看看,如何使用python实现根据记录创建生成词云

首先我们看下效果图。

在这里插入图片描述
在这里插入图片描述
一个是生成了新闻的词云,另一个是生成了聊天记录的词云。下面是代码:

# coding: utf-8

import codecs
import logging
import os

from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image, ImageFont, ImageDraw
import numpy as np
import jieba
import pandas
import imageio

from common_util.config import PROJECT_PATH


# content:需要生成的内容
# filename词云图片名称
# title 标题
def createciyun(content, filename, title):
    stopwords_filename = PROJECT_PATH+'userdict/stop_words_full.txt'
    # 加载自定义词典
    jieba.load_userdict( PROJECT_PATH+"userdict/custom_dict.txt")
    # 配置停用词
    stopwords = set([line.strip()
                     for line in codecs.open(stopwords_filename, 'r', 'utf-8')])

    # 使用jieba进行分词
    _seg_list = jieba.cut(content)
    words = []
    for seg in _seg_list:
        word = seg.strip().lower()
        if len(word) > 1 and word not in stopwords:
            words.append(word)
    words_df = pandas.DataFrame({'word': words})
    words_stat = words_df.groupby(by=['word'])['word'].agg(np.size)
    words_stat = words_stat.to_frame()
    words_stat.columns = ['number']
    words_stat = words_stat.reset_index().sort_values(by="number", ascending=False)
    print("共去重 %d 个词(已去重)" % len(words_stat))

    # 生成词云图片
    _background_img = imageio.imread( PROJECT_PATH+"Images/cat.jpg")
    _word_cloud = WordCloud(font_path= PROJECT_PATH+"font/jiangxizhuokai.ttf",
                            background_color=(255, 255, 255),
                            mask=_background_img,
                            max_font_size=600,
                            random_state=100
                            )
    _word_cloud = _word_cloud.fit_words(
        dict(words_stat.head(100).itertuples(index=False))
    )
    _background_img_colors = ImageColorGenerator(_background_img)
    _word_cloud.recolor(color_func=_background_img_colors)
    # 将词云图片保存到文件
    _word_cloud.to_file(filename)
    # 添加标题
    add_title(filename, title)
    logging.debug("生成词云成功!!")


# file:文件
# title_name:标题名
def add_title(file, title_name):
    # 加载图片
    body_img = Image.open(file)
    width, height = body_img.size
    # 增加的高度,用来放头部
    additional_height = 100
    height += additional_height
    # 生成一个尺寸为width,height的背景色为白色的图片
    bg = Image.new('RGB', (width, height), color=(255, 255, 255))
    # 将原始图片粘贴到新背景的顶部
    bg.paste(body_img, (0, additional_height))
    # 字体路径
    fontpath =  PROJECT_PATH+'font/jiangxizhuokai.ttf'
    font = ImageFont.truetype(fontpath, 32)
    # 计算出需要写入的文字占用的像素
    w, h = font.getsize(title_name)
    # 创建画布
    draw = ImageDraw.Draw(bg)
    # 计算标题的起始位置,使其位于图片的正上方
    title_y = additional_height - h  # 从顶部开始,减去标题的高度
    # 绘制标题文本
    draw.text(((width - w) / 2, title_y), title_name, font=font, fill="#ff0000")
    bg.save(file, "PNG")
    print("{}标题添加完成".format(file))

用到的生成图片如下:

在这里插入图片描述
用到的其他字典和过滤池如下所示:

雄雄的小课堂 3 nz
穆雄雄 3 nz
雄雄 3 nz
雄雄的工具箱 3 nz
小鱼早晚安打卡 3 nz
AT&T 3 nz
B超 3 n
c# 3 nz
C# 3 nz
c++ 3 nz
C++ 3 nz
T恤 4 n
A座 3 n
A股 3 n
A型 3 n
A轮 3 n
AA制 3 n
AB型 3 n
B座 3 n
B股 3 n
B型 3 n
B超 3 n
B轮 3 n
BB机 3 n
BP机 3 n
C盘 3 n
C座 3 n
C语言 3 n
CD盒 3 n

"

$
&

(
)
*
+
,

.



./
.一
.数
.日
/
//
0
1
2
3
4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值