一、前言
以前看过一篇提取《釜山行》剧本中人物,并用Gephi绘制关系图谱的文章,因此想用Gephi绘制下微博转发情况,借此来换个角度看看微博内容是怎么扩散的。其中爬取转发数据的思路可见于:《老树微博,三千诗与画》,大同小异,不再赘述。
而在选择哪则热门微博时,正好看到有人转发了杭州保姆纵火案受害者家属,林生斌,微博ID:“老婆孩子在天堂”的一则为四川地震灾民捐赠物资的微博,截止周五(20170811)晚上10点20,转发发数为54045(评论:31431,点赞:238204。之后截图数据不同),数据量较为充足,可以一试。
另外一个选定这则微博,而非其他更具娱乐性、更能蹭热点的话题的原因,是一直没能为林先生干点什么,因此如果能将转发图谱绘制出来,并和《爬取张佳玮138w+知乎关注者:数据可视化》一文一样登上网站首页被加入今日看点的话,也姑且能算是帮其在扩散上尽了点小力。
二、Gephi简介
Gephi是一款开源免费跨平台基于JVM的复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具。
应用场景
探索性数据分析:直观的网络操作实时分析。
链接分析:给出了关联对象背后(特别是无标度网络下)的结构。
社交网络分析:可以轻松创建对应社区组织和小世界(small-world)的社交数据链接。
生物网络分析:展示生物数据模式。
海报创作:通过打印高品质地图推广科学工作。
三、数据处理
想要用Gephi绘制网络图谱,最重要的就是知道每条网络的起点和终点,即Source和Target,以及所有这些点所组成的Id。其他还有每条网络的权重(Weight)、类型(有向的、无向的)、Id的名字Name、标签Label等等。
而爬取微博获得的原始数据却是如图格式的,因此,需要根据每一条的text内容,找出所有转发的节点和对应的起点、终点指向关系。
以用户“@Ponyyoung”的转发为例,text内容如下:
“//@柯蓝:危难中心里还有别人,让人尊敬。//@西门不暗: 这几年公共事件中,林先生是我见过情绪最克制,表达最得体的人。命运不该对他这么残忍。祝福他。”
这一条网络,包含四个节点,分别为:@老婆孩子在天堂>>>@西门不暗>>>@柯蓝>>>@Ponyyoung。
那么在CSV文件里,用'//'分列,切分成不同列,text从右到左便分别是第一层转发、第二层转发、第三层转发。知道了节点和所有转发层级后,将数据处理成Gephi所需的格式(本项目筛选了14层转发,越到后面数据也越少了,基本涵盖了全部数据):
在Nodes文件里将所有微博节点以"Id"设置为自然数的形式排列:
并进一步将Edges文件中Source和Target列,转换成对应“Id”值:
四、Gephi绘图
经过上述的爬取数据(截止20170813下午4点前)并将数据处理成Gephi所需的格式后,便终于到了最激动人心的绘图步骤了。由于此前并未使用过Gephi,里面各种参数和内置算法都不太熟悉,能得到怎么样的成果图,非常的依赖于绘制过程的操作。
此处推荐一个视频教程和一篇操作文章:
GEPHI – Introduction to Network Analysis and Visualization
后面的操作基本按照后者进行,因此不再重复讲解操作步骤。不过由于电脑配置不行,跑软件内置算法时实在吃力,最终在只进行到3.3,给网络图上色的步骤,模块化处理之前。
运行Force Atlas 2算法后,图谱不断发生变化:
基本稳定后,give color to see see:
还是蛮漂亮的,不是嘛!其中右上角的圆形区域,其中心便是林先生的ID所在,左右密集的圆环就是由转发层级较少的ID所形成,结合1-14层,各层级转发数量图可知,在所有转发情况中直接转发原微博占比最高,其次是第二层转发。此处无法得知转发的用户中多少是林先生的粉丝,因而直接转发,或者有哪些大V介入,使其扩散出去,为更多人所见:
继续看看右上角圆环区域,所有ID所形成的节点,清晰可见:
放大,并加上ID名称,大致如下,由于软件内调整缩放大小和看图,非常不便,非常卡,所有姑且只能这么看看:
重新将目光移动到非右上角区域,错综复杂的转发关系,可见一斑:
找出其中一小簇节点情况(真的是漂亮,逃):
加上标签,可知是由用户“@据扯”引发的一小簇转发:
对应到CSV表格里,进行验证下,虽然上图昵称重叠严重,但还是基本符合的情况:
以上就是用Gephi绘制微博转发图谱的内容,还是那句话,由于跑不动软件的算法,虽然最后得到的图也还行,但操作不算完整。也无法得知千万粉丝、百万粉丝的大V,或高转发ID,在整个扩散过程中所起到的具体作用和直观的节点情形,略感遗憾。
五、微博生命周期
林先生的原微博发布时间为20170811(周五)14:43。从截止0813(周日)16点前获取的数据来看,本则微博的转发数在发布后的1-2小时内达到单位小时仅万条的高峰,之后虽然维持4-5千每小时的转发量至深夜,但下降趋势已然明显可见,次日转发数已经无法和当天相比。当然这不仅有一则微博本身生命周期的原因;前期可能有不少大V参与的原因;也有林先生发布其他微博,大家关注点转移等原因。
六、小结
继续在《老树微博,三千诗与画》之后,有针对性地抓取微博数据,但这回曾遇上API请求被拒,微博app也好几个小时上不去的情况,看来再大规模爬微博数据时要注意了。
再是,基本完成用Gephi绘图和前期找到转发的节点,并将数据处理成相应格式的步骤,在没使用过Gephi的情况下,熟悉了下将近5w条节点和边的数据绘制成网络图谱的流程,也对微博转发和扩散的方式有了不同角度的认知,对一则微博的生命周期,其热度及衰减过程有所了解。
补充一篇与本文相关的文章:《伤心桥下春波绿,曾是惊鸿照影来》
网友评论