最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
开启左侧

利用500万条微博语料对微博评论进行情感分析

[复制链接]
发表于 2017-10-17 11:13:06 | 显示全部楼层 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近身边的人都在谈论一件事:10月8日中午的一条微博,引发了一场微博的轩然大波。导致微博瘫痪的原因是全球超人气偶像明星鹿晗发了一条“大家好,给大家介绍一下,这是我女朋友@关晓彤”。这条微博并@关晓彤。数据分析,可以在这里自取
截止目前,鹿晗的这条微博已经被转发1024887,回复2649409,点赞5173532。

关晓彤的这条微博转发67652,回复873532,点赞:2260400。

这么庞大的数据量相当上亿的“肉鸡”(粉们和吃瓜群众)对微博的一次“攻击”。
难怪微博工程师要一边结婚一边工作,都是鹿晗这条微博惹的祸。最后加了1000台服务器暂时顶住了。
这条微博评论非常的多了,大家对这件事态度怎么样?我们利用数据来分析一下。
原料:
  • 鹿晗微博3万条评论;
  • 关晓彤微博3万条评论;

3.500万微博语料,下载地址,密码:tvdo
工具:
  • Python3.6
  • SnowNLP(https://github.com/isnowfy/snownlp可方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己(不是本人)实现的,并且自带了一些训练好的字典。)
  • WordCloud,词云。

实施过程:
  • 1.对微博语料进行情感分类,可以基于原有SnowNLP进行积极和消极情感分类:积极情绪类:pos.txt和消极情绪类:neg.txt 然后进行训练:
[AppleScript] 纯文本查看 复制代码
from snownlp import sentiment
sentiment.train('neg.txt', 'pos.txt')
sentiment.save('sentiment.marshal')
在snownlp/sentiment/init.py中第11行改到你训练的文件。
  • 2.爬取两人的微博数据,使用http://m.weibo.com,解决懒加载问题,具体方式不在赘述,google 一下吧。

[AppleScript] 纯文本查看 复制代码
{
    "comments": [
        {
            "created_at": "Wed Jun 01 00:50:25 +0800 2011",
            "id": 12438492184,
            "text": "love your work.......",
            "source": "<a href="http://weibo.com" rel="nofollow">新浪微博</a>",
            "mid": "202110601896455629",
            "user": {
                "id": 1404376560,
                "screen_name": "zaku",
                "name": "zaku",
                "province": "11",
                "city": "5",
                "location": "北京 朝阳区",
                "description": "人生五十年,乃如梦如幻;有生斯有死,壮士复何憾。",
                "url": "http://blog.sina.com.cn/zaku",
                "profile_image_url": "http://tp1.sinaimg.cn/1404376560/50/0/1",
                "domain": "zaku",
                "gender": "m",
                "followers_count": 1204,
                "friends_count": 447,
                "statuses_count": 2908,
                "favourites_count": 0,
                "created_at": "Fri Aug 28 00:00:00 +0800 2009",
                "following": false,
                "allow_all_act_msg": false,
                "remark": "",
                "geo_enabled": true,
                "verified": false,
                "allow_all_comment": true,
                "avatar_large": "http://tp1.sinaimg.cn/1404376560/180/0/1",
                "verified_reason": "",
                "follow_me": false,
                "online_status": 0,
                "bi_followers_count": 215
            },
            "status": {
                "created_at": "Tue May 31 17:46:55 +0800 2011",
                "id": 11488058246,
                "text": "求关注。",
                "source": "<a href="http://weibo.com" rel="nofollow">新浪微博</a>",
                "favorited": false,
                "truncated": false,
                "in_reply_to_status_id": "",
                "in_reply_to_user_id": "",
                "in_reply_to_screen_name": "",
                "geo": null,
                "mid": "5612814510546515491",
                "reposts_count": 8,
                "comments_count": 9,
                "annotations": [],
                "user": {
                    "id": 1404376560,
                    "screen_name": "zaku",
                    "name": "zaku",
                    "province": "11",
                    "city": "5",
                    "location": "北京 朝阳区",
                    "description": "人生五十年,乃如梦如幻;有生斯有死,壮士复何憾。",
                    "url": "http://blog.sina.com.cn/zaku",
                    "profile_image_url": "http://tp1.sinaimg.cn/1404376560/50/0/1",
                    "domain": "zaku",
                    "gender": "m",
                    "followers_count": 1204,
                    "friends_count": 447,
                    "statuses_count": 2908,
                    "favourites_count": 0,
                    "created_at": "Fri Aug 28 00:00:00 +0800 2009",
                    "following": false,
                    "allow_all_act_msg": false,
                    "remark": "",
                    "geo_enabled": true,
                    "verified": false,
                    "allow_all_comment": true,
                    "avatar_large": "http://tp1.sinaimg.cn/1404376560/180/0/1",
                    "verified_reason": "",
                    "follow_me": false,
                    "online_status": 0,
                    "bi_followers_count": 215
                }
            }
        },
        ...
    ],
    "previous_cursor": 0,
    "next_cursor": 0,
    "total_number": 7
}
目前微博没有要求登录(可能是bug哦),建议sleep一下,否则很容易被微博大厂识别为爬虫行为二被封堵;b.数据存储,python很方便,可以存储在文本,mysql等数据库中。但是微博大厂在接口返回数据中会返回一些重复的和一些空数据,所以这部分需要处理一下。建议放在数据库中,去重和清理空的数据非常方便。可以使用sql进行处理:
去重复内容:
   
[AppleScript] 纯文本查看 复制代码
 DELETE from 表名 where id not in (select minid from (select min(id) as minid from 表名 group by 字段) b);
去值为NULL:
    delete from 表名 where 字段名=NULL
去值为""空值
  delete from 表名 where 字段名=''
  • 3.情感分析:

读取每段评论并依次进行情感值分析,生成一个0-1之间的值,当值大于0.5时代表句子的情感极性偏向积极,当分值小于0.5时,情感极性偏向消极,当然越偏向俩头,情绪越偏激。

鹿晗微博评论情感分析
看出支持、祝福和反对、消极的的声音基本保持平衡。(由于语料样本的数量,分析存在一定误差,感兴趣的同学一起完善情感样本库。)
鹿晗评论词云
词云中出现祝福、喜欢、支持等关键词,也出现分手等一些词。

关晓彤微博微博评论情感分析
祝福、赞成的积极的情绪,分值大多高于0.5,而期盼分手或者表达消极情绪的分值,大多低于0.5。从图上来看已经是一边到的态势。
关晓彤微博微博评论词云
从词云上来看,出现很李易峰,对不配,讨厌的声音。
关于本文有任何看法,请点击这里和作者联系.  

楼主热帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-3-29 13:49

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表