當前位置:
首頁 > 科技 > 從 500 萬條的微博語料對鹿晗、關曉彤微博的熱門評論進行情感分析

從 500 萬條的微博語料對鹿晗、關曉彤微博的熱門評論進行情感分析

關鍵時刻,第一時間送達!

最近身邊的人都在談論一件事:10月8日中午的一條微博,引發了一場微博的軒然大波。導致微博癱瘓的原因是全球超人氣偶像明星鹿晗發了一條「大家好,給大家介紹一下,這是我女朋友@關曉彤」。這條微博並@關曉彤。數據分析,可以在這裡(https://wfx.51wyq.cn/share/view/j3qLuwlKZ1mDoQBJa)自取!

截止目前,鹿晗的這條微博已經被轉發1024887,回復2649409,點贊5173532。

關曉彤的這條微博轉發67652,回復873532,點贊:2260400。

這麼龐大的數據量相當上億的「肉雞」(粉們和吃瓜群眾)對微博的一次「攻擊」。

難怪微博工程師要一邊結婚一邊工作,都是鹿晗這條微博惹的禍。最後加了1000台伺服器暫時頂住了。

這條微博評論非常的多了,大家對這件事態度怎麼樣?我們利用數據來分析一下。

原料:

鹿晗微博3萬條評論;

關曉彤微博3萬條評論;

500萬微博語料,下載地址(https://pan.baidu.com/share/init?surl=eSeXh5K),密碼:tvdo

工具:

Python3.6

SnowNLP(https://github.com/isnowfy/snownlp可方便的處理中文文本內容,是受到了TextBlob的啟發而寫的,由於現在大部分的自然語言處理庫基本都是針對英文的,於是寫了一個方便處理中文的類庫,並且和TextBlob不同的是,這裡沒有用NLTK,所有的演算法都是自己(不是本人)實現的,並且自帶了一些訓練好的字典。)

WordCloud,詞雲。

實施過程:

1. 對微博語料進行情感分類,可以基於原有SnowNLP進行積極和消極情感分類:積極情緒類:pos.txt和消極情緒類:neg.txt 然後進行訓練:

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 一下吧。

a. 微博提供了介面地址,微博提供API 地址,通過介面返回標準的json數據

{

"comments": [

{

"created_at": "Wed Jun 01 00:50:25 +0800 2011",

"text": "love your work.......",

"source": "新浪微博",

"user": {

"screen_name": "zaku",

"name": "zaku",

"province": "11",

"city": "5",

"location": "北京 朝陽區",

"description": "人生五十年,乃如夢如幻;有生斯有死,壯士復何憾。",

"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,

"verified_reason": "",

"follow_me": false,

"online_status": 0,

"bi_followers_count": 215

},

"status": {

"created_at": "Tue May 31 17:46:55 +0800 2011",

"text": "求關注。",

"source": "新浪微博",

"favorited": false,

"truncated": false,

"in_reply_to_status_id": "",

"in_reply_to_user_id": "",

"in_reply_to_screen_name": "",

"geo": null,

"reposts_count": 8,

"comments_count": 9,

"annotations": [],

"user": {

"screen_name": "zaku",

"name": "zaku",

"province": "11",

"city": "5",

"location": "北京 朝陽區",

"description": "人生五十年,乃如夢如幻;有生斯有死,壯士復何憾。",

"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,

"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進行處理:

去重複內容:

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。從圖上來看已經是一邊到的態勢。

關曉彤微博微博評論詞雲

從詞雲上來看,出現很多李易峰,不配,討厭的聲音。

-------- 熱聞回顧 --------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

AI 預測的七宗致命罪惡
十年一顧,iOS與Android 這樣改變了我們
從抗美援朝到圖形圖像、演算法,84 歲老爺爺的跨越性技術之路

TAG:CSDN |