「ボッコちゃん」を実装する (1)

 「ボッコちゃん」とは星新一ショートショートに出てくるロボットの名称で、作品のタイトルにもなっている。しかしロボットとは言っても反応は「簡単な受け答えができるだけ」である。

「きれいな服だね」
「きれいな服でしょ」
「何が好きなんだい」
「何が好きかしら」
「ジンフィーズ飲むかい」
「ジンフィーズ飲むわ」

 この反応が人工無脳そっくりなので、衝動的に作ってみようと考えてみた。

★ 実態

 実際にやってみた (似非ボッコちゃん: 今回実装を試みたプログラム)。

客の発話 似非ボッコちゃんの発話 ボッコちゃんの発話
名前は ボッコちゃん ボッコちゃん
としは まだ若いのよ まだ若いのよ
いくつなんだい まだ若いのよ まだ若いのよ
だからさ…… - まだ若いのよ
きれいな服だね きれいな服でしょ きれいな服でしょ
なにが好きなんだい なにが好きかしら なにが好きかしら
ジンフィーズ飲むかい ジンフィーズ飲むわ ジンフィーズ飲むわ

★ ボッコちゃんの動作

 基本的には以下の様な仕組みになっているようである。

この「簡単な受け答え」というのが非常に上手くできている。

  1. 5W1Hの質問に対しては、相手の台詞を繰り返しはぐらかす。
  2. Yes/Noの質問に対しては、全てYesで答える。
  3. 質問ではない台詞に対しては、ただ繰り返す。

たとえば、こんな感じだ。

  1. 「お客のなかで、だれが好きだい」→「だれが好きかしら」
  2. 「ジンフィーズ飲むかい」→「ジンフィーズ飲むわ」
  3. 「もう来られないんだ」→「もう来られないの」
我田引水:ボッコちゃん 星新一 - livedoor Blog(ブログ)

なお、答えられない場合は「マスター (開発者) に知らせる」と言う機能がある。

以上の情報を元にボッコちゃんの実装を試みた。環境は Ruby形態素解析には Mecab*1 を利用した。また、品詞の活用が必要となる際には茶筅*2の cforms.cha を利用した (続く)。