微信聊天记录分析,Python 之 WorldCloud
目标:
- 导出微信的好友聊天记录
- 简单处理聊天记录
- 使用 WorldCloud 词云生成一张漂亮的词频图片
步骤:
- iPhone 连接 Mac,打开 iTunes,选择备份,备份到本电脑,切记不可勾选给 iPhone 备份加密,因为加密后就打不开了。
- 找到备份文件。借助 iPhone Backup Extractor 这款工具来找到微信聊天数据库。(免费版依然可以实现找到数据库) 找到刚才的的 iPhone 备份,然后点击 Expert Mode,登上一会,目录就展开了,Applications/com.tencent.xin/Doucuments/{md5(你的微信号)}/DB/MM.sqlite 这个,就是聊天记录数据库。
- 选中 MM.sqlite,点击 Extract selected ,然后等待十秒后点击 continue,即可导出数据库。
- MM.sqlite 使用 DB Browser for SQLite 来打开。
- 其中 Chat_{md5(好友的微信号)} 即是你和某位好友的聊天记录了。其中 Message 字段,便是聊天记录了。
- 执行 sql 语句,查找了下和女友的聊天记录,有将近15000条记录,导出csv文件
- 聊天记录里面表情太多了,在 sublime 中打开使用正则匹配全部,<msg>(.|\n)*?</msg>,然后删除。然后就是其他各种匹配,剔除无用的符号。
- 将聊天记录保存为 txt 文件。
- 使用 WorldCloud 生成图片。针对中文,必须自己指定中文字体才可以,否则生成的图片会乱码。
1234567891011121314151617181920212223242526272829303132333435363738394041424344# -*- encoding: utf-8 -*-# 词云from wordcloud import WordCloudfrom matplotlib.image import imreadimport matplotlib.pyplot as pltfilename = "wechat.txt"with open(filename, encoding='UTF-8') as f:mytext = f.read()# print(mytext)mask_color_path = "bg.jpg" # 设置背景图片路径font_path = '/Library/Fonts/测试.ttf' # 为matplotlib设置中文字体路径没;路径需要改成你本地的字体路径,若是全英文,也可不设字体路径imgname1 = "en_WordCloud_DefautColors.png" # 保存的图片名字1(只按照背景图片形状)imgname2 = "en_WordCloud_ColorsByImg.png" # 保存的图片名字2(颜色按照背景图片颜色布局生成)width = 1000height = 860margin = 2# 设置背景图片mask_coloring = imread(mask_color_path)wc = WordCloud(font_path=font_path,background_color="white", # 背景颜色max_words=200, # 词云显示的最大词数mask=mask_coloring, # 设置背景图片max_font_size=200, # 字体最大值# random_state=42,width=width, height=height, margin=margin,)wc.generate(mytext)plt.figure()# 以下代码显示图片# 绘制词云plt.imshow(wc)plt.axis("off")plt.show()# 保存图片wc.to_file(imgname1)
效果图:发现太喜欢发表情了,其中的表情被解析为文字,叠词部分大都是表情,?
参考文章:
近期评论