ちょっと調べることがあったので、メモとして残しておきます。
日本語のtweetの抽出方法はいろいろあるとおもうんだけど、
今回はフォロワー取得APIでユーザの最新のステータスが取れることから、
特定の有名人のフォロワーのtweetを集めて平均値を出してみようかと。
たぶん統計学的にどのくらいのtweetの平均値をとれば統計として信用できる値とかってあるはずよね。。
習ったような習わなかったような気がするけど、とりあえず適当な数とってみました。
ターゲットとした有名人は勝間さん。
勝間さんのフォロワーをAPIで取得して平均値をだしました。
ちょっと古いAPIの仕様見てたらpage=1とかでページ数指定するって書いてたんだけど、公式のドキュメント見たらcursorになってた。
無駄にハマった。
初期値はcursor=-1を設定して、レスポンスにnext_cursorが返ってくるので次のページを見るときはその値を設定する。
(要するにcursor=1,2,3とかじゃないみたい。)
下に書いてある簡単なバッチ作ってみたところ、
以上のような結果に。
*)RTで始まってるtweetは除きました。
何度かやってみてもだいたい30文字台だったので、
日本人は30〜40文字でつぶやいているんでしょう、たぶん。
日本語のtweetの抽出方法はいろいろあるとおもうんだけど、
今回はフォロワー取得APIでユーザの最新のステータスが取れることから、
特定の有名人のフォロワーのtweetを集めて平均値を出してみようかと。
たぶん統計学的にどのくらいのtweetの平均値をとれば統計として信用できる値とかってあるはずよね。。
習ったような習わなかったような気がするけど、とりあえず適当な数とってみました。
ターゲットとした有名人は勝間さん。
勝間さんのフォロワーをAPIで取得して平均値をだしました。
ちょっと古いAPIの仕様見てたらpage=1とかでページ数指定するって書いてたんだけど、公式のドキュメント見たらcursorになってた。
無駄にハマった。
初期値はcursor=-1を設定して、レスポンスにnext_cursorが返ってくるので次のページを見るときはその値を設定する。
(要するにcursor=1,2,3とかじゃないみたい。)
下に書いてある簡単なバッチ作ってみたところ、
対象Tweet | 6587tweet |
トータル文字数 | 234153文字 |
平均Tweet文字数 | 35.5文字 |
*)RTで始まってるtweetは除きました。
何度かやってみてもだいたい30文字台だったので、
日本人は30〜40文字でつぶやいているんでしょう、たぶん。
tweetLength.php
<?php $username = "USERNAME"; $password = "PASSWORD"; $target = 'kazuyo_k'; $tweet=0; $length=0; $cursor = -1; for ($i=0;$i<150;$i++) { if ($cursor == 0) break 1; $url = sprintf("http://twitter.com/statuses/followers.json?cursor=%d&screen_name=%s",$cursor,$target); $json = request($url,$username,$password); if (!is_array($json->users)) continue 1; foreach ($json->users as $key => $val) { if(isset($val->status)) { //RTで始まるtweetは飛ばす if(preg_match("/^RT(.+)/",$val->status->text)) continue 1; if (mb_detect_encoding($val->status->text) != 'UTF-8') continue 1; $tweet++; $length+=mb_strlen($val->status->text, 'utf-8'); } } $cursor = $json->next_cursor; } echo "tweet : " . $tweet . "\n"; echo "length : " . $length . "\n"; echo "avg : " . $length / $tweet . "\n"; function request($host='',$username='',$password=''){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $host); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); $result = curl_exec($ch); curl_close($ch); return json_decode($result); } ?>