Python词云展示十九大报告

“不忘初心,牢记使命,高举中国特色社会主义伟大旗帜,决胜全面建成小康社会,夺取新时代中国特色社会主义伟大胜利,为实现中华民族伟大复兴的中国梦不懈奋斗。”

十九大召开已过去近一个月,我国社会主要矛盾已经转变,中国特色社会主义进入了新时代,中国人民实现了从站起来,富起来到强起来,我们国家已经走近世界舞台的中央。国家强盛,民族自豪,为了中国梦,戮力前行。

考研的同学应该此刻也在对着十九大报告埋头苦背吧,作为一只有中国梦和爱国心的程序猿,这份报告也必须熟读了解啊,万一有机会考研就用到了呢。

出于对技术的热爱和好奇心,Python大法立时出现在脑海,网上也曾有人用词云解读过报告,人生苦短,何不用Python来自己解读一下这份报告,加深映像呢。

词云

偶有看到有人实现用词云展示十九大报告关键词,这里就利用自己掌握的技术实现一下词云解读报告。先来看看生成的词云图:

词云图

是不是还是蛮有趣的,报告中的高频词汇都清晰地以徽标的形状映射出来了,词频越高,词汇也就越大。

也许也有很多同学想要学习一下这么酷炫的小技巧,在自己的ppt和汇报中show一下,这里就将具体实现过程分享给大家。

首先要装好python环境,然后装好几个python的常用库,包括词云库wordcloud,绘图库matplotlib,中文分词库jieba,图像处理库PIL和科学计算库numpy。

这么多库一个个装也会麻烦些,其实下载Anaconda就可以了,很多库都直接集成在里面了。装了Anaconda的话,只需再装个词云库就可以了,可以在终端或者cmd输入下面命令安装,如果要在已有python环境安装其他库也可以用这个命令,具体安装过程也可以搜索一下教程。

pip install wordcloud

准备好环境可以开始做词云图了,首先准备好报告全文,另存为纯文本文件如shijiuda.txt。

第一步,导入所需的库和报告全文,path为文本文件路径。

用jieba库对全文分词,分词结果以字符串形式存入alldata中,注意格式为“词语1 词语2 词语3”,词语之间用空格隔开。

import wordcloud as wc
import matplotlib.pyplot as plt
import jieba
from PIL import Image
from numpy import array

path="D:/.../shijiuda.txt"
#从路径读取报告全文,存为data
data=open(path,"r",encoding="UTF-8").read()
#使用jieba分词
cutdata=jieba.cut(data)
alldata=""
for i in cutdata:
    alldata=alldata+" "+str(i)

第二步,选取生成词云所需的中文字体font,一般为.ttf文件,windos系统在目录C:\WINDOWS\Fonts下,mac在/System/Library/Fonts或/Library/Fonts目录下,这里选了常规简体中文黑体。

然后准备好一张背景图片,如dang.jpg,用轮廓越清晰,质量越高的图片生成的词云图效果越好,对于上面做的词云图我找的背景图是下面这张。

选取底版

用PIL的Image方法读取图片,将图片转为数组,然后用分好的词alladata生成词云图。

font=r"/System/Library/Fonts/STHeiti Medium.ttc"
#读图片
pic=Image.open("D:/.../dang.jpg")
#图片转数组
picarray=array(pic)
#collocations=False表示是否归并词,传入字体路径,图片数组,设置背景颜色为白色,用alldata生成词云
mywc=wc.WordCloud(collocations=False, font_path=font,mask=picarray,background_color="white").generate(alldata)
#画布大小
fig = plt.figure(figsize=(10,10))
#展示图片
plt.imshow(mywc)
#去掉坐标轴
plt.axis('off')
plt.show()

然后就可以换几个图片背景看看其他词云效果了。

其他词云图

可以看到较大较明显的词都是十九大报告中的高频关键词。

词频统计

如果想更深入了解具体词频情况,可以继续做词频统计。比如我想把出现最多的前20个词拿出来比对一下,词云图无法展示哪20个词出现最多,这时可以用条形图对比分析。

词频统计图

这个图也是完全用Python做统计分析后实现的。从这个对比图就非常清楚的看出“社会”、“发展”、“人民”、“中国”、“建设“、社会主义”等词出现频率最高,都出现过150次以上。

首先从分词后的数据中找出出现次数最多的前20个词,以及它们的词频。

from jieba.analyse import extract_tags
import numpy as npy
#extract_tags提取词频前20的关键词存为列表tags中
tags = extract_tags(sentence=alldata, topK=20)
#全切词,分别统计出这20个关键词出现次数,即词频,存为字典words_freq中
words = [word for word in jieba.cut(data, cut_all=True)]  
words_freq = {}  
for tag in tags:
    freq = words.count(tag)  
    words_freq[tag] = freq
#将该字典按词频排序
usedata=sorted(words_freq.items(), key=lambda d:d[1])
#字典转为numpy数组并作矩阵转置,方便画图取用
tmp= npy.array(usedata).T
print(tmp)

tmp即为统计后的前20个数据,存有两个列表,词语和对应的词频,输出如下:

print(tmp)

然后利用统计好的数据作图,作图代码如下:

#导入绘图库
from numpy import arange
import matplotlib
#画布大小
fig,ax = plt.subplots(figsize=(10,10))
#输出中文字体
myfont = matplotlib.font_manager.FontProperties(fname="/System/Library/Fonts/STHeiti Medium.ttc")
#图表标题设置,想要标题居中可以去掉x,y的设置
plt.title(u'十九大报告词频统计',fontproperties=myfont,fontsize=20,x=0.001,y=1.02)
#图表x轴设置
ax.set_xlabel(u'出现次数',fontproperties=myfont,fontsize=20,x=0.06,y=1.02,color="gray")
#边框线设置,去除上方右方的框线,左下框线置灰融入背景
ax.spines['bottom'].set_color('grey')
ax.spines['left'].set_color('grey')
ax.spines['top'].set_color('white')
ax.spines['right'].set_color('white')
#传入词语,y轴显示20个标记位置,设置字体大小,颜色为灰色
tick_positions = range(1,21)
ax.set_yticks(tick_positions)
ax.set_yticklabels(tmp[0],fontproperties=myfont,fontsize=18,color="gray")
#设置数据条的间隔
bar_positions = arange(20) + 0.75
#导入数据并做图展示
ax.barh(bar_positions, tmp[1], 0.5,align="edge")
plt.show()

这样就实现了完全用python绘制出上面的词频统计图了。

利用上面的方法就可以画其他文本比如小说、文章、评论的词云或者词频统计图啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,056评论 25 707
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 18,591评论 4 418
  • 我,一个初三的学生,面临人生的第一场重要考试——中考。在2018年6月24日我们就要各奔东西,去往不一样的地方,...
    Pressure_b82c阅读 223评论 0 1
  • 总是有些事情,无论我们做多么精细的计划,总是有些事情在我们计划之外,这不2018年第一个重要的决定就是一个意外:给...
    破茧人阅读 190评论 1 0
  • 列了个常规工作日程表,今天是第二个工作日。 有个清单,便不用心里总是提醒自己,时刻负担。 感觉还好。要坚持! 慢慢...
    胜似春阅读 194评论 0 0