ahokaiという、俺の発言を収集・再構築して喋るtwitter botに

  • ruby twitter gem0.6あたりから認証方法が変わったので、現最新版(0.6.6)に対応
  • タイムラインに含まれる名詞の出現回数をチェックしてその単語から文章を作る
  • post前に発言を検閲し、NGワードが含まれていたら発言を再度作り直す
という機能追加を行った。
あとは、replyとNGユーザ機能を気の向いた時に付ける予定。


ahokaiについては橋本商会 スーパーボット大戦およびymrl.net – 裏Twitterへ。
勝手にbot化しても許してくれそうな人の発言を収集し、賛同者?の方々と共にすこしずつbotが増やしています。ありがとうございます。


■既にahokaiを動かしていて、バージョンアップしたい場合
http://bitbucket.org/shokai/bot-ahokai/ からhg pullしてhg upするか、*.rbファイルを最新版のソースコードに置き換えてください。
DBやconfig.yaml等は書き換えなくても動作します。
ruby twitter gemはアップデートして最新のものを使わなければ動きません

sudo gem update twitter –remote

windowsの場合はsudoはいりません。


—–(ここから下の機能は、設定しなくても今まで通り動くので面倒ならやらなくて良い)—–


■ruby twitter gemの認証方法の変更への対応
コンストラクタに渡す引数が変わってた → twitter gemのHTTPAuth – 橋本詳解


■タイムラインに含まれる名詞の出現回数をチェックしてその単語から文章を作る
Buzzwords.rbに実装した。
timelineをMeCabで名詞だけ抽出して、出現回数をチェックして適当に名詞を選びそこから左右にマルコフ連鎖を伸ばす。
以前実装したbuzztterのRSSから発言を作る機能を拡張したので一瞬で完成した。

config.yamlのbuzzratioという項目で頻度が設定できます。sample.config.yamlを参考にしてください。

# twitter user/pass to post
usernum : “3631571” # see your Feed of twitter
user : “username”
pass : “password”

## post with buzztter ratio
buzzratio : 0.3 # 30%

## search words for refav
#searchwords : [“ahokai”, “あほか”]

## block NG words
#blockngwords : “true”

## for debug
#nopost : “true”

0.0にすれば動作しなくなり、1.0にすると確実に空気を読みます。
なお、バズワードの取得元は自分のtimelineだけではなく、buzztterからもランダムに取得します。


■post前に発言を検閲し、NGワードが含まれていたら発言を再度作り直す
bot元にしたらbotが確実に犯罪予告しそうな人がいたので、安全な言葉を出すまで発言を再構築させて犯罪防止をする機能を追加。
ngwordsに正規表現を書いておく。

.*殺.*
.*死.*
.*糞.*
.*うんこ.*
.*爆破.*
.*爆発.*

安全な言葉を出すまで10回再提出させて、無理ならあきらめる仕様なのであまり多くすると何もしゃべれなくなる。

config.yamlで

## block NG words
#blockngwords : “true”


## block NG words
blockngwords : “true”

とコメントアウトを外せば検閲機能が有効になります。

検閲はpost3gram.rbの中で実装してます