是的,你们没有猜错,这是一期撒狗粮的手把手教学文章! 刚刚从春节回家被爸妈逼婚的懵逼中回过神来,明天又到了满世界秀恩爱的情人节,各位给女朋友的礼物都准备好了吗? 如果还没有准备,不要慌张,老司机大数据文摘不仅文章有深度,套路也不浅,在情人节前一天推出的这期手把手系列,小阳老师将花10分钟时间,逐步带各位利用Python完成一个技术范儿十足又有点浪漫的情人节礼物:用词云图带她回忆你们聊天记录里的爱情故事。 给你一张过去的词云图,看看那时我们的爱情~ 当然,这一切的前提是,你得有一个女朋友,或者,一个聊天频率远超其他人,聊天内容略暧昧的姑娘。 然后,请自行导出你们暧昧阶段、初识阶段、热恋阶段,总之一切充满甜言蜜语期的聊天记录,QQ/微信聊天记录导出方式请自行度娘。 好的,一切就绪,坐稳,老司机要上路了。 本段视频长度约10分钟,暂时来不及看视频的同学请直接下拉查看代码和文章。 点击右上角进入大数据文摘公众号后台(非评论区),回复“情人节”获取代码包! ??戳视频看寒小阳老师手把手教你炮制一份专属礼物!
前期准备工作 实现词云功能之前,我们需要一个python的编写和运行环境,同时安装好相关的依赖包。 对于python环境,我们推荐使用ipython notebook。 在本地电脑环境,anaconda提供了非常便利的安装和部署,他会自动帮你把ipython notebook环境部署好。 词云功能所需的依赖包如下: jieba(分词包) numpy(计算包) codecs(语言代码处理包) pandas(数据分析包) matplotlib(绘图功能包) WordCloud(词云包) 1.引入相关的库包 首先,需要引入词云功能的所有依赖包,具体代码如下: In [10]: #coding:utf-8__author__='Hanxiaoyang'importjieba#分词包importnumpy#numpy计算包importcodecs#codecs提供的open方法来指定打开的文件的语言编码,它会在读取的时候自动转换为内部unicode importpandas#数据分析包importmatplotlib.pyplotaspltfromwordcloudimportWordCloud#词云包 2.导入相关记录txt文件,分词: 然后读取你和你的另一半一切充满甜言蜜语的聊天记录。本次演示,大数据文摘选取的是《大话西游月光宝盒》中至尊宝和女神紫霞仙子的对话文本(提前准备好文件:大话西游.txt),对文本进行分词处理,形成分词后的词集。 具体代码: In [11]: file=codecs.open(u"大话西游.txt",'r')content=file.read()file.close()segment=[]segs=jieba.cut(content)#切词,“么么哒”才能出现forseginsegs:iflen(seg)>1andseg!='\r\n':segment.append(seg) 3.去停用词“多喝热水”和闹嘴的小细节可以在这里抹去 想要生成一个较为理想的词云,分词的内容质量很重要,直播,那么必须要做的一步就是要去除文本中的“噪音”,通常的实现方法是:先定义一个停用词集,然后利用停用词集对上面的文本分词全集进行过滤,最后形成一个有效词集。 这里要给大家一句非常重要的温馨提醒,我们希望每一位同学在处理相关数据时都能秉持公正客观真实的原则,但如果你最终导出的结果与你预期的“甜蜜”记录并不符合,比如出现了“多喝热水”等尴尬的词语,那么在去听用词中,适当的抹去这样的小细节来避免明年一个人过节,也是可以理解的。 具体代码: In [12]: words_df=pandas.DataFrame({'segment':segment})words_df.head()stopwords=pandas.read_csv("stopwords.txt",index_col=False,quoting=3,sep="\t",names=['stopword'],encoding="utf8")words_df=words_df[~words_df.segment.isin(stopwords.stopword)] 4.统计词频情侣对话日常高频词 (责任编辑:本港台直播) |