ちょっと調べることがあったので、メモとして残しておきます。

日本語のtweetの抽出方法はいろいろあるとおもうんだけど、
今回はフォロワー取得APIでユーザの最新のステータスが取れることから、
特定の有名人のフォロワーのtweetを集めて平均値を出してみようかと。

たぶん統計学的にどのくらいのtweetの平均値をとれば統計として信用できる値とかってあるはずよね。。
習ったような習わなかったような気がするけど、とりあえず適当な数とってみました。

ターゲットとした有名人は勝間さん。
勝間さんのフォロワーをAPIで取得して平均値をだしました。

ちょっと古いAPIの仕様見てたらpage=1とかでページ数指定するって書いてたんだけど、公式のドキュメント見たらcursorになってた。
無駄にハマった。

初期値はcursor=-1を設定して、レスポンスにnext_cursorが返ってくるので次のページを見るときはその値を設定する。
(要するにcursor=1,2,3とかじゃないみたい。)

下に書いてある簡単なバッチ作ってみたところ、
対象Tweet6587tweet
トータル文字数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);
}
?>