逛吾爱破jie的时候,看到一个导出QQ聊天记录分析生成词云图的python玩法,就导出自己和女友的聊天记录试了一下,没想到在一起五年了,近两年说的最多的词竟然是 好吧
其实现原理就是在python中通过使用第三方库读取QQ导出的txt文本聊天记录内容进行分析生成词云,下面开始具体的说明教程:
jieba库,优秀的 Python 第三方中文分词库。
pip install jieba
wordcloud库,优秀的词云展示第三方库。
pip install wordcloud
在安装wordcloud库时如果不起效果,请下载到本地进行安装
下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
选择与自己的电脑系统、python版本相对于的版本进行下载,比如我是win10,64位操作系统,python3.9那就下载 wordcloud‑1.8.1‑cp39‑cp39‑win_amd64.whl
并存放到一个目录(我的在D盘)
然后运行下面命令安装:
pip install D:/wordcloud‑1.8.1‑cp39‑cp39‑win_amd64.whl
电脑登录QQ点击左下角三个杠,点击消息管理
选择要导出的对象,然后右击点击导出消息记录
保存类型选择txt格式
首先且必须在python中引入相关的第三方库
import re
import jieba
import wordcloud
在消息记录中,会有一些频繁出现的信息,比如时间,昵称,备注,还有一些无法显示的如[表情],我们可以使用去特殊字符处理和正则来替换掉。
#去字符处理
def getText(text):#该函数用来替换文本中出现的特殊字符
txt = text
for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~,。、 :':
txt = txt.replace(ch, "") #将文本中特殊字符替换为空格
return txt
#去频繁信息
string = open(r'C:\\Users\\zeyi\\Desktop\\消息记录.txt','r',encoding='utf-8').read()
s = re.compile('2022.+押韵|2022.+Glamour girl 💍|表情|图片|撤回了一条消息|系统消息|2021.+夫人|2022.+夫人')
message = re.sub(s,'',string)
message = getText(message)
然后使用jieba分析并生成词云图
split_message = jieba.lcut(message)
wordcloud_txt = ' '.join(split_message)
w=wordcloud.WordCloud(background_color="white", font_path='./fonts/simhei.ttf',width=1600,height=800,max_words=2000)#设置生成词云的参数
w.generate(wordcloud_txt)#向词云传递文本
w.to_file("C:\\Users\\zeyi\\Desktop\\ciyun.png")#最后生成词云的图片
最后大功告成,分析完成的词云已经保存到你桌面了。