你好,游客 登录
背景:
阅读新闻

基于Python的词云制作

[日期:2018-05-07] 来源:  作者: [字体: ]

      前段时间网络中出现很多关于很多文字组成的图片,生成的图片看起来还是挺有意思,这里使用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    : https://blog.csdn.net/meiqi0538
10
11# @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    : https://blog.csdn.net/meiqi0538
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.花花公子,纨绔子弟

推荐 打印 | 录入:Cstor | 阅读:
相关新闻      
本文评论   
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款