导入模块
from wordcloud import WordCloud
import jieba
import imageio
import matplotlib.pyplot as plt
from PIL import ImageGrab
import numpy as np
wordcloud以空格为分隔符号,来将文本分隔成单词
PIL pillow模块
img = imageio.imread('image.png')
这行代码使用imageio库读取一个名为“image.png”的图像文件,并将图像作为numpy数组存储在变量“img”中
dir可以查看一些东西
WordCloud对象创建的常用参数
font_path
:字体文件的路径 - - - 默认Nonewidth
,height
:词云生成图片的宽高 - - - 默认宽400px,高200pxmask
:词云形状 - - -默认None(方形图)min_font_size
,max_font_size
:词云中最大最小的字体字号 - - - 最小4号 最大根据高度自动调节font_step
:字号步进间隔 - - - 默认1max_words
:最大次数 - - - 200stopwords
:被排除的词列表,排除词不在词云中显示 - - - stopwords={‘python’}background_color
:图片背景色 - - - 黑色repeat=True
:词太少时可以让词重复出现在词云中contour_width
,contour_color
:添加词云边框和边框颜色colormap
:修改字体颜色
Matplotlib附带的色彩映射参考
WordCloud类的常用方法
generate(text)
:由text文本生成词云to_file(filename)
:将词云图保存为名为filename的文件to_image()
:可以直接在jupyter里面看到词云的图片
案例
from wordcloud import WordCloudw = WordCloud()
w.generate('hi hi hello hi hi hello world!')
w.to_file('hi.png')
import wordcloudw = wordcloud.WordCloud(background_color='white',repeat=True)
text = 'hi,hello world!'w.generate(text)
w.to_image()
w = wordcloud.WordCloud(background_color='white',repeat=True,colormap='PuRd_r')
mask = np.array(PIL.Image.open('aixin.png'))
w = wordcloud.WordCloud(mask=mask,background_color='white',repeat=True,colormap='PuRd_r')
默认mask表示为binary(二进制)
对应参数是numpy 中的 array数组,将图片用PIL库打开 使用矩阵表示出来(图像本质就是矩阵)
mask = np.array(PIL.Image.open('aixin.png'))
w = wordcloud.WordCloud(mask=mask,background_color='white',repeat=True,colormap='RdBu',contour_color='black',contour_width=5)
w = wordcloud.WordCloud(mode='RGBA',mask=mask,background_color='white',repeat=True,colormap='RdBu')
mode=‘RGBA’ 保存的图片不能为.jpg后缀,可以使用png
from wordcloud import WordCloud
import imageio
import matplotlib.pyplot as pltmk = imageio.imread('aixin.png') # 打开图片文件
w = WordCloud(mask=mk,background_color='lightpink',font_path='msyh.ttc',colormap='Accent',min_font_size=2,stopwords={'就在这时'}) # msyh微软雅黑字体
f = open('data.txt','r',encoding='utf-8')
w.generate(f.read())
plt.imshow(w) # 显示词云
plt.axis('off') # 隐藏坐标轴
plt.show()
w.to_file('aixincy.png') # 保存的词云图片大小和mask图片的大小一样
w.generate(" ".join(jieba.lcut(txt)))即为用空格的方法去分隔jieba库精确模式下形成的字符串。
jieba自带的词库包括:
-
dict.txt.big - 大型词库,包含约2.7万个词汇和常用词语
-
dict.txt.small - 小型词库,包含约1.4万个词汇和常用词语
-
user.dict - 用户自定义词库,用户可以将自己的词汇添加到此文件中
-
stop_words.txt - 停用词词典,包含约1000个常用停用词
-
idf.txt - 关键词权重词典,用于提取文本中的关键词
-
stop_words_cn.txt - 中文停用词词典,包含约1500个常用停用词
-
stopwords.txt - 英文停用词词典,包含约400个常用停用词jieba自带的词库包括: