Twitterの #自分の人生に影響を与えたゲーム3本 を集計してみた

昨日の夕方ぐらいから #自分の人生に影響を与えたゲーム3本 ってタグが流れてて、面白そうだったのでクロールして集計してみました。手持ちのレコードは2567件。

集計した、とは言っても、表記揺れが激しいので完全にカウントできたわけじゃないですが、
2500件あればある程度省かれることを考慮してもそこそこ妥当なデータだと思うので、もういいや(考えることをやめた)。

10票以上のもの

タイトル 票数
ポケモン 134
クロノトリガー 38
ゼルダの伝説 38
FF6 33
ぷよぷよ 33
FF7 31
FF9 31
MOTHER2 30
MOTHER 29
FF5 28
大神 27
ゼノギアス 25
ドラクエ 25
Fate 24
スマブラ 24
東方 24
ポップン 24
サクラ大戦 24
FF4 23
PSO 23
逆転裁判 22
テイルズオブファンタジア 22
RO 22
幻想水滸伝 21
ハイドライド 21
FF11 21
モンスターハンター 20
FF 20
モンハン 20
月姫 20
女神転生 20
タクティクスオウガ 19
テイルズ 18
戦国BASARA 18
テイルズオブシンフォニア 18
DQ3 18
ドラクエ3 18
サモンナイト 17
ウィザードリィ 17
スーパーマリオブラザーズ 16
FF3 15
イース 15
ToHeart 15
キングダムハーツ 15
バイオハザード 15
メタルギアソリッド 14
MOTHER3 14
Kanon 14
FFT 14
ポップンミュージック 14
DQ5 14
スパロボ 13
ドラゴンクエスト 13
ソーサリアン 13
ラグナロクオンライン 13
マリオ 13
女神異聞録ペルソナ 13
.hack 13
牧場物語 13
ドラクエ5 13
スペースハリアー 12
ドルアーガの塔 12
テトリス 12
ときめきメモリアル 12
アイドルマスター 12
Wizardry 12
ポケットモンスター 12
ポケモン 11
アイマス 11
グラディウス 11
ファンタシースターオンライン 11
マザー2 11
MGS 11
ICO 11
ロックマン 11
beatmania 11
クロノクロス 11
風来のシレン 11
FF10 11
マリオブラザーズ 11


やっぱ90年代の後期のJRPG強いですね


以下、今回使用したスクリプト

集計 Python

#!/usr/bin/env python
# encoding:utf8
import pymongo
import re
db = pymongo.Connection()['twitter']['most_shocked_games']
print "count ",db.count()

res = {}
def push(item):
    if item in res : 
        res[item] += 1
    else :
        res[item] = 1

for i in db.find():
    text =  i["text"].replace(u"#自分の人生に影響を与えたゲーム3本","")
    text = re.sub( u'(\(|().*?(\)|)) ',u'',text )
    d = re.findall(u"(「|『).*?(」|』)",text)
    if len(d) >= 2:
        for t in d: 
            push( t ) 
    else:
        for t in re.split( u'・| |,|、| |/|/',text):
            push( t ) 


res = sorted(res.items(), key = lambda x:x[1] )
for k,v in res[::-1]:
    if v > 10:
        print k,v

クローラ nodejs

var TwitterNode = require('twitter-node').TwitterNode
,  sys = require('sys');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/twitter');
//コレクションのスキーマ
user_scheme = {
  name : String,
  text : String 
};
User = mongoose.model('most_shocked_games', new mongoose.Schema(user_scheme) );


var twit = new TwitterNode({
user: '"<username>',
password: '<password>',
track: ['#自分の人生に影響を与えたゲーム3本']
});

twit.addListener('error',  function(error) {
    console.log(error.message);
});

twit
.addListener('tweet',  function(tweet) {
    sys.puts("@" + tweet.user.screen_name + ": " + tweet.text);
    item = new User();
    item.name = tweet.user.screen_name;
    item.text = tweet.text;
    item.save(function(e){
        console.log('add new item:'+JSON.stringify(item));
});

})
.stream();
//要素の追加

それぞれのコード、書くのに15分もかかってないし、この記事書くのにそれと同じぐらいの時間使ってるので、コーディング速度上がってきた気がする。