原始图片
生成词云后图片
开始安装阶段
1->安装wordcloud
简单安装
Pip install wordcloud
(容易报错)
手动安装
wordcloud下载地址
点击链接 ctrl+f 输入wordcloud 找到匹配的模块 下载
下载完成后 在文件所在目录下打开命令行 输入:
Pip install wordcloud-1.3.2-cp36-cp36m-win32.whl
等待安装完成
2->安装其他模块
wordcloud需要配合其他模块来完成
Numpy+PIL模块
jieba分词模块
Scipy模块
这是主要模块,安装方式同上
注意:读取图片有两种方式:numpy+PIL读取图片,sicpy.Misc模块读取图片 选择其中之一安装即可
开始操作阶段
3->开始词云
选择一段文字,一张图片我们就开始了
首先获取文字content
Content_text=”/”.join(jieba.cut(content),cut_all=”True”)
注意参数Cut_all
cut_all为真时,开启全模式(速度快,质量不保证)
cut_all为假时,开启精准模式(质量保证,适合文本分析)
定义wordcloud类
From wordcloud import WordCloud,STOPWORDS
WordCloud(..........)
下边是WordCloud函数的参数:
Background_color=””背景色
Font_path=”字体路径” 防止无法显示文字 注意 字体路径不支持中文
Max_words=最大词量
Mask=你读取的图片 图像形状
Stopwords= 禁词
Max_font_size= 最大词体
读取图片
方式一
from scipy.misc import imread
Pic=imread(图片path)
方式二
from PIL import Image
Import numpy as np
Pic =np.array(Image.open(图片 path))
生成词云
Ws.generate(content_text)
储存为文件
Ws.to_file(‘路径,格式’)
附上源码
#!/usr/bin/python
#-*-coding:utf-8-*-
#coding:utf-8
__author__='zyy'
#import matplotlib #解决matplotlib远程不能调用的错误
#matplotlib.use('Agg')
import pymysql
import jieba
from os import path
import matplotlib.pyplot as plt
import matplotlib.image as mping
from PIL import Image
import numpy as np
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
from scipy.misc import imread
#获取文字
def text():
text=[]
Db=pymysql.connect('?','?','?','?',charset='utf8')
cursor=Db.cursor()
sql='select advantage from data'
cursor.execute(sql)
turple_text=cursor.fetchall()
for s in turple_text:
s = ''.join(list(s))
text.append(s)
text=''.join(list(text))
return text
def word(text):
# 获取当前路径
d = path.dirname(__file__)
#jieba分词
jieba_text=' '.join(jieba.cut(text,cut_all=False)) #妈的 分词要加空格 或者特殊字符
#读取图片
china=imread("basketball.png") #scipy.misc方式都可以读取图片
#china=np.array(Image.open(path.join(d,'basketball.png'))) #numpy+PIL方式都可以读取图片
#设置词云颜色
image_color=ImageColorGenerator(china)
#设置禁词
stopwords=set(STOPWORDS)
stopwords.add("said")
#调用WordCloud
wc=WordCloud(
background_color="white",
font_path=path.join(d,'Bold.ttf'),
max_words=2000,
mask=china,
max_font_size=40,
stopwords=stopwords
)
#生成文字云
wc.generate(jieba_text)
#储存到文件
wc.to_file('word.png')
#显示词云
plt.imshow(wc.recolor(color_func=image_color),interpolation='bilinear')
plt.axis('off')
plt.show()
if __name__=='__main__':
text=text()
word(text)