位置:科技大田大数据产业专题>>资讯>>技术>>内容阅读
基于Python的词云制作

前段时间网络中出现很多关于很多文字组成的图片,生成的图片看起来还是挺有意思,这里使用python做出词云图片。其中需要解释的是:词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。词云环境配置可以点击查看更多了解具体配置步骤。

简单的词云制作

词云的制作也会涉及到分词,并且英文的分词相对简单,这里先介绍如何去写英文版的分词。

代码如下

1#!/usr/bin/env python
2
3# -*- coding: utf-8 -*-
4
5# @Date : 2018-05-05 12:42:52
6
7# @Author : JackPI ([email protected])
8
9# @Link : @Version : $Id$
12
13#词云的书写
14
15#导入词云的包
16
17from wordcloud import WordCloud
18
19#导入matplotlib作图的包
20
21import matplotlib.pyplot as plt
22
23#读取文件,返回一个字符串,使用utf-8编码方式读取,该文档位于此python同以及目录下
24
25f = open(u'NINETEEN EIGHTY-FOUR.txt','r',encoding='utf-8').read()
26
27#生成一个词云对象
28
29wordcloud = WordCloud(
30
31 background_color="white", #设置背景为白色,默认为黑色
32
33 width=1500, #设置图片的宽度
34
35 height=960, #设置图片的高度
36
37 margin=10 #设置图片的边缘
38
39 ).generate(f)
40
41# 绘制图片
42
43plt.imshow(wordcloud)
44
45# 消除坐标轴
46
47plt.axis("off")
48
49# 展示图片
50
51plt.show()
52
53# 保存图片
54
55wordcloud.to_file('my_test2.png')

分词的结果如

具有背景的中文词云

这里就需要利用中文的一个简单的分词工具包jieba ,jieba分词的环境配置是在dos窗口中 pip install jieba即可。

代码如下

1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3# @Date : 2018-05-05 12:42:52
4# @Author : JackPI ([email protected])
5# @Link : 6# @Version : $Id$
7
8import jieba
9from os import path #用来获取文档的路径
10#词云
11from PIL import Image
12import numpy as np
13import matplotlib.pyplot as plt
14#词云生成工具
15from wordcloud import WordCloud,ImageColorGenerator
16#需要对中文进行处理
17import matplotlib.font_manager as fm
18#背景图
19bg=np.array(Image.open("man.jpg"))
20#获取当前的项目文件加的路径
21d=path.dirname(__file__)
22#读取停用词表
23stopwords_path='stopwords.txt'
24#添加需要自定以的分词
25jieba.add_word("侯亮平")
26jieba.add_word("沙瑞金")
27jieba.add_word("赵东来")
28#读取要分析的文本
29text_path="人民的名义.txt"
30#读取要分析的文本,读取格式
31text=open(path.join(d,text_path),encoding="utf8").read()
32#定义个函数式用于分词
33def jiebaclearText(text):
34 #定义一个空的列表,将去除的停用词的分词保存
35 mywordList=[]
36 #进行分词
37 seg_list=jieba.cut(text,cut_all=False)
38 #将一个generator的内容用/连接
39 listStr='/'.join(seg_list)
40 #打开停用词表
41 f_stop=open(stopwords_path,encoding="utf8")
42 #读取
43 try:
44 f_stop_text=f_stop.read()
45 finally:
46 f_stop.close()#关闭资源
47 #将停用词格式化,用\n分开,返回一个列表
48 f_stop_seg_list=f_stop_text.split("\n")
49 #对默认模式分词的进行遍历,去除停用词
50 for myword in listStr.split('/'):
51 #去除停用词
52 if not(myword.split()) in f_stop_seg_list and len(myword.strip())>1:
53 mywordList.append(myword)
54 return ' '.join(mywordList)
55text1=jiebaclearText(text)
56#生成
57wc=WordCloud(
58 background_color="white",
59 max_words=200,
60 mask=bg, #设置图片的背景
61 max_font_size=60,
62 random_state=42,
63 font_path='C:/Windows/Fonts/simkai.ttf' #中文处理,用系统自带的字体
64 ).generate(text1)
65#为图片设置字体
66my_font=fm.FontProperties(fname='C:/Windows/Fonts/simkai.ttf')
67#产生背景图片,基于彩色图像的颜色生成器
68image_colors=ImageColorGenerator(bg)
69#开始画图
70plt.imshow(wc.recolor(color_func=image_colors))
71#为云图去掉坐标轴
72plt.axis("off")
73#画云图,显示
74plt.figure()
75#为背景图去掉坐标轴
76plt.axis("off")
77plt.imshow(bg,cmap=plt.cm.gray)
78#保存云图
79wc.to_file("man.png")

总结

基于python制作的更多内容可以查看作者的csdn博客,以及官文文档。你可能会做出更多有趣的东西。

每日雅思

somnolent adj.思睡的,催眠的

dextrous adj.灵巧的,熟练的

turbid adj.混浊的,紊乱的

mote n.微粒,微尘

fop n.花花公子,纨绔子弟

免责声明:本网站部 分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请立即联系管理 员,我们会予以更改或删除相关文章,保证您的权利。对使用本网站信息和服务所引起的后果,本网站不作任何承诺。
Copyright 版权所有 Copyright 2013-2014 福建省云创集成科技服务有限公司
All Rights Reserved. 运营维护:三明市明网网络信息技术有限公司 业务咨询:0598-8233595 0598-5831286 技术咨询:0598-8915168