一泡仗、前言
以前看過一篇提取《釜山行》劇本中人物埋虹,并用Gephi繪制關系圖譜的文章,因此想用Gephi繪制下微博轉發(fā)情況娩怎,借此來換個角度看看微博內容是怎么擴散的搔课。其中爬取轉發(fā)數據的思路可見于:《老樹微博,三千詩與畫》截亦,大同小異爬泥,不再贅述。
而在選擇哪則熱門微博時崩瓤,正好看到有人轉發(fā)了杭州保姆縱火案受害者家屬袍啡,林生斌,微博ID:“老婆孩子在天堂”的一則為四川地震災民捐贈物資的微博却桶,截止周五(20170811)晚上10點20境输,轉發(fā)發(fā)數為54045(評論:31431,點贊:238204颖系。之后截圖數據不同)嗅剖,數據量較為充足,可以一試嘁扼。
另外一個選定這則微博信粮,而非其他更具娛樂性、更能蹭熱點的話題的原因趁啸,是一直沒能為林先生干點什么强缘,因此如果能將轉發(fā)圖譜繪制出來,并和《爬取張佳瑋138w+知乎關注者:數據可視化》一文一樣登上網站首頁被加入今日看點的話不傅,也姑且能算是幫其在擴散上盡了點小力旅掂。
二、Gephi簡介
Gephi是一款開源免費跨平臺基于JVM的復雜網絡分析軟件, 其主要用于各種網絡和復雜系統(tǒng)访娶,動態(tài)和分層圖的交互可視化與探測開源工具商虐。
應用場景
探索性數據分析:直觀的網絡操作實時分析。
鏈接分析:給出了關聯對象背后(特別是無標度網絡下)的結構。
社交網絡分析:可以輕松創(chuàng)建對應社區(qū)組織和小世界(small-world)的社交數據鏈接称龙。
生物網絡分析:展示生物數據模式。
海報創(chuàng)作:通過打印高品質地圖推廣科學工作戳晌。
三鲫尊、數據處理
想要用Gephi繪制網絡圖譜,最重要的就是知道每條網絡的起點和終點沦偎,即Source和Target疫向,以及所有這些點所組成的Id。其他還有每條網絡的權重(Weight)豪嚎、類型(有向的搔驼、無向的)、Id的名字Name侈询、標簽Label等等舌涨。
而爬取微博獲得的原始數據卻是如圖格式的,因此扔字,需要根據每一條的text內容囊嘉,找出所有轉發(fā)的節(jié)點和對應的起點、終點指向關系革为。
以用戶“@Ponyyoung”的轉發(fā)為例扭粱,text內容如下:
“//@柯藍:危難中心里還有別人,讓人尊敬震檩。//@西門不暗: 這幾年公共事件中琢蛤,林先生是我見過情緒最克制,表達最得體的人抛虏。命運不該對他這么殘忍博其。祝福他〖卫伲”
這一條網絡贺奠,包含四個節(jié)點,分別為:@老婆孩子在天堂>>>@西門不暗>>>@柯藍>>>@Ponyyoung错忱。
那么在CSV文件里儡率,用'//'分列,切分成不同列以清,text從右到左便分別是第一層轉發(fā)儿普、第二層轉發(fā)、第三層轉發(fā)掷倔。知道了節(jié)點和所有轉發(fā)層級后眉孩,將數據處理成Gephi所需的格式(本項目篩選了14層轉發(fā),越到后面數據也越少了,基本涵蓋了全部數據):
在Nodes文件里將所有微博節(jié)點以"Id"設置為自然數的形式排列:
并進一步將Edges文件中Source和Target列浪汪,轉換成對應“Id”值:
四巴柿、Gephi繪圖
經過上述的爬取數據(截止20170813下午4點前)并將數據處理成Gephi所需的格式后,便終于到了最激動人心的繪圖步驟了死遭。由于此前并未使用過Gephi广恢,里面各種參數和內置算法都不太熟悉,能得到怎么樣的成果圖呀潭,非常的依賴于繪制過程的操作钉迷。
此處推薦一個視頻教程和一篇操作文章:
GEPHI – Introduction to Network Analysis and Visualization
后面的操作基本按照后者進行,因此不再重復講解操作步驟钠署。不過由于電腦配置不行糠聪,跑軟件內置算法時實在吃力,最終在只進行到3.3谐鼎,給網絡圖上色的步驟舰蟆,模塊化處理之前。
運行Force Atlas 2算法后狸棍,圖譜不斷發(fā)生變化:
基本穩(wěn)定后夭苗,give color to see see:
還是蠻漂亮的,不是嘛隔缀!其中右上角的圓形區(qū)域题造,其中心便是林先生的ID所在,左右密集的圓環(huán)就是由轉發(fā)層級較少的ID所形成猾瘸,結合1-14層界赔,各層級轉發(fā)數量圖可知,在所有轉發(fā)情況中直接轉發(fā)原微博占比最高牵触,其次是第二層轉發(fā)淮悼。此處無法得知轉發(fā)的用戶中多少是林先生的粉絲,因而直接轉發(fā)揽思,或者有哪些大V介入袜腥,使其擴散出去,為更多人所見:
繼續(xù)看看右上角圓環(huán)區(qū)域钉汗,所有ID所形成的節(jié)點羹令,清晰可見:
放大,并加上ID名稱损痰,大致如下福侈,由于軟件內調整縮放大小和看圖,非常不便卢未,非撤玖荩卡堰汉,所有姑且只能這么看看:
重新將目光移動到非右上角區(qū)域,錯綜復雜的轉發(fā)關系伟墙,可見一斑:
找出其中一小簇節(jié)點情況(真的是漂亮翘鸭,逃):
加上標簽,可知是由用戶“@據扯”引發(fā)的一小簇轉發(fā):
對應到CSV表格里戳葵,進行驗證下矮固,雖然上圖昵稱重疊嚴重,但還是基本符合的情況:
以上就是用Gephi繪制微博轉發(fā)圖譜的內容譬淳,還是那句話,由于跑不動軟件的算法盹兢,雖然最后得到的圖也還行邻梆,但操作不算完整。也無法得知千萬粉絲绎秒、百萬粉絲的大V浦妄,或高轉發(fā)ID,在整個擴散過程中所起到的具體作用和直觀的節(jié)點情形见芹,略感遺憾剂娄。
五、微博生命周期
林先生的原微博發(fā)布時間為20170811(周五)14:43玄呛。從截止0813(周日)16點前獲取的數據來看阅懦,本則微博的轉發(fā)數在發(fā)布后的1-2小時內達到單位小時僅萬條的高峰,之后雖然維持4-5千每小時的轉發(fā)量至深夜徘铝,但下降趨勢已然明顯可見耳胎,次日轉發(fā)數已經無法和當天相比。當然這不僅有一則微博本身生命周期的原因惕它;前期可能有不少大V參與的原因怕午;也有林先生發(fā)布其他微博,大家關注點轉移等原因淹魄。
六郁惜、小結
繼續(xù)在《老樹微博,三千詩與畫》之后甲锡,有針對性地抓取微博數據兆蕉,但這回曾遇上API請求被拒,微博app也好幾個小時上不去的情況缤沦,看來再大規(guī)模爬微博數據時要注意了恨樟。
再是,基本完成用Gephi繪圖和前期找到轉發(fā)的節(jié)點疚俱,并將數據處理成相應格式的步驟劝术,在沒使用過Gephi的情況下,熟悉了下將近5w條節(jié)點和邊的數據繪制成網絡圖譜的流程,也對微博轉發(fā)和擴散的方式有了不同角度的認知养晋,對一則微博的生命周期衬吆,其熱度及衰減過程有所了解。
補充一篇與本文相關的文章:《傷心橋下春波綠绳泉,曾是驚鴻照影來》