词云是一种数据呈现方式。
工具:python 3.6 sublime text
所需安装包:
pip install wordcloud matplotlib jieba pillow
font_path:可用于指定字体路径,包括otf和ttf
width:词云的宽度,默认为400
height:词云的高度,默认为200
mask:蒙版,可用于定制词云的形状
min_font_size:最小字号,默认为4
max_font_size:最大字号,默认为词云的高度
max_words:词的最大数量,默认为200
stopwords:将被忽略的停用词,如果不指定则使用默认的停用词词库
background_color:背景颜色,默认为black
mode:默认为RGB模式,如果为RGBA模式且background_color设为None,则背景将透明
# _*_ coding:utf-8 _*_
# 进行英文词云生成
from wordcloud import WordCloud
import matplotlib.pyplot as plt
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//实战一 词云的使用//'
# 打开文本
text = open(path + 'source//constitution.txt').read()
# 生成对象
wc = WordCloud().generate(text)
# 显示词云
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud1.png')
由于英文单词之间有空格,所以不需要额外的处理。
这里以西游记为例
# _*_ coding:utf-8 _*_
# 中文不分词效果展示
from wordcloud import WordCloud
import matplotlib.pyplot as plt
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//实战一 词云的使用//'
# 打开文本
text = open(path + 'source//xyj.txt',encoding = 'UTF-8').read()
# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud2.png')
这里用jieba进行中文分词
# _*_ coding:utf-8 _*_
# 中文分词后的词云
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//实战一 词云的使用//'
# 打开文本
text = open(path + 'source//xyj.txt',encoding = 'UTF-8').read()
# 中文分词
text = ' '.join(jieba.cut(text))
print(text[:100])
# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path+'create_images//wordcloud3.png')
这里将mask翻译为蒙版,使用蒙版之后,可以根据提供的蒙版图片,生成指定形状的的词云
# _*_ coding:utf-8 _*_
# 使用蒙版
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//实战一 词云的使用//'
# 打开文本
text = open(path+'source//xyj.txt',encoding='utf-8').read()
# 中文分词
text = ''.join(jieba.cut(text))
print(text[:100])
# 生成对象
mask = np.array(Image.open(path+"source//black_mask.png"))
wc = WordCloud(mask=mask,font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path+"create_images//wordcloud4.png")
# _*_ coding:utf-8 _*_
# 词云的颜色从蒙版中抽取
from wordcloud import WordCloud,ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//实战一 词云的使用//'
# 打开文本
text = open(path+'source//xyj.txt',encoding='utf-8').read()
# 中文分词
text = ''.join(jieba.cut(text))
print(text[:100])
# 生成对象
mask = np.array(Image.open(path+"source//color_mask.png"))
wc = WordCloud(mask=mask,font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
# 显示词云
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path+"create_images//wordcloud5.png")
项目链接:链接: https://pan.baidu.com/s/1p-QFD3WchxrvIlCnGuexKQ 提取码: zhcf
github