古い記事
ランダムジャンプ
新しい記事
全ツイート履歴が取得できるようになったので、取ってきて軽く分析(というほどでもないが)してみた。

Twitter 2007.3.24 yto
(↑一番最初の発言は2007年3月24日)

「全ツイート履歴」の詳細は下記の記事を参照されたし:
- 日本の皆さんにも「全ツイート履歴」が使えるようになりました (Twitterブログ)
http://blog.jp.twitter.com/2013/03/blog-post_22.html

ダウンロードした中に含まれているファイル「tweets.csv」に全ツイートが入っている。
文字コードはUTF-8。
フォーマットはCSV:
- 必ずダブルクォートで閉じられている律儀なCVS。
- ダブルクォート内に改行コードが入ってる。

■各カラム:
0tweet_id
1in_reply_to_status_id
2in_reply_to_user_id
3retweeted_status_id
4retweeted_status_user_id
5timestamp
6source
7text
8-expanded_urls

データ例


例1:リプライ。
(0) 196963653910675456
(1) 196962499604643840
(2) 54396210
(3) -
(4) -
(5) 2012-04-30 14:06:09 +0000
(6) <a href="http://stone.com/Twittelator" rel="nofollow">Twittelator</a>
(7) @TanakaApple ついでに「すぐに家に帰ってしまう区」も考えてください

例2:公式RT。
(0) 196078945374965760
(1) -
(2) -
(3) 196076541166354432
(4) 5329012
(5) 2012-04-28 03:30:38 +0000
(6) <a href="http://stone.com/Twittelator" rel="nofollow">Twittelator</a>
(7) RT @pinkmac: 【速報】夫のこども手当使い込み疑惑が浮上

例3:URL複数付き
(0) 80072148634447873
(1) -
(2) -
(3) -
(4) -
(5) 2011-06-13 00:41:02 +0000
(6) <a href="http://twitter.com/tweetbutton" rel="nofollow">Tweet Button</a>
(7) 愛知学院大学歯学部付属病院小児科にあるそう http://t.co/Hlfukd6 >
 歯医者に置いてあるドラえもんが怖すぎる件... http://t.co/wGeRw9v
(8) http://chalow.net/2007-06-25-3.html
(9) http://twitpic.com/5aehqd

ざっくり処理するための Perl 雛形


コード (tweetscsv.pl):
#!/usr/bin/perl
use strict;
use warnings;

my $all = join("", <>);
$all =~ s/([^"])\n/$1 /g;

foreach (split(/\n/, $all)) {
    my @c = split_csv($_);
    print join("\n", map {"($_) $c[$_]"} 
       grep {$c[$_] ne '"'}  0..$#c)."\n";
}

sub split_csv {
    my ($s) = @_;
    $s =~ s/""/\x07\x08/g;
    my @rv = ("$s," =~ /("[^"]+"|[^,]+|),/g);
    return map {s/^"(.*)"$/$1/g; s/\x07\x08/"/g; $_} @rv;
}

使い方:
% ./tweetscsv.pl tweets.csv

出力の一部:
(0) 37441352706826240
(5) 2011-02-15 09:21:28 +0000
(6) <a href="http://tou.ch/" rel="nofollow">ロケタッチ(loctouch)</a>
(7) おうちにむかう @ 東京メトロ日比谷線 恵比寿駅にタッチ! http://tou.ch/VOYsCz
(0) 37365786729254912
(5) 2011-02-15 04:21:12 +0000
(6) <a href="http://www.hatena.ne.jp/guide/twitter" rel="nofollow">Hatena</a>
(7) きのこる先生 / http://f.hatena.ne.... - 2008年の抱負 - yto - はてなハイク http://htn.to/PkN5LY
(0) 37365231462264832
(3) 36344413101760512
(4) 207566268
(5) 2011-02-15 04:19:00 +0000
(6) web
(7) RT @aknmssm: なんでも文末に「大手メディアはなぜ報じないのだろう?」とつけるといきなり社会派なツイートになる運動を実施しています。この運動をなぜ大手メディアは報じないのか。

下記記事のコードを参考にした:
- [を] PerlによるCSVの読み込みとCSVをTSVに変換するワンライナー[2012-03-09-1]

集計例


前述のプログラムを用いてざっくり集計。

例1:よく使う source ランキング。
順位回数source
15119web
23828twitterfeed
33582Twittelator
42446Flickr
52066Hatena
6970movatwitter
7965Twittelator
8763Twitter
9754Buffer
10724NatsuLiphone
% ./tweetscsv.pl tweets.csv | grep '^(6)'| cut -c5- | sort | uniq -c | sort -nr | head -20

例2:リプライと公式RTの割合。
全ツイート数105959
リプライ率0.016 (1.6%) = 1712/105959
公式RT率0.013 (1.3%) = 1378/105959
% ./tweetscsv.pl tweets.csv | wc -l
105959
% ./tweetscsv.pl tweets.csv | grep '^(3) [1-9]'| wc -l
1712
% ./tweetscsv.pl tweets.csv | grep '^(1) [1-9]'| wc -l
1378

例3:よくリプライするユーザランキング。
順位回数User IDScreenName
16810228272@YouTube
26715315186@riskyspeeder
3512067431@yto
44814512408@yozora2
54516323986@mirai2008
6342067291@kogure
7307178212@wada_akiko
8245550762@yomoyomo
92214484428@makipapa
102169835788@erumoamere
% ./tweetscsv.pl tweets.csv  | grep '^(2) [0-9]'| cut -c5- | sort | uniq -c | sort -nr | head

おまけ:形態素解析して名詞だけカウントしたのち意味のありそうなのだけ取り出したランキング。
順位頻度単語(名詞)
181038とら
25827恵比寿
26769iPhone
28688ブログ
42372発言小町
43371
45364
48345
49342東京
※ちなみに1位は「http」。他の20位以内の語は「4」などの数字一文字や「co」などのURLの一部。ゴミ抜き処理してないので。