twitter日本語ユーザーのソーシャルグラフダンプ
twitter日本語ユーザー100万人分のフォローイングとプロフィールのダンプを作成しました。
レコメンデーションの実験や分析に使えるかもしれません。
プロフィール:
108万人分のスクリーンネームや自己紹介文
フォローイング:
103万人分のフォローイング先ID一覧です。
展開すると300万ノード 2.8億エッジになります。(※被フォローエッジを含みません)
以下のURLからダウンロードできます
今回はMongoDBをストレージにしました。ダンプの利用にはMongoDBのインストールが必要となります。
https://github.com/penguinco/yats-socialgraph-dump
使い方:
$ git clone git://github.com/penguinco/yats-socialgraph-dump.git $ cd yats-socialgraph-dump/ $ less README.md $ bundle # scripts/tutorial.rbを使うために必要なgemが入ります。
データの準備ができるとこんな感じで使えます。
pp profiles.find_one("screen_name" => 'fuba')
fuba_internal_id = profiles.find_one("screen_name" => "fuba")["internal_id"] fuba_following = friends.find_one("internal_id" => fuba_internal_id) shokai_internal_id = profiles.find_one("screen_name" => "shokai")["internal_id"] #is shokai followed by fuba? pp fuba_following["ids"].include?(shokai_internal_id)
=> true
#output id csv friends.find("internal_id" => fuba_internal_id).each do |me| puts me["ids"].map{|id| id.to_s}.join(",")[0,100] end
=> 164743710,51774619,18574112,6064612,175079593,99697384,101801049,123140561,15210265,180215207,156135
#output screen_name csv friends.find("internal_id" => fuba_internal_id).each do |me| result = [] me["ids"].each do |id| prof = profiles.find_one("internal_id" => id) if prof != nil result << prof["screen_name"] else result << id.to_s end end puts result.join(",")[0,100] end
=>164743710,51774619,umaiboo,6064612,kanda_daisuke,bolze_doujin,KEUMAYA,Joey__Jones,0mg,ma2omat2,amasa
便利〜
レコメンデーションの実験とか、プロフィールから分類器とか
Pagerank求めるとかできるのかもしれないですね。
何か面白いものができたら教えてください!
TODO
- リプライの頻度情報を追加する
- 定期的に更新される