欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

程序员女友的小礼物(微信聊天记录做成的词云)

程序员文章站 2022-03-05 09:37:53
目录前言一、注意避开的坑1.微信聊天记录EnMicroMsg.db库的导出2.EnMicroMsg.db库的解密二.词云2.1停用词(stopword.txt)2.2代码示例三.词云效果前言最近在学习机器学习,恰逢昨天七夕,想给女友做个有意思的纪念品。之前用keras的tokenize分词记录词频,但做出展示效果不太好看。上网学习以后发现wordcloud意外的好用。网上关于微信记录导出和做成词云的代码很多,所以也踩了一些坑。分享一下我导入微信聊天记录和做成词云的经验,希望对大家有帮助。.....




前言

最近在学习机器学习,恰逢昨天七夕,想给女友做个有意思的纪念品。之前用keras的tokenize分词记录词频,但做出展示效果不太好看,上网学习以后发现wordcloud意外的好用。
网上关于微信记录导出和做成词云的代码很多,所以也踩了一些坑。这边分享一下我导入微信聊天记录和做成词云的经验,希望对大家有帮助。


一、注意避开的坑

1.微信聊天记录EnMicroMsg.db库的导出

储存微信聊天记录的EnMicroMsg.db库需要在ROOT情况下导出。但目前的手机ROOT软件下载,我个人并不放心。这篇文章说明了如何在不使用手机ROOT的情况下导出库文件。

2.EnMicroMsg.db库的解密

关于解密网上已有很多资料,钥匙 KEY = IMEI (手机序列号) + UIN(用户信息号)
计算KEY值MD5加密以后的前7位的值,这就是库的密码。
(但是输出密码以后一直显示错误,上网查发现微信在7.017版本之后貌似会出现这种情况,当时试了好久,试了很多其他办法和密码。解决办法就是过一段时间再尝试就可以了,所以如果你碰见这样的情况,可以不用着急,等过会输入就可以了)

二.词云

2.1停用词(stopword.txt)

停用词可以用这个
chat.txt就导入自己想做词云的文本吧
图片如果自定义的话(因为代码设置是白色)背景需要自己处理下。

2.2代码示例

#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') 

三.词云效果

展示如下(感觉甜甜的和大家分享下嘻嘻):

程序员女友的小礼物(微信聊天记录做成的词云)

本文地址:https://blog.csdn.net/specialhank/article/details/108240418