python 词云_Python:“词云”学习笔记

761281d071e948a859bd276c0f40244b.png5月3日学习笔记

昨天原本在研究简单爬虫的范例,结果遇到困难了,其中有一个关于json的内容我想去详细学习一下,看了几个资料都不满意,便去中国大学MOOC上看嵩天老师的课。结果没找到相应内容,却发现了词云这个东西,一下吸引了我,便转移了方向,连带文件操作也一起回顾了一下。很多知识不总用就忘记了,记下学习笔记留着温故知新。

最初看到过词云效果的图片,当时并没在意,还以为是一种特殊的文字处理效果呢,根本没想到是根据数据统计自动生成的图形。(千万别笑话我 cd3dd0bc9582fe84d2282201b5bc362e.png cd3dd0bc9582fe84d2282201b5bc362e.png cd3dd0bc9582fe84d2282201b5bc362e.png)后来大致知道了原理,也感觉这个东西一定很难实现,我的水平应该还不行,便没有去细究。当然,也是因为需求不明显,没有主动学习的动力。(畏难是我的本性 e691a7f8293f50b4b6de71086e848196.png e691a7f8293f50b4b6de71086e848196.png e691a7f8293f50b4b6de71086e848196.png,真实需求是我的动力 e3cdd758c5379623ae9f1ce9de34ee96.png e3cdd758c5379623ae9f1ce9de34ee96.png e3cdd758c5379623ae9f1ce9de34ee96.png )最近这段时间的学习状态和教学需求使我关注一切可能吸引学生的内容,而词云应该是其中之一。学完之后才发现,原来so so so easy!来看代码eb3d1669cf2a9b7a9421326a8aa0a6b8.pngeb3d1669cf2a9b7a9421326a8aa0a6b8.pngeb3d1669cf2a9b7a9421326a8aa0a6b8.png
import wordcloudimport jiebafrom imageio import imreadmk=imread('2.jpg')w=wordcloud.WordCloud(mask=mk,background_color='orangered',font_path="msyh.ttc")f=open('test.txt','r',encoding='utf-8')t=f.read()w.generate(' '.join(jieba.lcut(t)))w.to_file('wordcloud.png')
9行代码就实现了这个功能,篇首的词云图片就是用它做出来的,此处是不是应该有掌声?! ad891bb8c9ea90c77e18cedfbaf36588.png ad891bb8c9ea90c77e18cedfbaf36588.png ad891bb8c9ea90c77e18cedfbaf36588.png c5f629c706eff4d6c453c682d5576b90.png c5f629c706eff4d6c453c682d5576b90.png c5f629c706eff4d6c453c682d5576b90.png当然掌声是送给嵩天老师的,我是从他那里学习的, 只不过综合了一下,把与他课程中有冲突的地方解决了一下。言归正传,解释一下代码,然后 强调一下和课程中有冲突的地方
import wordcloud #生成词云的库import jieba #处理中文词语的库from imageio import imread #设置词云形状必备库
这3行是必须使用的第三方库, imageio这个库和嵩天老师讲的不一样,他课程中用的是scipy.misc。我在测试时发现不能导入,百度之后发现imread已经被scipy抛弃了,可以使用imageio替代。
mk=imread('2.jpg')w=wordcloud.WordCloud(mask=mk,background_color='orangered',                       font_path="msyh.ttc", width=1366,height=768)
这2行代码就是设置生成的词云效果了。第1行是指定一个词云形状图片,文件名和格式自己写就好,我试了jpg和png两个格式的图片。 4b036135b1f5726d64c71592dcb0321c.png

测试图片1

测试图片2

ad9a811a282739456199d809e0eb856b.png第2行为设置词云遮罩图片(mask让我想起了flash遮罩)、背景色、中文字体、图片大小,还可以设置最大词数、去除的词等等。 其中特别注意font_path,没有它就不能正确显示中文了。还要注意wordcloud. W ord C loud中的大写字母,Python是区分大小写的。此外,我尝试 使用十六进制颜色代码设置,但发现没生效,便在网上找了一个颜色对照表,用英文表示了。 9ca5b5ef27e4d0400f7c84bea3cb5c2b.png 3c0fb8457dfd33c62df4fcf55504fa00.png 0d81f4545511ed674d267aeae221369d.png 29bf3db2a725601440bec28446a6b17f.png

主要参数设置|wordcloud

3d25b76447c1cdec3c1feb5ec4d2470e.png

常用颜色国际代码速查表
f=open('test.txt','r',encoding='utf-8')t=f.read()w.generate(' '.join(jieba.lcut(t)))w.to_file('wordcloud.png')
这4行就是读取要生成词云的文件,并按预定格式生成词云图片的代码。第1行是以只读方式读取文本文件,test.txt要和代码文件放在一个目录,这里我使用的是课题:如何做好算法与程序实现教学的知识储备一文的内容,并增加了若干个“五一快乐”。此处 和嵩天老师讲的不一样,加入了encoding='utf-8',否则就不能正常显示中文,嵩天老师的代码没加就可以,具体原因未知。 第2行是将文件一次性读入, 如果文件超级大的话(比如GB级的)会爆内存的,但一般我们的文本不会达到那个程度(考考你1GB的内存理论上能存放多少个汉字?)。 第3行是使用jieba库将汉字以词为单位用空格分隔,因为wordcloud是用空格分词统计的。 第4行就是生成词云图片文件了,文件名自己起就好,格式可以是常用图片格式。生成的图片和代码在同一目录。 ad9a811a282739456199d809e0eb856b.png

原图

词云图

ec8dcaff4ad28d58de27aa505a3fec06.png是不是真的so so so easy?多么好的一个教学范例啊,我准备把它增加到《Python应用实例赏析》选修课第3课绘制“炫酷”图形一节。

感悟

学习Python的时候由于安装环境和时效问题,可能会遇到与书籍、课程不一致的地方,这个时候我要充分利用网络解决问题,也不用深究为什么,解决问题就好。

行走路上

1603d6bb42923c1b192ae1614d9ec3fe.png

信息技术教学的路很长,

行走路上与您一路同行!

● 感谢访问,欢迎交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值