Twitter Streaming API、Node.js、MySQLでツイートの言語を調べてみたら、インドネシアすごかった
Twitter Streaming API からのツイートをMySQLに保存
SQLを勉強中なんだけど、なにか意味のあるデータを持っていないと、いろいろな問い合わせを勉強していてもおもしろくない。というわけで、Twitter Streaming APIから流れてくるツイートをMySQLに突っ込むプログラムをNode.jsを書いてみた。
ただ、肝心のツイート内容やユーザー名、ツイートの日付などなどを突っ込もうと思うと、テキストのエスケープや日付の形式の変換が結構めんどう。そこで、とりあえずユーザーid、言語、フォロー数、フォロワー数だけ記録。
Twitter Streaming API からツイートを取得
ただ標準出力に結果を流し続けるだけだったら、以下のようなプログラムになる。
Node.jsでMySQL
node-mysqlを使うと、以下のようにしてMySQLと接続できる。 使うデータベースは、あらかじめ作成して権限を設定しておく。
全体のソースコード
上2つを単純に組み合わせたシンプルなプログラムなので、とくに説明するところもなし。
実験結果
2014/2/4 火曜日の、17:00あたりから17:20くらいまで動かして、約5万ツイート取得。いろいろ分析するには、すごく偏ったデータ。ツイートの言語を調べるなら、時差の影響を考えても最低24時間は動かすべき。
しかしあんまりたくさんデータがあっても、複雑な問い合わせができなくなるので、今回はこれくらいで。
総数を数える
SQL
select count(*) from twitter_public;
結果
+----------+
| count(*) |
+----------+
| 49361 |
+----------+
言語別に総数を数える
SQL
select lang, count(*) sum from twitter_public
group by lang order by sum desc;
結果
+------+-------+
| lang | sum |
+------+-------+
| ja | 14694 |
| en | 13088 |
| id | 5204 |
| es | 2959 |
| ar | 2858 |
| tr | 1677 |
| und | 1423 |
| ru | 1207 |
| ko | 1114 |
| pt | 999 |
| fr | 723 |
| tl | 652 |
| th | 557 |
| it | 334 |
| nl | 325 |
| de | 276 |
| vi | 177 |
| pl | 141 |
| et | 133 |
| sl | 129 |
| ht | 92 |
| sv | 89 |
| sk | 74 |
| lv | 72 |
| bg | 58 |
| zh | 46 |
| el | 40 |
| da | 37 |
| fa | 36 |
| fi | 32 |
| no | 31 |
| hu | 31 |
| he | 26 |
| uk | 25 |
| hi | 22 |
| lt | 18 |
| ur | 11 |
| is | 11 |
| bn | 5 |
| ta | 4 |
| ne | 3 |
| my | 1 |
| am | 1 |
| si | 1 |
| hy | 1 |
+------+-------+
日本語(ja)ツイートが英語(en)より多くなってる。データをとった17時付近だと、ニューヨークあたりは午前3時、だからかな? 中国語(zh)は、金盾で少ないんだろう。
インドネシア????
(id)はインドネシア語、らしい
ネイティブスピーカーの数が多い言語の一覧 - Wikipedia
インドネシア語は、上を見ると37位なんだけどな……でも話し言葉と書き言葉でごにょごにょ……。とか思っていたら
なぜ君は、Facebookユーザー数世界トップの「インドネシア」を目指さないのか? ー VANGUARD定例イベント 3月30日開催【増田(@maskin)真樹】 : TechWave
そういえばこんな記事もあった
「投資有望国」首位はインドネシア、中国は4位転落 JBIC調査 - SankeiBiz(サンケイビズ)
人口世界第四位のインドネシア、今日まで場所もうろ覚えでごめんなさい。