利用python编写祝福_手把手|教你用Python换个姿势,送狗年祝福语

春节既是一个阖家团圆的节日,也是一个集中问候亲朋好友、了解近况的机会。但是也有很多人过年也不能聚在一起,所以就会会选择发短信这一方式来表达自己的祝福。其中大多人都是复制转发,让人一眼就看穿,显得自己在回复他人的时候,就觉得自己的脑子不够用了。

别怕,不要慌张,在春节来临之前,菜鸟分析的这期手把手系列,逐步带各位利用Python完成一个技术范儿十足又有点高逼格的春节祝福:用词云图定制化一个属于自己的2018年狗年祝福。

好的,一切就绪,坐稳,老司机要上路了。

一、前期准备工作

在实现代码之前,我们需要准备一些关于狗年祝福语的语料库。那究竟什么是语料库呢?语料库是我们要分析的所有文档的集合。

在日常工作中我们对文章的管理,先是一篇篇的文章不断的积累,我们存了大量的文章之后,会对文章信息进行一些归类的工作,一般体现于建立不同的文件夹来保存不同类别的文章。

同样的,我们把我们需要分析的文本文件,读取内存变量中,然后在内存变量中使用不同的数据结构,对这些文本文件进行存储,以便进行下一步的分析。这个内存变量就是语料库。语料库构建实操

这里,菜鸟分析整理了一份网络上2018年最热门狗年祝福语语料数据,我将其存放

同时还需要在实现词云功能之前,我们需要一个python的编写和运行环境,同时安装好相关的依赖包。 对于python环境,我们推荐使用ipython notebook。 在本地电脑环境,anaconda提供了非常便利的安装和部署,他会自动帮你把ipython notebook环境部署好。

词云功能所需的依赖包如下: jieba(分词包)、numpy(计算包)、 codecs(语言代码处理包)、 pandas(数据分析包)、 matplotlib(绘图功能包)、 WordCloud(词云包)。

如果在安装过程中出现问题,可以看看这篇文章:菜鸟分析:手把手|教你将Windows环境下Python中安装wordcloud的雷排除掉​zhuanlan.zhihu.comv2-2251228b6a7edd9c0f996cdbbda919ab_180x120.jpg

一切就位,接下来,就是实操代码时刻了,就问你激不激动!?

二、代码演练1.导入相关包

#导入所需要的包

import jieba

import numpy as np

import codecs

import pandas

import matplotlib.pyplot as plt

from scipy.misc import imread

from wordcloud import WordCloud,ImageColorGenerator2.导入相关记录txt文件,分词

所谓分词即是将文本序列按完整的意思切分成一个一个的词儿,方便进行下一步的分析(词频统计,情感分析等)。

由于英文词与词自带空格作为分隔符,相比于中文分词要简单的多。我们在做中文分词时,需要把词语从一整段话中筛出来,困难之处在于,汉语表达博大精深,一段话往往有不同的切分方法。

所幸这不是我们需要担心的,Python中的Jieba库提供了现成的解决方案。

#分词

file=codecs.open(u"2018.txt",'r',encoding='UTF-8')

content=file.read()

file.close()

segment=[]

#jiaba调用了自己的分词算法,将切分好的文本按逗号分隔符分开

segs=jieba.cut(content)

for seg in segs:

if len(seg)>1 and seg!='\r\n':

segment.append(seg)3.统计词频:狗年祝福日常高频词

下面进入到词云的关键一步了:词频统计。我们需要统计有效词集中每个词的出现次数,统计使用groupby函数。

#统计分词结果

words_df=pandas.DataFrame({'segment':segment})#组建数据框pandas.DataFrame

words_df.head()

words_stat=words_df.groupby(by=['segment'])['segment'].agg({"计数":numpy.size})

words_stat=words_stat.reset_index()

words_stat

我们已经把语料库搭建好,对语料库进行了分词,上面的案例我们得到了一列为分词(segment),一列为分词所属文件(filePath)的数据框,接下来我们进行词频统计就非常简单了。

我们使用分组统计函数,直接在分词变量数据框后调用groupby方法,使用分词字段进行分组,然后聚合函数使用numpy.size函数,也就是对分组字段做一个计数,最后重新设定索引[‘segment’],在根据计算进行倒序排列,得到的结果就是我们词频统计的结果了。

这里要特别注意的是:降序计数调用的方法sort函数,需要新版本的pandas库,懒得升新版本不降序也不影响后续的处理,这里小伙伴们可以自己处理。4.做词云,开启狗年汪汪汪模式

最后是词云的点睛之笔了:数据图形化显示。有了强有力的工具包,这些工作都是分分钟就可以搞定。我们使用matplotlib和wordcloud工具来图形化显示上述的词频统计结果

%matplotlib

#生成一个matplot对象,传入一个字体位置的路径和背景颜色即可

wordcloud=WordCloud(font_path="C:\simhei.ttf",background_color="white",max_words=200)

#WordCloud方法接受一个字典结构的输入,我们前面整理出来的词频统计结果是数据框的形式,因此需要转换,转换的方法,

#首先把分词设置为数据框的索引,然后在调用一个to_dict()的方法,就可以转换为字典的机构

words=words_stat.set_index('segment').to_dict()

#接着调用fit_words方法来调用我们的词频

wordcloud.fit_words(words['计数'])

#绘图

plt.imshow(wordcloud)

plt.show()词云结果图5.自定义背景图做词云,让他看到你是真心祝福

我们当然还可以把图形呈现玩得再酷炫一些,自定义一个心形图像背景并将词云图形化输出。心形云词祝福

当然你也可以选择对你们更有意义的图片,生成自己独一无二的词云图,我自己在网上找了一对萌狗狗(如自己的照片,自家的狗狗等)如果你想将生成的图形以本地图片的形式生成并打开显示,可以使用下面的实现代码:

%matplotlib

cloud_mask=imread(r'C:\gou.png')

wordcloud=WordCloud(background_color="white",mask=cloud_mask,font_path="C:\simhei.ttf")

words=words_stat.set_index('segment').to_dict()

wordcloud.fit_words(words['计数'])

plt.imshow(wordcloud)

plt.show()萌狗词云祝福

以上,就是2018年狗年春节祝福语词云的实现过程,所有代码都经过调试,直接可用。 让喜欢数据的你,利用这种方式,为心爱的他/她,带来一份数据感、科技感、炫酷感、新奇感十足的春节祝福吧!

再次菜鸟分析也祝福大家旺旺狗年,幸福吉祥!觉得不错话,顺手点个赞,转发一下哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值