Gephi绘制微博转发图谱:以“@老婆孩子在天堂”为例

一、前言

以前看过一篇提取《釜山行》剧本中人物,并用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中文教程 | Udemy

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条节点和边的数据绘制成网络图谱的流程,也对微博转发和扩散的方式有了不同角度的认知,对一则微博的生命周期,其热度及衰减过程有所了解。

补充一篇与本文相关的文章:伤心桥下春波绿,曾是惊鸿照影来

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

代码质量与技术债

我们可以通过各种类型的检测手段来给出其质量高低的度量。但是,如果直接拿出一段源代码放在我们面前,问这段代码的质量好坏时,我们又该如何作答呢?

5984
来自专栏数据派THU

独家 | 手把手教你学习R语言(附资源链接)

作者:NSS 翻译:杨金鸿 术语校对:韩海畴 全文校对:林亦霖 本文约3000字,建议阅读7分钟。 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言...

2777
来自专栏专知

【书籍】深度学习框架:PyTorch入门与实践(附代码)

【导读】2016年是属于TensorFlow的一年,凭借谷歌的大力推广,TensorFlow占据了各大媒体的头条。2017年年初,PyTorch的横空出世吸引了...

1.2K6
来自专栏CSDN技术头条

Appboy基于MongoDB的数据密集型实践

【编者按】本文摘录自Appboy联合创始人兼CIO Jon Hyman在MongoDB World 2015上的演讲。Appboy正在过手机等新兴渠道尝试一种新...

2027
来自专栏WeaponZhi

机器学习股票价格预测从爬虫到预测(数据爬取部分)

各位朋友大家好,小之今天又来给大家带来一些干货了。上篇文章机器学习股票价格预测初级实战是我在刚接触量化交易那会,因为苦于找不到数据源,所以找的一个第三方平台来获...

1874
来自专栏人工智能头条

Python & 机器学习项目集锦 | GitHub Top 45

2534
来自专栏ios 技术积累

iOS 调用苹果自带地图导航不准确问题解决

因为App需要调用第三方导航软件导航,后台返回的GPS,但是发现调用高德导航就要准确一些,调用苹果自带的地图导航偏差很大,查阅了相关资料如下

5011
来自专栏吾真本

致想给遗留系统写自动化单元测试的开发团队——事件风暴之父的工作坊实录之二:软件开发设计

一家大型企业的关键业务代码已经年久失修成为了难以维护的遗留代码,有着硅谷高科技企业软件开发管理经验的高管决定在企业内部搞编写单元测试和重构的极限编程实践。这需要...

823
来自专栏韩伟的专栏

在游戏上使用面向目标行为规划系统

本文为本人的翻译文章,原文《Applying Goal-Oriented Planning for Games 》连接为: http://alumni.me...

3337
来自专栏AI研习社

七步即可学会R语言,从此数据分析不再怕!

本文特约作者为 DataCamp 的联合创始人 Martijn Theuwissen 。更多 R 语言资源请访问这里(http://t.cn/R9Uo2po)...

3083

扫码关注云+社区

领取腾讯云代金券