かにさん(twitter bot)

fukayatsu Advent Calendar 2013 - 9日目

sferik/twitterのバージョンが5に上がったので、その検証を兼ねてtwitter botを作った。

仕組み的にはしゅうまい君と同じで、学習した単語からマルコフ連鎖で文章を生成している。

学習はhome timelineとほっこりで検索した結果が元になっているので、
全体的にtweetがほっこりしている

tweetがfavられることによって単語の重み付けを変化させる機能もつけたが、
いかんせんまだデータが足りない

Twitter::Streaming::Client

twitter gemはver 5から、Streaming APIを単体で使えるようになった (Experimental)。今回はこんな感じで使っている

client = Twitter::Streaming::Client.new do |config|
  config.consumer_key        = "YOUR_CONSUMER_KEY"
  config.consumer_secret     = "YOUR_CONSUMER_SECRET"
  config.access_token        = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_SECRET"
end

client.user do |object|
  case object
  when Twitter::Tweet
    # tweetを学習する
  when Twitter::Streaming::Event
    event = object
    if event.name == :favorite
      # 単語の重みづけを変更する
    elsif event.name == :follow
      # フォローバックする
    end
  end
end

サーバ

最初はherokuに上げようかと思ったけど、単語リストが結構レコード数増えそうなので、 http://rackhub.net/ を使っている。

多分無料でSSHが使えるレンタルサーバもたくさんあるだろうけど、rackhubは作ったり壊したりが楽でよい。