Twitterでつぶやきから特徴的な単語を調べる

$ ./twitter_user_timeline.rb kazuyo_k
@kohmi(24) RT(8) to(6) @kazuyo_k(5) YGL(5) メール(5) 大連(5) Twitter(4) is(4) 日本(4) 
時間(4) 自動(4) #Dalian09(3) @joshspear(3) @kawango(3) スタバ(3) ムギ(3) 投稿(3) 
設定(3) ID(2) TweetDeck(2) on(2) the(2) twtr2src(2) アクセス(2) アドレス(2) 
コーヒー(2) サイト(2) ナビ(2) ビデオブログ(2) ブログ(2) 中国(2) 会社(2) 月餅(2) 
毎日(2) 転送(2) 転送アドレス(2) 鴛鴦茶(2) !!(1) @Isoberry(1) @cotets(1) @davos(1) 
@kazu_skywalker(1) @rose_m(1) @taiyun77(1) @takapon_jp(1) @twtr2src(1) CGM(1) DVD(1) 
Global(1) HTML(1) Hi(1) Mio(1) and(1) for(1) http://bit.ly/3WW8ZY(1) it(1) kawango(1) 
moblog(1) moblog@cocolog-nifty.com(1) see(1) twitter(1) you(1) youtube(1) 
この転送アカウント(1) オカン(1) キーワード検索(1) ココログ(1) ダボス(1) 
ダーティーペア(1) ディナー(1) ニックネーム(1) ニューソフト(1) ビエラ(1) ビデオ(1) 
マウス(1) モブログ(1) ラテ(1) ログ(1) 予約(1) 京劇(1) 今日(1) 元気(1) 再放送(1) 
午後(1) 城みたいな会社(1) 寿司(1) 当時(1) 承認(1) 有名(1) 本人(1) 機内食(1) 無事(1) 
片付け(1) 片付けるの(1) 男性も参加可能(1) 紅茶(1) 紅茶とコーヒー(1) 緑茶(1) 興味(1) 
転送アカウント(1) 送信先(1) 連動(1) 長年(1) 関西(1) 面倒(1) 

単語抽出にはreudyで使われているtango-mgm.rbを転用。

require 'rubygems'
require 'twitter_oauth'
require 'tango-mgm.rb'

def counter(word)
  word.each do |w|
    if @word_count.key?(w)
      @word_count[w] += 1
    else
      @word_count[w] = 1
    end
  end
end

def sortByValueDesc
  @word_count = @word_count.to_a.sort{|a,b|
    (b[1] <=> a[1]) * 2 + (a[0] <=> b[0])
  }
end

@word_count = {}

$KCODE='U'
screen_name = ARGV[0]

@client = TwitterOAuth::Client.new
statuses = @client.user_timeline( \
  {:screen_name => screen_name, :count => 200 })

wordextractor = WordExtractor.new
statuses.each do |status|
#  print "#{status['created_at']} #{status['id']} ", "\n"
  word = wordextractor.processLine(status['text'])
  counter(word)
end

sortByValueDesc

@word_count.each do |w,count|
  print "#{w}(#{count}) "
end
print"\n"