这学期的一个课程项目,写出来跟大家分享一下。 一直都会有这种说法,Twitter上的中文用户比微博上的用户更开放,更喜交流。正好这个学期在上网络分析的课,就试图用课上的知识分析一下两边的网络所呈现的状态。 数据收集 我们先用follower数定义出top用户,按照follower数由大到小排rank,取前100做为top用户。微博本身提供了排行榜,其中人气榜是按照follower数量来的。我们先抓取了人气总榜的前100,后来意识到这个总榜里大多数都是明星,跟Twitter的top中文用户差别太大,于是又抓了微博上草根榜前100。 Twitter中文数据比较难办,我参考Twitese的代码,自己写了一个很简易的版本。抓了14w条最近发的推、简介和用户名里有中文的用户,另外写了一些额外的条件保证韩国和日本友人不要跑到我的数据库里来。最后按照Follower数取了前100. 然后分别分析这三个top用户组之间互相关注的情况,得到了三个用户网络分别是Top_Twitter(Twitter top中文用户),Top_Weibo(微博人气总榜top)和Top_G_Weibo(微博草根人气榜top)。其中每一条Edge都代表一个关注关系,每一个点都代表一个用户。这个网络是directed的,就是说从节点A到节点B的edge和从节点B到A的edge是两条edge。 分析 用户交流: 从下面这个图,大概就能看出三个网络中用户的联系程度了。图中点的颜色越红,代表它受到其他点的关注读越高,Top_G_Weibo里有很多孤立的点。: 详细数据如下。 从这个表里可以看到,Top_Twitter这个网络的关注关系的总量差不多是Top_Weibo的两倍,是Top_G_Weibo的5倍左右。这说明在这个三个网络中间,Twitter用户更愿意关注别人。 Global clustering系数代表了点与点之间联系的紧密程度。系数越大,联系越紧密。从表里面同样可以看到,Top_Twitter网络里的节点联系更紧密。 Strong connected component指的是,如果网络中的一个子网络里没一个节点都能到达另外一个节点,那么这个子网络就是整个网络的一个strong connected component。详细看下表: 表里第一行是component的个数,第二行是每个component里的节点数的列表。Top_Twitter里只有一个点可能不被其他点reach到。而Top_G_Weibo里这样的点多达30个。 另外一个重要的数据是每日发推量。Top_Twitter里的用户平均每日发推数量是10.62,Top_Weibo里是4.56,Top_G_Weibo里是4.35。从这个数据也可以看出Twitter中的top中文用户更活跃,愿意发表意见与人交流。 用户多样性: 用户多样性是一个不太好考查的东西,我们讨论后决定,用用户所在地的分布来分析用户多样性。 三个图中的圆圈上的每一个点都是一个地点,从每个点伸出去的轴都是在同一地点的用户。可以看到三个网络中北京的用户都是处于绝对多数的地位。圆圈的大小则代表100个用户所在地的多样性。Top_Weibo的中心圆最小,明星大多都在香港北京台湾…因为Top_Twitter和Top_G_Weibo里有太多用户的地点是Unknown或者Other,所以他们的多样性,还需要进一步检查。另外注意到Twitter网络里有些用户来几个热点事件地点。 另外我们还考查了几个拥有最大用户数的地点之间的关系: 北京真是一个超大的hub。另外除了中间那个爆多明星的网络,另外两个网络都显示广东跟北京互动的最多。 讨论 整个项目还有很多可以改进的地方,像location就可以尝试抓取更准确的数据。另外抓取的三个网络全部都是搞biased的网络,如果需要知道整个网络的状况,需要更随机的取样。另外如果可以分析retweet、mention和各个推的内容,就能更准确的分析节点之间的互动了。 下个学期注册了独立学习课程,准备把这个项目继续下去。