随着社交网络的飞速普及,微信已然成为我们的生活必需品,尽管大家吐槽声不断,但我们确实很难离开它了。每个人的微信好友没有上千也有几百,除了聊天和传输文件,还有哪些好友的小秘密可以挖一挖呢?
想要对微信好友做分析,第一步就是要拿到数据,即好友信息。如何获取?使用python的itchat,很轻松就可以搞定:
import itchat
itchat.autulogin()
itchat.get_friends()
接下来,我们就来看看itchat都能做什么:
通过
friends.Province 方法可以获取好友的注册地区,通过对不同地区好友的数量进行统计,使用 echarts-map 即可画出如下好友微信区域分布图,点越亮,说明该地区的好友越多:
上图是作者的微信好友分布图。作为一个在东北上学,在北京上班的河北姑娘,目测图像的大致分布与事实还是比较相符的。不过,明显可以看出来山东地区闪烁着耀眼的光芒,看来作者的山东朋友不少呢,四不四可以考虑学个山东话当第三外语了~
通过 friends[i]['Signature'] 方法,可以获取好友签名。建议尝试一下,你会有意想不到的收获,哈哈。
根据获取的签名信息,作者尝试做了情感分析,看看大家最近的心态如何:将获取的签名暂存在一个list里,再使用snownlp对每条签名进行评估。snownlp会对每个签名进行打分(0-1),分值的高低代表了情感的类型是消极还是积极。以下是小编截取的前十条签名信息,sentiment即为打分结果:
将上述结果用 echarts-lines 展示出来,结果是这个样子的:
看来大多数小伙伴的签名得分都高于0.5,还是非常积极向上的。当然,你还可以多定义一个标签,看看sentiment低于0.5的是谁,平时可以多关心他一下(偷笑)。
通过itchat的 get_head_img() 方法可以获取微信好友的全部头像,作者将大家的头像攒成了一张图片,就像这样:
有木有觉得专克密集恐惧症患者啊(此处应有坏笑表情...)。至于拿这些图片来干点什么,比如按颜色给图片排个序?又或者看看上期笔者的文章《AI涂色小试,线稿也智能》,给好友头像重新涂个色?这就需要大家大开脑洞了,如果有什么好的idea,欢迎留言讨论。脑洞还是要有的,万一实现了呢~
除了获取好友信息,itchat的send方法也是一个比较常用的方法,通过send方法,你可以开发自己的微信陪聊机器人,也可以让它帮助你自动获所需信息,做你得力的小助手。
itchat的send
方法可以自动回复好友信息,只要你定义了回复内容,它就可以帮你自动回复了,就像这样:
那么这些看起来有点机智的回复难道全部靠手写?当然不是,调用图灵机器人的API就可以了:
def get_response(msg):
apiUrl = 'http://www.tuling123.com/openapi/api'
data = {
'key': KEY,
'info': msg,
'userid': 'pth-robot',
}
r = requests.post(apiUrl, data=data).json()
return r.get('text')
将发送的信息(msg)作为请求参数发送给API接口,图灵机器人会根据msg配最佳回复。接下来使用itchat的send方法返回给好友。不过,陪伴朋友和家人的时间是幸福和宝贵的,不是机器人可以替代的呢。
同样是调用send方法,可以通过设定关键词,让python执行特定的程序并返回结果。以获取天气信息为例,你需要写一个爬虫程序,获取当天的天气信息,然后根据微信端传送的关键词,提取某地区的天气数据输出:
类似的功能还有很多,比如,可以让它帮你获取一下今天的微博头条或者车票信息等等。上述内容在技术实现上并没有太大的难度,关于itchat接口,百度一下,你就知道。至于echarts,则是来源于百度的一款可视化分析产品,包含了几乎所有常见的可视化图形示例,同样非常简单易用。另外上文提到的snownpl是一个用来做自然语言处理的工具,目测效果还不错,感兴趣的小伙伴可以自己试试看~
修改于2018-03-17 20:39
微信扫一扫
关注该公众号