python处理微信聊天记录(用python如何把微信聊天记录做成词云)
python处理微信聊天记录(用python如何把微信聊天记录做成词云)#coding:utf-8 import jieba #分词包 import matplotlib.pyplot as plt from wordcloud import WordCloud#词云包 import collections #文件读入 file=open("chat.txt" 'r' encoding='utf-8') content=file.read() file.close() segment=[] segs=jieba.cut(content) #切词 #停用词读入 stopwords=open("stopword.txt" 'r' encoding="utf-8") s=stopwords.read() stopwords.close() s = s.spl
注意避开的坑
1.微信聊天记录EnMicroMsg.db库的导出
储存微信聊天记录的EnMicroMsg.db库需要在ROOT情况下导出。但目前的手机ROOT软件下载,我个人并不放心。这篇文章(https://zhuanlan.zhihu.com/p/111802776)说明了如何在不手机ROOT的情况下导出库文件。
2.EnMicroMsg.db库的解密
关于解密网上已有很多资料,钥匙 KEY = IMEI (手机序列号) UIN(用户信息号)
计算KEY值MD5加密以后的前7位的值,这就是库的密码。
(但是输出密码以后一直显示错误,上网查发现微信在7.017版本之后貌似会出现这种情况,当时试了好久,试了很多其他办法和密码。解决办法就是过一段时间再尝试就可以了,所以如果你碰见这样的情况,可以不用着急,等过会输入就可以了)
停用词(stopword.txt)
停用词可以用这个(https://blog.csdn.net/dorisi_h_n_q/article/details/82114913)
chat.txt就导入自己想做词云的文本吧
图片如果自定义的话(因为代码设置是白色)背景需要自己处理下
代码展示
#coding:utf-8
import jieba #分词包
import matplotlib.pyplot as plt
from wordcloud import WordCloud#词云包
import collections
#文件读入
file=open("chat.txt" 'r' encoding='utf-8')
content=file.read()
file.close()
segment=[]
segs=jieba.cut(content) #切词
#停用词读入
stopwords=open("stopword.txt" 'r' encoding="utf-8")
s=stopwords.read()
stopwords.close()
s = s.split("\n")
#循环输出需要的词追加到列表
for word in segs:
if word not in s and len(word)>1:
segment.append(word)
#查看词频记录
word_counts = collections.Counter(segment) # 对分词做词频统计
word_counts_top10 = word_counts.most_common(10) # 获取前10最高频的词
print(word_counts_top10) # 输出检查
#制作词云
text = ' '.join(segment)#将文本变为str格式
bimg=plt.imread('heart.jpg')
wc = WordCloud(background_color="white" mask=bimg font_path='simhei.ttf' collocations=False).generate(text)
plt.imshow(wc interpolation='bilinear')#按双线性插值输出
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
词云效果
这个就不展示了,毕竟是涉及了聊天隐私,哈哈哈,大家可以自己试试,还是很好看的,小编给大家找了一下已经发在网上的词云
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。