当前位置:   article > 正文

python中如何生成词云_python词云生成

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))

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

用到的生成图片如下:

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

雄雄的小课堂 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/753399
推荐阅读
相关标签
  

闽ICP备14008679号