PythonでTwitter用bot開発

最近第二次ブームまっただ中のついったーですが、私もはまってしまいました。いろいろな人をフォローして、フォローされています。
にょえ on Twitter
ついったーって楽しいですね。




ついったーを使っていく中で、人間ではなくプログラムが投稿しているという事が分かりました。高田純次botとかネタ系のbotもいますが、酢鶏という賢い人工無能を搭載したbotが居ることを知りました。なかなか気の利いたコメントを返してきます。一度お試しあれ。




そこで、私も4月から勉強しているPythonを作って、botを作ってみようと思ったのです。タイミング良く人工無能の教科書を教えていただきました。それがこちら。

恋するプログラム―Rubyでつくる人工無脳

恋するプログラム―Rubyでつくる人工無脳

教科書はこれです。人工無能のバイブルですね。ただし、絶版です。なお、サンプルコードがRubyで書かれていています。かなりショック。せっかく勉強したPythonじゃないじゃないのさ。また心機一転、Rubyかよって頭をよぎったのですが、アルゴリズムだけを頂いて、Pythonで出来るところまでコードを書いてみることにしました。

その中でも興味を引いたのが、マルコフ連鎖です。
文章を形態素解析によって品詞ごとに分割し半角スペースで区切る(わかち書きと言う)。そして、品詞と品詞のつながりをパターンとして学習すると言ったものです。言葉で書くとわかりにくいのですが、実に自然な考え方です。

例えば、次の2文を例に挙げましょう。

  • 私は今夜ポークソテーを食べました。
  • 昨日は夏日だったのでアイスを買いました。

これを形態素解析すると、

単語 読み 品詞
わたし 名詞
助詞
今夜 こんや 名詞
ポーク ぽーく 名詞
ソテー そてー 名詞
助詞
食べ たべ 動詞
まし まし 助動詞
助動詞
特殊

となります。


「私」に続く言葉は、「は」ですね。では、「は」に続く言葉は、「今夜」と「夏日」ですね。「私はを」とは続きませんね。つまり、ある品詞に続く言葉を組み合わせることで、文章として構成しようという考え方です。上の2文をマルコフ連鎖させると。


私 は 夏日 だった の で アイス を 食べ ました。
となります。なかなか正しい文章になりましたね。ちょっとおかしいですね。まぁ、こんな感じでたくさんの文章を学習させることで、元となった文章表現に近い文章を勝手に生成することができます。


ながながと説明をしてしましたが、何が言いたいかと言いますとロボ東宮を作りました。これは、群馬県民なら誰でも知っているという有名なブログ「群馬ではたらく社長のブログ(笑)」を書かれているtomiyaさんのご厚意により実現しました。
tomiyaさんのブログ記事を約30ページ少々と、Twitterの会話を学習させてみました。@付でメッセージを送ると(返事すると)、自動的にロボ東宮が返事をします。ぜひ、@付でロボ東宮を遊んでやってくださいね。時々、ハッとするような返信をします。


ロボ東宮