ちょっと調べることがあったので、メモとして残しておきます。
日本語の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);
}
?>





