您现在的位置是:首页 > 文章详情

Python---qq群聊天记录词云分析

日期:2018-05-16点击:354

python拥有近13w个第三方库,其中有很多优秀的库,比如wordcloud,scipy,jieba等库,能快速实现很多功能,比如制作一个QQ群聊天记录词云……
工具:PyCharm, Python3.6.5


1.获取数据源

img_d536ca15fc1087e6abcfd640574c91bd.png
qq左下角

img_59cb97d5e0212c2d7887b681eda3f538.png
导出消息记录

要用.txt导出到任意盘符,接下来就要对导出的txt文件进行数据分析。


2.下载对应库

这一步是对于初学者最难的一步,其中有很多坑等着你。(下面以安装wordcloud为例,因为这个最麻烦)

(1)PyCharm的Terminal中输入pip install wordcloud来下载wordcloud库,一般情况下会安装失败==!那就用方法2
(2)第二个方法是到此网站下载安装包

传送门

重要提醒:通过cmd中输入python -V来查看你的python版本并下载对应的安装包,同时注意你的python是32位还是64位

img_47fb61767a52239d8eba2726aa4db4d6.png
wordcloud

以py3.6为例:wordcloud‑1.4.1‑cp36‑cp36m‑win32.whl
cp36代表python3.6 ; win32代表32位的python

下载完成后把文件放到python目录的Scripts下,并在PyCharm的Terminal中运行pip install wordcloud‑1.4.1‑cp36‑cp36m‑win32.whl注意:得在Scripts下运行

3.代码部分

安装好各种库后终于可以编写代码了
分两步搞定

(1)过滤txt文件中无用的信息,避免词云中都是无效信息,并用jieba进行分词

直接上代码

import jieba newtext = [] # 打开E盘下的聊天记录文件qq.txt for word in open('E:\\qq.txt', 'r', encoding='utf-8'): tmp = word[0:4] if (tmp == "2017" or tmp == "===="or tmp == "2018"): # 过滤掉聊天记录的时间和qq名称 continue tmp = word[0:2] if (tmp[0] == '[' or tmp[0] == '/'or tmp[0] == '@'): # 过滤掉图片和表情,例如[图片],/滑稽 continue newtext.append(word) # 将过滤掉图片和表情和时间信息和qq名称剩下的文字重新写入E盘下的q1.txt文件中去 with open('E:\\q1.txt', 'w', encoding='utf-8') as f: for i in newtext: f.write(i) # 打开新生成的聊天记录文件 text = open('E:\\q1.txt', 'r', encoding='utf-8').read() word_jieba = jieba.cut(text, cut_all=True) word_split = " ".join(word_jieba) 

通过这步在E盘中得到了一个q1.txt文件,你打开会发现变的整洁干净了许多,当然你也可以通过进一步学习来更好的过滤文本

(2)最后一步,再新建一个.py,用到wordcloud库来绘制词云图(为便于理解,将程序分成两部分运行,你也可以尝试将两程序合并)
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator import matplotlib.pyplot as plt from scipy.misc import imread text = open('E:\\q1.txt', 'r', encoding='utf-8').read() # 打开过滤好的txt文件 print(text) bg_pic = imread('E:\\sjt.jpg') # 导入词云背景 wordcloud = WordCloud(mask=bg_pic, background_color='white', scale=1.5, font_path='C:/Windows/Fonts/simhei.ttf', width=1000,height=600,stopwords={'表情','糊脸','拍桌','拍头'},min_font_size=10,max_font_size=36,font_step=4, ).generate(text) # 定义词云的各种变量,可以控制词云的形式,这里的控制变量可以去网上查找,stopwords={'表情','糊脸','拍桌','拍头''是为了过滤掉里面的部分表情信息 image_colors = ImageColorGenerator(bg_pic) plt.imshow(wordcloud) plt.axis('off') plt.show() wordcloud.to_file('E:\\text.jpg') # 输出词云 
img_1189fb4bd79371dc5a337c158c406df3.png
最终效果

快去制作你的炫酷词云吧!!!

原文链接:https://yq.aliyun.com/articles/637533
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章