python 中文词云_python词云 wordcloud+jieba生成中文词云图

简介

Python+jieba+wordcloud+txt+gif生成动态中文词云

本文基于爬虫爬取某微信号三个月的文章为例,展示了生成中文词云的完整过程。本文需要的两个核心Python类库:jieba:中文分词工具

wordcloud:Python下的词云生成工具

准备anaconda:一个开源的Python发行版本,用于管理Python版本,可以实现管理不同的Python版本(Python2和Python3)

Pycharm:Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。安装第三方库很方便。

jieba介绍

import jieba

str = "明明知识点都熟记于心,可是在考试的时候脑子一片空白,什么都想不起来了"

#使用自定义字典

#Python学习交流群:1004391443

#jieba.load_userdict('dict.txt')

ex_list1 = jieba.cut(str)

ex_list2 = jieba.cut(str , cut_all= True)

ex_list3 = jieba.cut_for_search(str)

print("精准模式:"+'/'.join(ex_list1))

print("全模式:"+'/'.join(ex_list2))

print("搜索引擎模式:"+'/'.join(ex_list3))

精准模式:明明/知识点/都/熟记/于心/,/可是/在/考试/的/时候/脑子/一片空白/,/什么/都/想不起来/了

全模式:明明/明知/知识/知识点/都/熟记/于/心///可是/在/考试/的/时候/脑子/一片/一片空白/空白///什么/都/想不起/想不起来/起来/了

搜索引擎模式:明明/知识/知识点/都/熟记/于心/,/可是/在/考试/的/时候/脑子/一片/空白/一片空白/,/什么/都/起来/想不起/想不起来/了

可以看到全模式和搜索引擎模式下分词分得比精准模式更稀碎。

可以添加上用户自定义字典。

自定义词典的格式:一个词占一行;每一行分三部分,一部分为词语,另一部分为词频,最后为词性(可省略),用空格隔开

其中dict.txt的内容是:

一片空白 5

考试的时候

可以只有词语,后面的词频和词性都可以省略。

精准模式:明明/知识点/都/熟记/于心/,/可是/在/考试的时候/脑子/一片空白/,/什么/都/想不起来/了

全模式:明明/明知/知识/知识点/都/熟记/于/心///可是/在/考试/考试的时候/时候/脑子/一片/一片空白/空白///什么/都/想不起/想不起来/起来/了

搜索引擎模式:明明/知识/知识点/都/熟记/于心/,/可是/在/考试/时候/考试的时候/脑子/一片/空白/一片空白/,/什么/都/起来/想不起/想不起来/了

可以看出来在三种模式下,“一片空白”和“考试的时候”都被筛选出来了。

源码

import jieba # 中文分词包

from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

from os import path

# 定义绝对路径地址

__file__ = r".\bbb\\"

# 把路径地址字符串转换为文件路径

d = path.dirname(__file__)

f = path.dirname(r".\ccc\\")

jieba.load_userdict("dict.txt")

#根据时间生成图片

for i in range(0,num):#num为文件个数

# path.join实现文件地址的链接

text = open(path.join(d, str(i)+'.txt')).read()

chtext = ''

with open(path.join(d, str(i)+'.txt'), 'r') as fin:

for line in fin.readlines():

line = line.strip('\n')

chtext += ' '.join(jieba.cut(line))

# 调用包PIL中的open方法,读取图片文件,通过numpy中的array方法生成数组

backgroud_Image = np.array(Image.open(path.join(d, "111.jpg")))

# 绘制词云图

wc = WordCloud(

background_color='white', # 设置背景颜色,与图片的背景色相关

mask=backgroud_Image, # 设置背景图片

font_path='C:\Windows\Fonts\STZHONGS.TTF', # 显示中文,可以更换字体

max_words=2000, # 设置最大显示的字数

stopwords={'企业'}, # 设置停用词,停用词则不再词云图中表示

max_font_size=150, # 设置字体最大值

random_state=1, # 设置有多少种随机生成状态,即有多少种配色方案

scale=1 # 设置生成的词云图的大小

)

# 传入需画词云图的文本

wc.generate(chtext)

image_colors = ImageColorGenerator(backgroud_Image)

plt.imshow(wc.recolor(color_func=image_colors))

# 隐藏图像坐标轴

plt.axis("off")

# 展示图片

plt.show()

# 按递增顺序保存生成的词云图

wc.to_file(path.join(f, str(i)+'.jpg'))

当然,在这里还有三点:

png是无损的图片,用来生成最后的gif文件会清晰,但会很大,用jpg也可以;

本文是要通过绘制第一天、第一天+第二天、然后以此类推,生成的词云密度会越来越大,但是在wordcloud上设了选词词数上限。

可以通过屏蔽某些词不出现在词云上。

图片的像素会对图片的生成速度产生巨大影响,像素越高生成的图片越慢,而像素越低,生成的图片速度越快同时在词云上挂载的词越少。

效果

尺寸:400*400的图片

生成图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值