基于itchat的我的情感分析

基于itchat的我的情感分析

昝道广git

概述

  • 前言github

  • 思考算法

  • 性别分析微信

  • 好友签名情感分析app

  • 地区分布url

  • 爬虫技术分析spa

  • 代码解析(部分).net

  • 后记code

前言

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

思考

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

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

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

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


性别分析

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



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


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

好友签名情感分析

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

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

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


综上所述:正能量广不由感叹:初见倾心,再见痴心;终日费心,欲得芳心;煞费苦心,想得催心;难道你心,不懂我心! 我但愿可以保持着个人那颗芳心,作着曾经不属于本身定义域但求合理的事情!

地区分布

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

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


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

爬虫技术分析

  • 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

后记

若是想要问我爬过本身朋友圈什么感受?够后悔,不精彩。口误口误...,够精彩,不后悔!

本文分享自微信公众号 - 视学算法(visualAlgorithm)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索