如何用python表白

博主利用Python分析微信聊天记录,生成词云并进行文本分析,揭示了聊天高峰期、常用词汇及表情,展示了数据分析在情感表达中的独特应用。
摘要由CSDN通过智能技术生成

由于疫情,假期变得越来越长,也很久没有见到对象了。

想起情人节将至,睡觉醒来想到可以根据微信聊天记录做一个词云示爱,聊表爱意。但是转念一想,既然已经把微信的聊天记录下载下来了,为什么不进一步分析一下数据呢?于是,分析的目标变成:

  1. 生成词云;

  2. 对聊天记录进行简单的文本分析。

一、数据获取

由于这部分不是主要内容,可以直接百度相关内容,如文章《Android破解微信数据库获取聊天记录》。对于安卓而言,罗列要点如下:

  1. 获取自己手机的root的权限,或者下载一个安卓模拟器,勾选“root权限”;

  2. 在手机或模拟器的“/data/data/com.tencent.mm/MicroMsg”路径下找到一个一长串名字的文件夹(如下图的红色框框),找到一个叫做EnMicrioMsg.db的数据库文件,其中存储着聊天记录。

  3. 将字符串 " IMEI (手机序列号)UIN(用户信息号)"使用MD5破解,选择32位小写,破解码前7位即为数据库密码。

  4. 使用sqlcipher(链接: https://pan.baidu.com/s/1Im3n02yseo-4IxeDY9srqQ 提取码: ka4z)读取打开EnMicrioMsg.db,并转换为csv格式。

在得到csv文件后,使用Excel打开,与我老婆的聊天记录一共有1.3万余条,微信真是异地恋的核心。对数据进行分析后发现,type是消息的类型,例如type = 1是指普通的文本消息,type = 3是语音相关信息等;isSend是指这条消息是谁发的,isSend = 0代表是对方发的,1代表是我方发的;createTime是指这条消息的时间戳,content代表这条消息的内容。对聊天内容进行文本分析,主要针对这4列数据进行。

在进行简单的整理后,将csv数据导入,整个分析过程使用pandas完成。

import pandas as pd
data = pd.read_csv('data.csv')

二、词云生成

使用python生成词云,需要调用wordcloud,没有安装的话需要先装一下。

pip install wordcloud

词云生成的过程并不难,首先使用jieba算法对每一条聊天记录进行分词,当然在分词之前要导入自己的停用词和自己的词组,并将每次得到的词语存入数组all_words。在分词完毕后,在pandas中使用类似于Excel中数据透视表和排序的方法对词频进行排序,排序完成后导出到csv中,关键的4行代码如下。

df = pd.DataFrame({'word': all_words})
words_count = df.groupby(by=['word'])['word'].agg({"计数": np.size})
words_count = words_count.reset_index().sort_values(by="计数", ascending=False)
words_count.to_csv('词频.csv', encoding='utf-8')

打开“词频.csv”,发现词频大于100的词一共有14个,除了昵称,“哈哈哈”和“哈哈哈哈”占据了前5的其他两个位置,我们都是哈哈怪实锤了……

为了更加直观的看到词频分布,使用如下代码生成词云。

loveImg = imageio.imread('love.png')
wordcloud = WordCloud(background_color='white',
                      mask=bimg, font_path='simhei.ttf')
words = words_count.set_index("word").to_dict()
wordcloud = wordcloud.fit_words(words["计数"])
bimgColors = ImageColorGenerator(loveImg)
plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))
plt.show()

嗯…内容跟表格里呈现的意思差不多,就不过多解读了,我自己都酸了,也太甜了吧……自己喂自己吃柠檬系列……

三、聊天文本分析

在前一部分,为了生成词云,需要用代码将发送的表情去掉。在进行文本分析时,将这部分的表情整理、统计起来,发现,我和我老婆发送的系统表情前10(从左往右排序)如下图。[愉快]的表情最多,共同的表情还是挺多哒~

将聊天的时间统计起来,发现中午12点、晚上10点左右是聊天的高峰期,说明白天我们都很忙……晚上12点30分左右有个小高峰,很好的契合了我们的睡觉时间。

将《用Python对自己的文章做文本分析》里面提到的方法用上,将每一天看成是一篇“文章”,使用TextRank(TF-IDF的效果不好)得到每一天的关键词,进而生成共词矩阵,得到下图。

所有的话题围绕“老婆”两个字展开,涉及当时发生的大事(例如:疫情、伊朗等)、工作(例如:开盘、车位等)、学习(例如教育学、作业等)、生活(例如吃饭、抢票等)、情感交流(拥抱、开心等),这是很有温度的聊天。数据分析并不能决定感情,只能够从一个侧面反映感情。事实证明,我们的感情是积极向上的,不断向前的~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值