- WordCloud用于将词语按照其出现的频率覆盖到指定图片上,使其呈现原图的构型,出现频率越高的词语占据的面积越大。
- 将文本自动分割成词语需要导入【jieba】包。
- 处理图片需要导入【PIL】的【Image】包。
- 提取图片的像素需要导入【numpy】包。
- 生成词云需要导入【wordcloud】的【WordCloud】包,一般自动安装都会失败,需要从【Python Extension Packages for Windows - Christoph Gohlke (uci.edu)】中根据当前的Python版本下载对应的包,然后通过pip安装。
- 绘图需要导入【matplotlib】的【pyplot】包。
import jieba
import numpy
import xlrd
from PIL import Image
from matplotlib import pyplot
from wordcloud import WordCloud
# 获取数据
book = xlrd.open_workbook('movie.xls')
sheet = book.sheet_by_name('sheet1')
row = sheet.nrows
text = ''
for i in range(row):
text += sheet.cell(i, 4).value
# 自动分词
wordList = jieba.cut(text)
# 拼接
text = ' '.join(wordList)
# 打开图片
img = Image.open('img.PNG')
# 获取像素
arr = numpy.array(img)
# 生成词云
wc = WordCloud(
background_color='white',
mask=arr,
font_path='C:\Windows\Fonts\simkai.ttf'
)
wc.generate_from_text(text)
# 绘图
fig = pyplot.figure(1)
pyplot.imshow(wc)
pyplot.axis('off')
pyplot.savefig('word.jpg', dpi=500)