對B站彈幕數據分析及可視化的小例子
最近在上數據可視化的課,要做一個大作業,有感於一篇關於檢測鬥魚直播是否有機器人的知乎文章https://zhuanlan.zhihu.com/p/25721696,就想到了b站。b站的彈幕也是含有了大量的數據,應該可以一試。這篇文章加以改進一般可以當作一個小課題或大作業,應該還是挺有意思的,創意也新。
選用開發工具:python,Echart
首先來獲取彈幕文件,參考選取了一個荒野求生的視頻,F10打開編輯模式,選擇network選項,找到一個純數字的xml文件,雙擊打開就是我們所需要的彈幕文件。
文件內是這個樣子。
至於數字代表的內容,選取一個示例:
關於B站彈幕XML文件中的參數分別代表什麼含義_百度知道
第一個參數是彈幕出現的時間以秒數為單位。
第二個參數是彈幕的模式1..3 滾動彈幕 4底端彈幕 5頂端彈幕 6.逆向彈幕 7精準定位 8高級彈幕第三個參數是字型大小, 12非常小,16特小,18小,25中,36大,45很大,64特別大第四個參數是字體的顏色 以HTML顏色的十位數為準
第五個參數是Unix格式的時間戳。基準時間為 1970-1-1 08:00:00第六個參數是彈幕池 0普通池 1字幕池 2特殊池 【目前特殊池為高級彈幕專用】第七個參數是發送者的ID,用於「屏蔽此彈幕的發送者」功能第八個參數是彈幕在彈幕資料庫中rowID 用於「歷史彈幕」功能。知道了這些數字的意義,就有許多東西值得分析了。我獲取了荒野求生視頻集中的49個視頻彈幕,差不多130000條,因為只有49個文件就沒有寫爬蟲,後續會學習一下。
下一步就是讀取這些xml文件存到數組裡,這裡方法網上有很多,就不介紹了,代碼最後也會有,方便大家。
我準備對彈幕的相對時間,作者和語句三個方面進行分析。
首先是每集彈幕量分布情況,橫軸是集數,縱軸是彈幕量,數據都是在python中處理好在Echart中進行可視化圖表,Echart是一個繪製圖表的國內網站,語言是JS,有著大量的示例,花很少的時間就能做出效果。
從圖表看到,前幾集的彈幕很多,以後越來越少,最後一集又多了一點,估計大家在完結撒花。。很符合b站的規律= =,值得注意的是31集突然增多,回去看了一下是特別推薦集,抓鱷魚的。。
接下來是一集里的彈幕量和時間的關係,橫軸的時間以10秒為單位,264截止也就是2640秒,約46分鐘。可以看到有許多尖峰,肯定都是貝爺的「精彩時刻」= = 覺得b站可以利用彈幕來進行精彩時刻定位啊,都不用手工標註,靠著人民群眾的彈幕就標出來了,方便大家快進。不過也不是所有都是精彩時刻。。比如說其中一個尖峰是喜聞樂見的時間簽到時間。。
接下來我們通過作者這個維度分析一下。可以看到有一半人發送了一條彈幕,(應該更多的人沒有發送彈幕。。未統計),像我自己逛了5,6年b站估計一共也就發了十幾條。。慚愧。。可以發現第一名發送了近700條,49個視頻平均一集發送十幾條,真是貝爺的死忠粉。。最後根據彈幕製作了個詞雲,可以直觀的顯示出彈幕的詞頻。
通常先用jieba分詞模塊進行分詞,再去除停用詞,最後使用wordcloud模塊進行繪製。
經統計,貝爺這個詞出現了12000多次,平均10條彈幕就有一條含有貝爺。。另外心疼攝影師。。
基本就簡單分析了這麼多,大概也夠一個大作業的量了,當然彈幕這個東西往深了做還是很有挖掘空間的,挖取海量的彈幕來做一些用戶的行為預測什麼的,哈哈
第一次寫知乎,感覺寫這個也不白看了這麼多年b站。。本來想找個動漫分析的。。怕是講ppt不好看。。
推薦閱讀:
※樸素貝葉斯演算法和R語言
※談談機器學習與數據分析中的問題定義
※Capsule network--《Dynamic Routing Between Capsules》
※機器學習中正則化項L1和L2的直觀理解
※線性回歸和邏輯回歸代碼部分(五)