本文已在CSDN,CSDN微博 ,CSDN公众号 ,IT技术之家 等平台转发。

最近身边的人都在谈论一件事:10月8日中午的一条微博,引发了一场微博的轩然大波。导致微博瘫痪的原因是全球超人气偶像明星鹿晗发了一条“大家好,给大家介绍一下,这是我女朋友@关晓彤 ‘’。这条微博并@关晓彤。数据分析,可以在这里自取!

截止目前,鹿晗的这条微博已经被转发1024887,回复2649409,点赞5173532。

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

这么庞大的数据量相当上亿的“肉鸡”(粉们和吃瓜群众)对微博的一次“攻击”。

难怪微博工程师要一边结婚一边工作,都是鹿晗这条微博惹的祸。最后加了1000台服务器暂时顶住了。


这条微博评论非常的多了,大家对这件事态度怎么样?我们利用数据来分析一下。

原料:

1. 鹿晗微博3万条评论;

2. 关晓彤微博3万条评论;

3.500万微博语料,下载地址,密码:tvdo

工具:

1. Python3.6

2. SnowNLP(https://github.com/isnowfy/snownlp可方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己(不是本人)实现的,并且自带了一些训练好的字典。)

3. WordCloud,词云。

实施过程:

1.下载微博500万条记录,一定要到数据库所在机器上导入。

        mysql - u root -p xxx <weibo500w.sql

2.导入的时间会持续很长时间,导入完成后,为了提高效率可以进行去重和清理空的数据。

        去重复内容: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.对微博语料进行情感分类,可以基于原有SnowNLP进行积极和消极情感分类和训练。

        import re
from snownlp import sentiment
import numpy as np
import pymysql
from snownlp import SnowNLP
import matplotlib.pyplot as plt
from snownlp import sentiment
from snownlp.sentiment import Sentiment
conn = pymysql.connect(host='数据库IP', user='用户名', password='密码', charset="utf8",use_unicode=False)  # 连接服务器
with conn:cur = conn.cursor()cur.execute("SELECT * FROM test.weibo WHERE weiboId < '%d'" % 6000000)rows = cur.fetchall()
comment = []
for row in rows:row = list(row)comment.append(row[18])
def train_model(texts):for li in texts:comm = li.decode('utf-8')text = re.sub(r'(?:回复)?(?://)?@[\w\u2E80-\u9FFF]+:?|\[\w+\]', ',',comm)socre = SnowNLP(text)if socre.sentiments > 0.8:with open('pos.txt', mode='a', encoding='utf-8') as g:g.writelines(comm +"\n")elif socre.sentiments < 0.3:with open('neg.txt', mode='a', encoding='utf-8') as f:f.writelines(comm + "\n")else:passtrain_model(comment)
sentiment.train('neg.txt', 'pos.txt')
sentiment.save('sentiment.marshal')

训练完成后会生成sentiment.marshal.3,将snownlp/sentiment/中sentiment.marshal.3直接替换,训练可以进行多轮训练,精度会更好。

4. 爬取两人的微博数据,使用http://m.weibo.com,解决懒加载问题,具体方式不在赘述,google 一下吧。

a. 微博提供了接口地址,微博提供API 地址,通过接口返回标准的json数据,自己想要存什么数据自己就存吧。

        {"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},}},...],"previous_cursor": 0,"next_cursor": 0,"total_number": 7
}

目前微博没有要求登录(可能是bug哦),建议sleep一下,否则很容易被微博大厂识别为爬虫行为二被封堵;b.数据存储,python很方便,直接存储在在文本中就好了,但是仍然需要对一些特殊表情,空,重复进行处理

        import codecs
import re
import numpy as np
import pymysql
from snownlp import SnowNLP
import matplotlib.pyplot as plt
from snownlp import sentiment
from snownlp.sentiment import Sentimentcomment = []
with open('文件路径', mode='r', encoding='utf-8') as f:rows = f.readlines()for row in rows:if row not in comment:comment.append(row.strip('\n'))
def snowanalysis(self):sentimentslist = []for li in self:#text = re.sub(r'(?:回复)?(?://)?@[\w\u2E80-\u9FFF]+:?|\[\w+\]', ',',li)print(li)s = SnowNLP(li)print(s.sentiments)sentimentslist.append(s.sentiments)plt.hist(sentimentslist, bins=np.arange(0, 1, 0.01))plt.show()
snowanalysis(comment)

来看一执行过程:

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

鹿晗微博评论情感分析,支持、祝福和反对、消极的的声音基本保持平衡。

关晓彤微博微博评论情感分析,祝福、赞成的积极的情绪,分值大多高于0.5,而期盼分手或者表达消极情绪的分值,大多低于0.5。从图上来看已经是一边到的态势。(由于语料样本的数量,分析存在一定误差,感兴趣的同学一起完善情感样本库。)

b.我们一起看一次两人微博评论的词云,代码如下:

        import pickle
from os import path
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
def make_worldcloud(file_path):text_from_file_with_apath = open(file_path,'r',encoding='UTF-8').read()wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all=False)wl_space_split = " ".join(wordlist_after_jieba)print(wl_space_split)backgroud_Image = plt.imread('图片路径')print('加载图片成功!')'''设置词云样式'''stopwords = STOPWORDS.copy()stopwords.add("哈哈") #可以加多个屏蔽词wc = WordCloud(width=1024,height=768,background_color='white',# 设置背景颜色mask=backgroud_Image,# 设置背景图片font_path='E:\simsun.ttf',  # 设置中文字体,若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字max_words=600, # 设置最大现实的字数stopwords=stopwords,# 设置停用词max_font_size=400,# 设置字体最大值random_state=50,# 设置有多少种随机生成状态,即有多少种配色方案)wc.generate_from_text(wl_space_split)#开始加载文本img_colors = ImageColorGenerator(backgroud_Image)wc.recolor(color_func=img_colors)#字体颜色为背景图片的颜色plt.imshow(wc)# 显示词云图plt.axis('off')# 是否显示x轴、y轴下标plt.show()#显示# 获得模块所在的路径的d = path.dirname(__file__)# os.path.join():  将多个路径组合后返回wc.to_file(path.join(d, "h11.jpg"))print('生成词云成功!')make_worldcloud('文本路径')

鹿晗评论词云,出现祝福、喜欢、支持等关键词,也出现分手等一些词。

关晓彤微博微博评论词云,出现很鹿晗,李易峰,不配,讨厌,不要脸的声音。


更多干货请浏览:

还在手调网络权限?资深IT工程师都这样玩企业组网

利用500W条微博语料对评论进行情感分析相关推荐

  1. 数据分析案例-对某宝用户评论做情感分析

    目录 原始数据 绘制词云图 情感分析 原始数据 原始数据为某宝一商品的用户评论数据 绘制词云图 # coding=utf-8import jieba import re import wordclou ...

  2. 使用snownlp对京东购物评论进行情感分析

    使用snownlp对京东购物评论进行情感分析 目的:利用snownlp包,对京东评论进行情感分析 涉及: mysql,snownlp,pandas等工具包 代码结构如下: 注意: jd_comment ...

  3. 基于SnowNLP的商品评论文本情感分析

           摘要:情感文本电商情感标注分析研究是当前电商数据情感挖掘学术研究的重要热点,具有极高的国际应用价值.对当前电商手机在线商品评论词典进行情感文本电商情感标注分析与词典数据情感挖掘研究具有很 ...

  4. 数据挖掘实战—电商产品评论数据情感分析

    文章目录 引言 一.评论预处理 1.评论去重 2.数据清洗 二.评论分词 1.分词.词性标注.去除停用词 2.提取含名词的评论 3.绘制词云查看分词效果 三.构建模型 1.评论数据情感倾向分析 1.1 ...

  5. 数据挖掘作业学习学习笔记-电商产品评论数据情感分析

    使用的教材:<电商产品评论数据情感分析> 作业&学习笔记:数据挖掘第14周 说明:书本内容详实.此篇用于自己期末回顾知识的重点内容,故做出的学习笔记缺省了书本原本的其他精粹. 随着 ...

  6. 【项目实战】Python实现基于LDA主题模型进行电商产品评论数据情感分析

    说明:这是一个机器学习.数据挖掘实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 视频: Python实现基于LDA模型进行电商产品评论数据情感分析 ...

  7. vue+flask微博大数据舆情监控+情感分析可视化系统+爬虫

    本文最近开发的一个项目,记录下其过程以及效果 亮点功能 (1)情感分析之舆情管理:在爬取微博数据的同时,利用senta框架提供的预模型进行情感分析,统计情感分析结果来进行某个话题/文章的舆情监控.(s ...

  8. 金融大数据模型分享-股市评论数据情感分析

    随着互联网日益发展,越来越多人依赖网络搜索信息和分享交流.股市投资者越来越倾向网络平台获取金融信息和并交流投资观点.       随着互联网应该快速发展和用户数量激增,股票市场评论和意见很大程度上反应 ...

  9. 基于SnowNLP的购物评论文本情感分析及准确率验证

    因论文涉及到SnowNLP情感分析的内容,于是对该内容进行了学习,但发现网上的资源发布更新不及时,大多数文章均发布于18年及以前.由于python版本的迭代,使得以往的资源代码有所出入,因此我对于Sn ...

最新文章

  1. vue引入图片路径的三种主要方法
  2. LeetCode实战:字符串转换整数 (atoi)
  3. Python | 一万多条拼车数据,看春运的迁徙图
  4. 怎么将文件转换成linux文件,Linux将DOS文件格式转换成UNIX文件格式的方法
  5. 俯卧撑打造男人结实臂膀
  6. Struts2-拦截器原理
  7. set和vector
  8. jQuery 鼠标滚轮插件应用 mousewheel
  9. 编译文件出错fatal error: GL/glew.h: No such file or directory
  10. HDU 5971 2016ICPC大连 A: Wrestling Match(二分图判断)
  11. R语言包的升级与降级
  12. JAVA UDP 发送和接收数据
  13. Selenium测试指南
  14. 从致远OA-ajax.do未授权文件上传漏洞复现
  15. Unity 如何获取安卓设备的SN号
  16. 设置cmd命令提示符窗口界面语言为英文
  17. 【STM32G431RBTx】备战蓝桥杯嵌入式→基本模块→I2C→M24C02
  18. 华为机试:身高体重排序
  19. nodejs完成从163邮箱发送邮件到qq邮箱
  20. 谈谈一些感触——自我反思和总结

热门文章

  1. 使用并行的方法计算斐波那契数列 (Fibonacci)
  2. 用 .NET 启动你的 大疆 Ryze Tello 无人机
  3. 在docker中使用U盘
  4. 微信转发或分享朋友圈带缩略图、描述的实现方法
  5. C++实现职工管理系统
  6. java调用包中的类_java调用另一个包中的类的方法
  7. 电脑数据恢复软件哪个好用:数据恢复软件推荐Tenorshare 4DDiG中文版
  8. DW网页设计大作业成品品分享,Div+Css,主题如风景、校园、美食、动漫、lol、咖啡...
  9. Excel转Word,Excel导出Word,利用Excel表批量生成Word文档,邮件合并进阶版
  10. php $_SERVER的参数与说明