python的wordcloud python文档生成的词云是空框怎么办

Python使用wordcloud+pillow基于给定图像制作词云 - CSDN博客
Python使用wordcloud+pillow基于给定图像制作词云
大致思路:Python扩展库wordcloud可以用来制作词云,而pillow库提供了图像处理功能,代码结合二者创建了词云头像,其中把给定的图像作为参考,只保留词云中与图像前景对应位置的像素,起到裁剪作用。
import random
import string
import wordcloud
import Image
&&& # 创建wordcloud对象
&&& wc = wordcloud.WordCloud(
&&&&&&& r'C:\windows\fonts\simfang.ttf',
&&&&&&& width=500, height=400,
&&&&&&& background_color='white',
&&&&&&& font_step=3,
&&&&&&& random_state=False,
&&&&&&& prefer_horizontal=0.9)
&&& # 创建并显示词云
&&& t = wc.generate(s)
&&& t.to_image().save('t.png')
# 如果空间足够,就全部显示
# 如果词太多,就按频率显示,频率越高的词越大
show('hello world 董付国 董付国 董付国 董付国 &abc fgh yhnbgfd&董付国 董付国 董付国 董付国 Python great Python Python')
上面代码某次运行生成的图片为:
create(imgFile, s):
&&& im = Image.open(imgFile)
&&& w, h = im.size
&&& # 创建wordcloud对象
&&& wc = wordcloud.WordCloud(
&&&&&&& r'C:\windows\fonts\simfang.ttf',
&&&&&&& width=w, height=h,
&&&&&&& background_color='white',
&&&&&&& font_step=3,
&&&&&&& random_state=False,
&&&&&&& prefer_horizontal=0.9)
&&& # 创建并显示词云
&&& t = wc.generate(s)
&&& t = t.to_image()
&&& for w1
in range(w):
&&&&&&& for h1
in range(h):
&&&&&&&&&&& if im.getpixel((w1,h1))[:3] == (255,255,255):
&&&&&&&&&&&&&&& t.putpixel((w1,h1), (255,255,255))
&&& t.save('result.png')
chs = string.ascii_letters + string.digits + string.punctuation
s = [''.join((random.choice(chs)for i
range(8))) for j
in range(650)]
s = ' '.join(s)
create('test1.png', s)
上面代码测试图像和生成的词云图像分别为
更多Python技术文章请关注微信公众号“Python小屋”进行阅读
本文已收录于以下专栏:
相关文章推荐
首先在安装wordcloud模块,安装方法有几个,可参考安装方法与可能会遇到的问题代码:#!/usr/bin/env python
# encoding: utf-8&&&
@author: gwu
    图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python...
使用python 的wordcloud,jieba 对电影《我不是潘金莲》豆瓣评论制作词云
我主要参考这篇文章进行实践:点击打开链接
python版本:3.5
首先整体步骤分为两步:第一步,抓取好友个性签名,这一步主要依靠itchat实现;第二步,分词并形成词云,主要依靠jieba和wo...
数据分析报告之中文标签云
在我的前一篇博客(python爬虫爬取拉勾网职业信息)中,获得了一份格式化的职业信息数据,不清楚的可以看看我的上一篇博客。
python制作标签云的包有几个,...
Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作...
from:/wbin91/p/3971079.html
翻译 http://pillow.readthedocs.org/en/...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)自由、创新、研究、探索
Linux/Windows Mono/DotNet [ Open Source .NET Development/ 使用开源工具进行DotNet软件开发]锐意进取,志存高远.成就梦想,只争朝夕.从你开始,创新世界.【That I exist is a perpetual supprise which is life. Focus on eCommerce】
上个星期五(16/11/18)去看了冯小刚的最新电影《我不是潘金莲》,电影很长,有点黑色幽默。看完之后我就去知乎,豆瓣电影等看看大家对于这部电影的评价。果然这是一部很有争议的电影,无论是在知乎还是豆瓣,大家对这部电影褒贬不一,有的说拍的好,寓意深刻,具有很强的现实讽刺意味,也有的说故作矫情,是一部烂片。大家众说纷纭,那么这部电影到底怎么样呢?我想还是用事实说话比较好。我想到最近刚好我学习了一段时间的爬虫了,也知道词云可以形象地反映词语分布。所以我决定亲自动手对《我不是潘金莲》制作一个词云。
&&&&&先说一下使用的工具:python2.7.12& wordcloud1.2.1 selenium2.53.6 jieba(一个中文分词工具) 分析的文本来源为豆瓣电影下《我不是潘金莲》的1.6W+评论。 &&&&
& selenium& 是一个可以操纵浏览器的爬虫工具,对于抓取动态页面(js生成的页面)非常方便。这里之所以使用selenium的一个主要原因是,电影的评论只有在登录之后才可以全部抓取,如果使用urllib2等标准库模拟登录,因为还要处理验证码等,略显麻烦,而使用selenium则非常简便。
& jieba 是一个优秀的中文分词工具,功能强大并且使用简便,这里因为涉及到中文,wordcloud对于中文的分词支持不是特别好,所以需要我们手动分词,我把这个任务交给了jieba。
&& 制作词云的流程如下:
&& 1.使用selenium 登录豆瓣,抓取《我不是潘金莲》下所有电影评论,并且保存到txt文件(一行是一条评论)
&& 2. 使用jieba 对于评论进行分词,得到新的文本
&& 3. 对于新的文本 使用wordcloud 进行制作词云
&话不多说,下面直接贴代码:
按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
有几点需要说明:
1.使用selenium简化了登录抓取过程,但是也有一个缺点,因为需要启动浏览器,所以抓取效率就比较低,电影评论页数较多,有时会出现网页加载过慢等情况导致无法正常抓取数据。所以这里使用n,count作为标记,记录意外退出时上次抓取的位置,这样下次可以继续从上次中断的地方抓取。
2. wordcloud 默认的是英文字体,所以在WordCloud()方法中需要指定一个中文字体的位置(可以使用windows自带的中文字体,比如宋体,楷体都可以),使用font_path="字体路径"
3. selenium 如果驱动狐火浏览器的话,需要自行下载驱动(一个.exe文件),具体方法可以自行上网搜索,这里不赘述。
最后 下载的评论文本文件我已经放到我的github(/Lyrichu/selenium/blob/master/pjl_comment.txt),有兴趣的朋友可以自己下载。最后得到的词云图如下:
阅读(...) 评论()
随笔 - 16212
评论 - 1414Python实现中文词云(wordcloud),根据背景图片生成词云 - CSDN博客
Python实现中文词云(wordcloud),根据背景图片生成词云
Python实现词云的库有很多,较为常见的就是wordcloud
这个库基于PIL,PIL是必不可少的,需要用的还有matplotlib和numpy
本文使用解释器为python2.7.13 32位
pip install wordcloud
针对库示例做了一个简单修改,直接使用generate_from_frequencies方法,而没有使用generate()方法。有这样几个原因,generate_from_frequencies是基础的方法,generate()仍然还是要调用generate_from_frequencies方法;实验比较直接。
库的使用方法很简单,但是中文使用的话会有几个问题,一个是字符编码问题,二是字体问题,默认的字体不支持中文,因此需要加入font_path = "simfang.ttf"指定字体,这是把字体指定为同一个文件夹下的simfang.ttf。
from os import path
from wordcloud import WordCloud
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
fre={"哈哈".decode('utf-8'): 1.2,"呵呵".decode('utf-8'):6}
wordcloud = WordCloud(font_path = "simfang.ttf").generate_from_frequencies(fre)
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
后续的工作还可以将引入分词工具直接进行分词。
结合我前面的做的例子
先抽取网页的文本,然后再进行分词,将分词结果根据频率作为字典传给generate_from_frequencies,生成词云。
更简单,比如直接抽取文章的关键词,比如博客每篇文章就有关键词,用Counter库,直接生成频率调用。
使用背景图片生成词云
对上面的代码做了一点简单的改动
from os import path
from wordcloud import WordCloud
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
d = path.dirname(__file__)
text = open(path.join(d, 'constitution.txt')).read().decode('utf-8')
import numpy as np
from PIL import Image
football = np.array(Image.open(path.join(d, "timg.jpg")))
fre={"哈哈".decode('utf-8'): 1.2,"呵呵".decode('utf-8'):6,"咯咯".decode('utf-8'):6,
"呵呵".decode('utf-8'):6,"咯咯".decode('utf-8'):6,
"啦啦".decode('utf-8'):1,"哦哦".decode('utf-8'):6,
"恩恩".decode('utf-8'):3,"呃呃".decode('utf-8'):6,
"饿饿".decode('utf-8'):3,"嗯嗯".decode('utf-8'):6,
"哼哼".decode('utf-8'):5,"丽丽".decode('utf-8'):6,
"咔咔".decode('utf-8'):7,"咳咳".decode('utf-8'):6,
"乐乐".decode('utf-8'):6,"呐呐".decode('utf-8'):6,
"嘎嘎".decode('utf-8'):6,"嘻嘻".decode('utf-8'):6}
wordcloud = WordCloud(font_path = "simfang.ttf",mask=football).generate_from_frequencies(fre)
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
本文已收录于以下专栏:
相关文章推荐
毕设中期答辩,想展示一下前期数据抓取和聚类的成果,感觉词云这种形式不错,于是简单学习了一下wordcloud。
首先是安装
我是使用pip直接安装的,
pip install wordcloud...
前叙该博文继承之前的文章,进一步介绍NLPIR2016的使用,三个内容(利用NLPIR 的发现新词功能自动提取文本内的新词汇,解决worldcloud中英文混合只显示中文的问题,NLPIR与world...
首先在安装wordcloud模块,安装方法有几个,可参考安装方法与可能会遇到的问题代码:#!/usr/bin/env python
# encoding: utf-8&&&
@author: gwu
最近研究了一下 如和利用背景图片生成词云,设置停用词词集先上一波效果图 一个简单的
一个复杂的
# -*- coding: utf-8 -*-#!/usr/bin/env python
数据分析报告之中文标签云
在我的前一篇博客(python爬虫爬取拉勾网职业信息)中,获得了一份格式化的职业信息数据,不清楚的可以看看我的上一篇博客。
python制作标签云的包有几个,...
python3解决无法pip安装wordcloud问题,并生成一个简单的词云,代码简单
词云效果图:
生成词云的模型图
1.安装woldcloud包(前提是已安装python)
cmd下执行pip install wordcloud
如果出现下图的错误信息:
则需先安装Visu...
这是python中使用wordcloud包生成的词云图。下面来介绍一下wordcloud包的基本用法。class wordcloud.WordCloud(font_path=None, w...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)python词云 wordcloud入门 - CSDN博客
python词云 wordcloud入门
构建词云的方法很多, 但是个人觉得python的wordcloud包功能最为强大,还可以自定义图片.
官网: https://amueller.github.io/word_cloud/
github: /amueller/word_cloud
安装wordcloud
pip install wordcloud
github下载并解压
wget& /amueller/word_cloud/archive/master.zip
unzip master.zip
rm master.zip
cd word_cloud-master
安装依赖包
sudo pip install -r requirements.txt
安装wordcloud
python setup.py install
与模版图片颜色相同的词云
采用https://amueller.github.io/word_cloud/auto_examples/colored.html#colored-py 进行讲解
#!/usr/bin/python
# -*- coding:UTF-8 -*-
from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
d = path.dirname(__file__)
# Read the wholedd text.
text = open(path.join(d, 'alice_result.txt')).read()
# read the mask / color image
# taken from /art/quot-Real-Life-quot-Alice-
alice_coloring = imread(path.join(d, &alice_color.png&))
wc = WordCloud(background_color=&white&, max_words=100, mask=alice_coloring,
stopwords=STOPWORDS.add(&said&),
max_font_size=50, random_state=42)
# generate word cloud
wc.generate(text)
# create coloring from image
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(wc)
plt.axis(&off&)
plt.figure()
# recolor wordcloud and show
# we could also give color_func=image_colors directly in the constructor
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis(&off&)
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray)
plt.axis(&off&)
plt.show()
wc.to_file(path.join(d, &cloudimg.png&))
cat alice_result.txt
3DS,PS3,PSV,PS4,XBox360,3DSLL,PSP,500G,3dsll,1000,WIIU,3ds,XboxOne,250G,65,PSV00,8G,WII
/p/?refer=666666
http://blog.csdn.net/tanzuozhev/article/details/
本文已收录于以下专栏:
相关文章推荐
今天在Python 3.6环境中,制作词云,需要安装wordcloud模块,在安装的过程中遇到了“error: Microsoft Visual C++ 14.0 is required…” 的问题,...
python有很多优秀的地方,现在我们使用wordcloud去制作一些好玩有趣的东西吧。准备条件:
python 3.x,matplotlib,wordcloud,numpy+mkl,scipy#w...
python真的超级超级好玩呐,不管是爬虫还是数据挖掘,真的都超级有意思。
今天,来说一说python一个好玩的模块wordcloud
构建词云的方法很多, 但是个人觉得python的wordclou...
python3解决无法pip安装wordcloud问题,并生成一个简单的词云,代码简单
之前为了测试一个tensorflow的python代码,
安装了64位的python,和电脑上32bit的冲突了,
一开始没发现,需要安装wordcloud模块的时候才发现
使用pip安装,就会报...
pip install wordcloud
github下载并解压
这是python中使用wordcloud包生成的词云图。下面来介绍一下wordcloud包的基本用法。class wordcloud.WordCloud(font_path=None, w...
Microsoft Visual C++ 9.0 is required
python27在运行setup.py安装时, ...
第一种基本安装方法
1 下载第三方包,解压
2 在命令提示符里输入cmd,然后用cd进入到第三方包的路径下
3 输入python setup.py build
4 输入pyth...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)1674人阅读
python(11)
首先说一下什么是词云,顾名思义就是很多个单词,然后通过出现的频率或者比重之类的标准汇聚成一个云朵的样子嘛
就比如这样的
那其实呢现在网上已经有很多能自动生成词云的工具了,比如Wordle,Tagxedo等等
那么呢其实用python也能实现这样的效果,我们通过jieba库和wordcloud库也能十分轻松的完成词云的构建
前期工作:安装Anaconda平台和安装jieba库和wordcloud库
Anaconda平台是使用python进行数据分析的一个集成平台,里面已经帮你安装好了许多常用的库,并且环境变量路径啥的都不用自己配置了,非常方便,可自行百度(安装基本一直下一步就可以了
安装完成呢可以看见有第一个的Anaconda
Prompt就和Windows的cmd,Linux的shell是差不多的,新手最常用的就是conda命令,比如conda list 查看安装了哪些package,conda install xxx &安装第三方库,和pip的用法是雷同的,至于更多的想了解可以自行搜索
那么因为环境变量等等这个平台都帮我们配置好了,所以我们可以直接在pycharm上呢选取它的解释器就可以了,和你原来安装的是不冲突的
下一步呢直接进入Anaconda Prompt,通过pip命令来安装jieba库(不知道为啥,这里我使用conda无法下载
同样的我们继续安装wordcloud库
基本上这是所有windows用户安装都会遇到的问题,这时候怎么办呢(当然是弃坑保平安啊喂
不用着急,有一个非常简单的办法呢就是去到&http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud &这个库的官网下载对应版本的whl,然后进入你存放whl目录下再通过pip安装就能完美解决了
这样呢,我们就经历千辛万苦把前期工作做完了,下一步就是编写代码了
直接show me the code!
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import jieba
text = open('1.txt','r',encoding = 'utf-8').read()
word_jieba = jieba.cut(text,cut_all=True)
word_split = & &.join(word_jieba)
my_wordclud = WordCloud(max_words=100,width = 1600,height=800).generate(word_split)
plt.imshow(my_wordclud)
plt.axis(&off&)
plt.show()
什么?就这么短?没错。。。就是这么强悍,分析下代码呢
首先读入txt文件,而我们对QQ聊天记录进行导出的话里面有一些文字编码是gbk格式的,一般来说在jieba的cut方法中是不推荐直接读入gbk格式,很容易造成未知的错误,所以这里我们读入的同时使用utf-8编码来读
第6-7行就是对输入的字符串进行分词和空格来间隔,jieba.cut()方法就是重要的分词函数了,接受三个参数,分别是需要分词的字符串,是否采用全模式以及是否使用HMM模型,具体的可以自行查阅资料
第8行就是对已经分隔好的字符生成词云啦,里面WordCloud()构造函数有多达22个重载,可以供使用者实现很多的功能,比较常见的有
#my_wordcloud = WordCloud().generate(wl_space_split) 默认构造函数
my_wordcloud = WordCloud(
background_color='white',
# 设置背景颜色
mask = abel_mask,
# 设置背景图片
max_words = 200,
# 设置最大现实的字数
stopwords = STOPWORDS,
# 设置停用词
font_path = C:/Users/Windows/fonts/simkai.ttf',# 设置字体格式,如不设置显示不了中文
max_font_size = 50,
# 设置字体最大值
random_state = 30,
# 设置有多少种随机生成状态,即有多少种配色方案
).generate(wl_space_split)
而最后9-11行呢就是用pyplot展示云图了
将你导出的QQ聊天记录放在项目的根目录下,然后运行,等1分钟左右属于你的聊天记录的云图也就出来了!
23333在毒奶粉一个交流群的云图
补充:可能会有同学在运行代码的时候出来的时候是没有中文的,原因是因为wordcloud的云库中默认的ttf是不支持中文的,我们可以通过进入自己的C盘/Windows/Fonts中找到一个支持中文的ttf,然后打开wordcloud.py源代码,将
最后的参数改为自己修改的ttf,或者在生成云图里面的构造函数自己定义一个新的ttf也是滋瓷的
另外呢如果是QQ的聊天记录导出,查看的时候会有很多行都是记录那个人说话的时间,或者是表情图片,那么我们可以通过自己写一个小过滤器呢,去掉记录时间的记录和一些不必要的纯表情
#newtext = []
for word in open('sb.txt',encoding='utf-8'):
tmp = word[0:4]
if(tmp == &2016& or tmp == &2017&):
tmp = word[0:2]
if(tmp[0]=='['):
newtext.append(word)
with open('ssb.txt','w',encoding='utf-8') as f:
for i in newtext :
f.write(i)
最后呢我们可以留意到其实这样生成出来的云图会有很多不必要的词汇,比如上面云图中的“那样”,“一个”,“现在”,“不是” 这样的没有意义的词汇,怎么实现关键词的目的性选择呢?值得思考思考和以后继续改进这个小程序
感谢以下参考材料
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:263089次
积分:12770
积分:12770
排名:第1176名
原创:1063篇
评论:48条
(1)(5)(6)(2)(8)(10)(6)(1)(18)(10)(21)(13)(56)(81)(111)(43)(139)(152)(77)(139)(93)(43)(32)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 python wordcloud教程 的文章

 

随机推荐