基於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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索