Python学习笔记‘6’:‘词云

千呼万唤始出来,人见人爱花见花开的我又来了。

几星期没来发帖,鬼知道楼主到底经理了什么,路过的时候果然还是想留下来些什么,碰巧今天做了一个小应用就拿来给大家分享下!今天的主题是:词云。

“词云”这个概念简单来讲就是集统计与视觉于一体的饕餮盛宴,文章中不同频度的关键字突出渲染,并过滤掉大量冗余的文本,从而使阅读者只要一眼扫过就可以领略文章的主旨。

看到这个,按照之前讲到的编程思维,首先心里要定义出几个关键点:

1.如何将文章中的关键词拆分出来。

2.如何统计每个关键词出现的频率。

3.如何将高频关键字按自己喜欢的颜色展示。

4.如何将文本显示在固定的背景轮廓中。

5.……

讲到词云,Python中已经有功能较为完善的工具包WordCloud,可以直接通过Pip安装。它基本上可以满足我们所有的需求,简单的几行代码就可以实现我的药的效果。

#首先我准备了一个文本库,直接从官网上粘出来的

Demo.txt

#coding=utf-8

#导入词云的包

fromwordcloudimport(WordCloud, get_single_color_func)

#导入matplotlib作图的包

importmatplotlib.pyplotasplt

fromscipy.miscimportimread

#导入结巴

importjieba

#读取文件,返回一个字符串,使用utf-8编码方式读取,该文档位于此python同以及目录下

f =open('word.txt').read()

cut_text =" ".join(jieba.cut(f))

printcut_text

color_mask = imread("demo2.png")

#生成一个词云对象

wordcloud = WordCloud(

font_path="msyh.ttf",#设置字体,防止2X版本解析乱码

background_color="white",#设置背景为白色,默认为黑色

mode='RGBA',#当参数为“RGBA”并且background_color不为空时,背景为透明

mask=color_mask,#添加背景

width=1500,#设置图片的宽度

height=960,#设置图片的高度

color_func=get_single_color_func('#77DDFF'),#设置主颜色渐变

margin=10#设置图片的边缘

).generate(cut_text)

# 绘制图片

plt.imshow(wordcloud)

# 消除坐标轴

plt.axis("off")

# 展示图片

plt.show()

# 保存图片

wordcloud.to_file('wordcloud.png')

出来的结果:

是不是很简单?

小结:

使用wordcloud的时候,如果文本是中文的话,需要增加utf-8的编码;

如果是中文的话,只是读文件是不够的,必须用结巴分词后再传到wc中,否则将显示乱码;

还是中文的问题,如果不指定font_path的话将依然会显示乱码,甚至报错,因为wordcloud.py的default编码是英文的;

默认背景颜色是黑色,如果想做透明的背景图片只需要增加rgba的mode模式即可,此外背景参数不可为空;

如果不指定get_single_color_func,将会随机颜色显示;

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G1M5MS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券