stMind

about Tech, Computer vision and Machine learning

Twitter Realtime HeatmapをMacで動かす

特定キーワードを含むツイートをヒートマップにしてリアルタイムにGoogle map上に
表示するアプリケーション。
ソースコードgithubに公開されていたので、macで動かしてみました!
以下、そのステップのメモです。

1. 必要なモジュールのインストール

MongoDBとRedis本体をbrewでインストールします。

$ brew install mongodb
$ brew install redis

アプリケーションで使われているpythonモジュールをpipでインストールします。

$ pip install pymongo
$ pip install redis
$ pip install tweepy
$ pip install Flask

Twitter Realtime Heatmapのソースコードgithubからクローンしておきます。

$ git clone https://github.com/comsysto/twitter-realtime-heatmap

2. MongoDBとRedis起動

$ sudo mkdir /var/db/mongodb
$ sudo touch /var/log/mongodb.log
$ sudo mongod --dbpath /var/db/mongodb --logpath /var/log/mongodb.log

こちらのページを参考にしました→Mac OS X で MongoDB を動かす - babie, you're my home

$ redis-server

3. tstream.pyでツイートを取得

クローンしたtwitter-realtime-heatmapにあるtstream.pyにconsumer_key等を記述します。

consumer_key = '自分のconsumer_key'
consumer_secret = '自分のconsumer_secret'

access_token_key = '自分のaccess_token_key'
access_token_secret = '自分のaccess_token_secret'

追記したらtstream.pyを起動してツイートを取得します。起動するとコンソールにだーっとツイートが
表示されるはず。

$ pyhon tstream.py

4. mongoシェルを使ってcapped collectionを有効に

tstream.pyを起動すると、tstreamというdbが出来ます。このdbでtweet_tailというcollection
が最初はCappedがfalseとなっているので、これをtrueにします。(ちょっと良くわかってないけど)

$ mongo
MongoDB shell version: 2.0.4
connecting to: test
> show dbs
local	(empty)
tstream	0.203125GB
> use tstream
switched to db tstream
> db.tweets_tail.isCapped()
false
> db.runCommand({"convertToCapped": "tweets_tail", size:10000000});
{ "ok" : 1 }
> db.tweets_tail.isCapped()
true

5. tweet_service.pyを起動してmapのURLにアクセス

あとは、tweet_service.pyを立ちあげて、http://localhost:5000/static/map.htmlにアクセスして
しばし待つと、じわじわとHeatmapが表示されていきます!!

$ python tweet_service.py
 * Running on http://0.0.0.0:5000/
 * Restarting with reloader

デフォルトは['bigdata', 'devops', 'hadoop', 'twitter']を含むツイートのHeatmapになってます。
イギリス周辺がじわーっと増えて行きました。


6. まとめ

リアルタイムに更新されるデータをヒートマップにして視覚化するというアイデアは、
シンプルで色々と応用できそうですよね。
ぼーっと眺めているだけでも、すごく楽しいです。一度、手元で試してみてはいかがでしょうか。