赞
踩
import jieba,wordcloud,imageio #导入jieba中文分词库、词云生成库、导入图片接口库
w=wordcloud.WordCloud(font_path='msyh.ttc',width=1000,height=700,background_color='lightpink',max_words=200,mask=imageio.imread('map1.png')) #配置词云对象的基本参数 #导入背景图片
w.generate(' '.join(jieba.lcut(open("陪你朝朝暮暮.txt","r",encoding="ANSI").read())))#向wordcloud的w对象中导入文本
w.to_file('ciyun.png')#保存生成的词云图片
就是这样短短4行代码,快准狠!
那么,为什么短短4行python代码就能制作出这样的效果?
词云图即文字云,是对文本数据中的高频关键词进行可视化的操作,生成一张类似云朵的文字图形,从中会过滤掉大量的文本信息,以文字大小体现文本出现的频率,给使用者耳目一新之感。
通俗地说就是讲文章中的高频词汇统计出来,再制作成一张可视化的图片。
这里笔者首先向朋友要来了一本名叫《陪你朝朝暮暮》的小说,当然,这里最好是准备.txt格式的文档,其次在网上收集了一张世界地图(这里使用的是.png格式的图片)。
当然,这里的文本文件及图片文件均可以使用网络爬取的方式获取,为了突出标题的作用,笔者自然是使用本地文件了hia ~ hia ~ hia~
1.导库
import jieba
import wordcloud
import imageio
import jieba
#导入jieba中文分词库,jieba
库是一个十分优秀的中文词汇分词工具,其会根据中文使用习惯将长文本切分成一个个我们熟知的词语。由于wordcloud
库默认不能处理中文词汇,因此jieba专为中文分词而生。
jieba.lcut()
方法用来切分文本,默认采用精确匹配模式(模糊模式对本案例不适用,不多赘述)
import wordcloud
#导入词云生成库,wordcloud
库能够将文本信息以图片形式展现,本案例将wordcloud的WordCloud对象用于保存文本信息并加以配置其属性,详细配置过程见下文分解。
import imageio
#导入图片接口库,imageio
库提供了很多图片接口
,可用于读取网络图片信息,视频以及GIF文件。笔者常用imageio
库来制作GIF图片(当然更多的是制作表情包!)
本案例使用imread导入事先准备好的世界地图
(此图片笔者建议白色背景),mask=imageio.imread('map1.png')
#导入背景图片。如果图片和文本文件存储位置不在当前文件路径下,需要给定文件路径。
2.配置词云
w=wordcloud.WordCloud(font_path='msyh.ttc',width=1000,height=700,background_color='lightpink',max_words=200,mask=imageio.imread('map1.png'))
mask=imageio.imread('map1.png')
将导入的世界地图作为词云的背景图片,导入到词云对象中。
max_words=200
设置词云中最大文字的大小,也可以使用min_words
来设置最小文字。
background_color='lightpink'
设置词云背景颜色
width=1000,height=700
设置词云图片的大小
font_path='msyh.ttc'
设置词云中文字的字体样式,这里采用的是微软雅黑。
3.导入文本
w.generate(' '.join(jieba.lcut(open("陪你朝朝暮暮.txt","r",encoding="ANSI").read())))
open().read()
打开并读取文件,需要在open()中指定文件位置及编码模式,常用编码模式为utf-8
,在Windows中,文件默然会保存为ANSI
编码。
打开之后还应该使用.close()将文件关闭,否则文件将保持打开状态。
打开之后文本信息会被保存为列表,此时使用jieba.lcut()
将文本进行分词,分词之后是连续的,用' '.join()
可以在分词之间加上空格,最后全部通过。generate()
导入到WordCloud对象中。
4.保存图片
w.to_file('ciyun.png')
#保存生成的词云图片,此时就能看到一张名为ciyun.png的图片了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。