专栏首页Crossin的编程教室Python情感分析:鹿晗的粉丝们究竟原谅他了吗?

Python情感分析:鹿晗的粉丝们究竟原谅他了吗?

国庆长假的最后一天,鹿晗在微博上公开宣布和关晓彤的恋情。消息来得太突然,不仅粉丝圈里炸了,顺带连微博服务器也给炸了。在此心疼新浪运维工程师一秒,放个假都不能省心。

这条微博让粉丝们心情复杂,却让各路媒体们集体高潮,从各种刁钻的角度进行了全方位的报道和评论,蹭热点的姿势令人眼花缭乱。(在这点上不得不承认,我们是个不称职的公众号,到今天才有了这么一篇分析。)

到目前,这条微博已经有了280多万条评论。有点赞祝福的,有质疑的,当然也少不了悲痛欲绝,甚至表示取关粉转路人的。那么究竟粉丝们对此事的态度如何,真的“原谅”鹿晗了吗?于是,我们编程教室的小伙伴用 python 对评论里的情绪做了个简单的统计分析。

先说我们的结论:原谅?不存在!

此微博的评论中负面情绪较多,说明还是被扎心的粉丝们占了多数,不是一时半会儿就能“原谅”的。这也是符合主观感受的。引用一个热评来说就是“3909万粉丝,一起失恋了”。

这是我们通过一些数据分析得出的结论,到底是不是可信,可以一起来看下我们的分析过程。

1. 抓取微博评论

抓取微博使用了爬虫框架 scrapy,并结合 mongodb 作为数据存储。通常来说,手机版网页会比 PC 版网页更容易抓取数据,所以我们通过 m.weibo.cn 找到了此条微博的评论数据接口:

https://m.weibo.cn/api/comments/show?id=4160547165300149&page=1

通过修改 page 参数,可以获取各页评论。

得到数据之后,通过正则或 bs4 对信息进行提取(我们的代码里用了正则),将评论内容文本存入数据库。

2. 情感分析

2.1 snownlp

首先我们使用了 python 的一个情感分析库 snownlp。在开发过程中,我们看到知乎上也有人做了同样的工作:

  • 用python对鹿晗、关晓彤微博进行情感分析 - 宅米RICE https://zhuanlan.zhihu.com/p/29968019
  • 利用500W条微博语料对评论进行情感分析 - 布道 https://zhuanlan.zhihu.com/p/30061051

snownlp(https://github.com/isnowfy/snownlp)是一个可以方便处理中文文本的 python 库,提供了分词、词性标注、情感分析、文本分类、转拼音、繁转简、提取关键词、摘要等功能,功能十分强大。

分析结果:

图中情感值越接近 0 表示越消极,越接近 1 表示越积极。从结果来看,0、1 两端和中间 0.5 的数量最多,整体上较为平衡,稍稍偏积极一些。

可真的是这样吗?

我们来挑几热门评论尝试下:

评论

情感值

大家觉得是假的点赞

0.99

大家觉的鹿晗与关晓彤不配的请点赞。

0.48

一定是电视剧的宣传。一定是。

0.39

不喜欢关晓彤的赞我

0.80

哥哥 我们心脏不好

0.98

同意恋爱,关晓彤就算了吧。

0.55

如果不是关晓彤。。我觉得我还没那么心痛!人生的悲哀就是最喜欢的和最讨厌的在一起了

0.81

这好像不大对吧。

后来进一步了解发现,snownlp 的默认训练语料库是针对网上商品的购买评价,将其得出的模型用在此微博评论的分析上并不是很准确。于是我们又从网上找了一份针对腾讯微博上新闻事件评价的语料库,来修正训练数据。但可惜因为样本量较少,并且也不是很符合此场景,因此结果和上述差别不大。

我们上面提到的两篇文章,结论也与此类似。如果要进一步提升 snownlp 准确性,则需要一定数量的手动标记样本。

2.2 腾讯文智

那如果一时没有那么多的标记样本,有没有其他方法?我们找到了“腾讯文智” — 腾讯出品的中文语义平台,支持 NLP、转码、抽取、全网数据抓取等中文语义分析需求。这个平台是收费的,不过有一些免费配额,足够我们做一些小的实验分析。

在使用之前,我们也将前文的几条热评测试了一下:

我们来挑几热门评论尝试下:

评论

情感值

大家觉得是假的点赞

0.52

大家觉的鹿晗与关晓彤不配的请点赞。

0.53

一定是电视剧的宣传。一定是。

0.50

不喜欢关晓彤的赞我

0.62

哥哥 我们心脏不好

0.02

同意恋爱,关晓彤就算了吧。

0.48

如果不是关晓彤。。我觉得我还没那么心痛!人生的悲哀就是最喜欢的和最讨厌的在一起了

0.35

从这几个例子来看,文智相对要准确一点,虽然有些评论依然没有被划归到负面,但至少没有给到很夸张的积极情感值。

由于文智的数量限制,我们对数据中进行了随机抽样,用一小部分数据进行分析,并且过滤掉了情感值为 0.5 的部分(其中有不少是纯表情回复),得到如下结果:

尽管在手动测试时发现文智的预测会略偏积极,但即便如此,最终的结果依然偏向消极。由此推断,实际的情感可能比这个分布更加负面。这也就是我们文章开始时给出的结论。

这个结论其实并没有多大意义,反正我也不粉鹿晗,但通过程序来做情感分析,也许你会用得到。

获取源码和详细文档,请在公众号(Crossin的编程教室)中回复 鹿晗

  • 代码问题请在论坛 bbs.crossincode.com 上发帖提问
  • 欢迎加入讨论交流群组共同学习进步
  • 别忘了将我们的文章转发朋友圈或在知乎上为我们的专栏点赞,你们的支持将会让编程教室做得更好:)

本文分享自微信公众号 - Crossin的编程教室(crossincode),作者:crossin braid123

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【每周一坑】蜥蜴流感与贝叶斯定理

    春季是流感的高发季节。不要觉得只是小小的“感冒”,严重起来甚至也会危及生命,而且还没有特效药。因此,身体不适请及时到医院检查。

    Crossin先生
  • 【Pygame 第11课】 GAME OVER

    昨天得知《MacTalk·人生元编程》在多看书城上线之后,一咬牙,花了2.99元入手了。本书是微信公众账号“MacTalk”中的文章经重新审阅、校订、整理、排版...

    Crossin先生
  • 用Python+小程序实现诗词大会的飞花令

    在2018年下半年的某一天,偶然观看了《中国诗词大会》节目的飞花令环节。当时作为语音行业一员对此十分感兴趣,想着能不能用程序实现一个,思考技术方案的时候发现最大...

    Crossin先生
  • 创造互联网奇迹的微博,还会遭遇哪些局部战争?

    微博发布二季度财报后,盘前股价大涨超过4%达到89.99美元的历史峰值,市值首次突破200亿美元,成为BAT、京东、网易和携程之后,第七家摸到“200亿美元”红...

    罗超频道
  • HDUOJ-----1541 Stars

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Jav...

    Gxjun
  • ISTIOCTL 命令行工具参考

    [virtualservice gateway destinationrule serviceentry httpapispec httpapispecbind...

    崔秀龙
  • HBase 学习分享

    有些时候你可曾面对产品看似普通且合理的需求,例如:1、能否让网页活动拉取用户的游戏好友关系链从而更精准的推送Tips? 2、判断用户是否在所有大区都没有角色这类...

    serena
  • Jenkins获取JENKINS_HOME过程

    系统管理→系统设置→主目录  (<JENKINS_URL>/configure页面)

    donghui
  • Science重磅!用光速实现深度学习,跟GPU说再见

    深度学习对算力的需求没有止境,但受制于能耗和物理极限,基于硅基的电子元件虽然现在还能支撑,但远处那堵几乎不可逾越的高墙已然显现。

    新智元
  • 深度学习的兴起:从NN到DNN | 小白深度学习入门

    1943年,神经生理学家和神经元解剖学家 Warren McCulloch 和数学家 Walter Pitts 提出了神经元的数学描述和结构,并且证明了只要有足...

    叶锦鲤

扫码关注云+社区

领取腾讯云代金券