基于itchat的个人情感分析

基于itchat的个人情感分析

昝道广

概述

  • 前言

  • 思考

  • 性别分析

  • 好友签名情感分析

  • 地区分布

  • 爬虫技术分析

  • 代码解析(部分)

  • 后记

前言

本文以迅雷不及掩耳盗铃儿响叮当机立断章取义无反顾,雄姿英发,羽扇纶巾,谈笑间,墙橹灰飞烟灭......阐述了啊广的微信好友的生理状况、地理分布以及情感等阐幽显微之事。知其然而不知其所以然,好友列表中一个个栩栩如生的头像,有人物、有动物、植物头像,亦有一个个极大概率代表你个性的个性签名,今天带着你们透过现象看本质,从朋友圈中看出兄弟姐妹的塑料情意,给自己凤凰涅磐重生之认清自我之契机!

640?wx_fmt=png

思考

考虑到以下问题,使用Python对朋友圈进行了深度剖析和扫荡,具体思考如下:

  • 什么?!你不知道自己喜欢女生还是男生?(曾经一度思考过这个问题emmmm)

  • 你想知道你的好友到底有多少正能量和负能量吗?

  • 若干年后,去了一个陌生的城市,想知道你的哪个好朋友离你最近?(前提是微信上的地址是正确的,类似“阿拉伯联合酋长国”等类似字符集不正确的可以直接枪毙)

    640?wx_fmt=png

性别分析

首先通过itchat库获取好友的数据,分别统计出Male、Female、Unknow(竟然还有不知道自己性别的...)然后通过matplotlib模块绘制出饼状图,最后对朋友圈性别进行分析和总结。

640?wx_fmt=png

640?wx_fmt=png

用数据说话,用理论证明。这是一个惊天地泣鬼神的结果,惊叹于51.6%的朋友不知道自己性别,原谅我的无知。我们依然尊重事实,继续探究真相。自从于计算机专业就读,脑子中始终缠绕着“10:1”的男女高风险比例,抛去好友为Unknow第三性别的鬼,Female:Male 比例为37.6:10.8,我惊讶的发现我性取向还是正常的,竟然没有随着cs的专业特点而发生任何变质(为了表扬自己,决定明天多看看门外的风景线,俗称:妹子)。

综上所述:究其根源,性取向不会随着大学专业的变化而变化,亦不随着男女比例的变化而变化。

好友签名情感分析

我发现,每个人的微信个性签名和你的性格具有相关关系。即励志的朋友,常常“厚德载物”等类似励志话语、玩游戏的朋友为游戏相关个性签名、真性情的朋友为感性的个性签名...(大家不信的话,可以检验一下微信朋友的个性签名是否与他本人符合)

此章节通过自然语言处理情感分析库SnowNLP对好友的个性签名进行了分析。情感判断级别分为:负面消极、中性、正面积极。

640?wx_fmt=png

640?wx_fmt=png

上图为朋友圈个性签名的词云(字越大,出现频率越高)和情感分析结果。可知,854名好友中,正能量好友居上,中性好友居中,负能量好友居底。“近朱者赤近墨者黑”,通过精确数据可推断出啊广为一个正能量的童鞋。

综上所述:正能量广不禁感叹:初见倾心,再见痴心;终日费心,欲得芳心;煞费苦心,想得催心;难道你心,不懂我心! 我希望能够保持着我的那颗芳心,做着曾经不属于自己定义域但求合理的事情!

地区分布

秉着“能蹭一顿是一顿的”原则,分析了微信朋友圈的地区分布。

640?wx_fmt=png

640?wx_fmt=png

由上图可知,作者是土生土长的山东人,所以好友山东居多不足为奇。其次为北京、广东好友占上游,与鄙人拥有伪鸿鹄之志、骨子里立志去北上广深发展有着强耦合的关系。

综上所述:好友遍布全国各地,依然不能解除我在深夜里被孤独吵醒、被冰冷冷的寂寞吓醒的孤独寂寞冷。

爬虫技术分析

  • wordcloud:Python 中的词云模块,在本文中用以绘制词云图片。 

  • itchat:微信网页版接口封装Python版本,在本文中用以获取微信好友信息。

  • jieba:结巴分词的 Python 版本,在本文中用以对文本信息进行分词处理。 

  • matplotlib:Python 中图表绘制模块,在本文中用以绘制柱形图和饼图 

  • snownlp:一个 Python 中的中文分词模块,在本文中用以对文本信息进行情感判断。

  • PIL:Python 中的图像处理模块,在本文中用以对图片进行处理。 

  • numpy: Python中 的数值计算模块,在本文中配合 wordcloud 模块使用。

  • TencentYoutuyun:腾讯优图提供的 Python 版本 SDK ,在本文中用以识别人脸及提取图片标签信息。 

代码解析(部分)

使用itchat模块加载微信好友信息

# itchat模块加载微信好友信息代码
itchat.auto_login(hotReload = True)
friends = itchat.get_friends(update = True)

  好友性别代码

# 好友性别统计并绘图
def analyseSex(friends):
    sexs = list(map(lambda x:x['Sex'],friends[1:]))
    ...


  个性签名情感分析代码

# 个性签名情感分析
def analyseSignature(friends):
    signatures = ''
    emotions = []
    ...

由于篇幅原因,这就只展示部分代码,详情请查看源码请自行去github,或者点击阅读原文获取源码。

https://github.com/zandaoguang/wechat_emotion

后记

如果想要问我爬过自己朋友圈什么感觉?够后悔,不精彩。口误口误...,够精彩,不后悔!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值