「ボッコちゃん」を実装する (1)
「ボッコちゃん」とは星新一のショートショートに出てくるロボットの名称で、作品のタイトルにもなっている。しかしロボットとは言っても反応は「簡単な受け答えができるだけ」である。
「きれいな服だね」 「きれいな服でしょ」 「何が好きなんだい」 「何が好きかしら」 「ジンフィーズ飲むかい」 「ジンフィーズ飲むわ」
この反応が人工無脳そっくりなので、衝動的に作ってみようと考えてみた。
★ 実態
実際にやってみた (似非ボッコちゃん: 今回実装を試みたプログラム)。
客の発話 | 似非ボッコちゃんの発話 | ボッコちゃんの発話 |
---|---|---|
名前は | ボッコちゃん | ボッコちゃん |
としは | まだ若いのよ | まだ若いのよ |
いくつなんだい | まだ若いのよ | まだ若いのよ |
だからさ…… | - | まだ若いのよ |
きれいな服だね | きれいな服でしょ | きれいな服でしょ |
なにが好きなんだい | なにが好きかしら | なにが好きかしら |
ジンフィーズ飲むかい | ジンフィーズ飲むわ | ジンフィーズ飲むわ |
★ ボッコちゃんの動作
基本的には以下の様な仕組みになっているようである。
この「簡単な受け答え」というのが非常に上手くできている。
- 5W1Hの質問に対しては、相手の台詞を繰り返しはぐらかす。
- Yes/Noの質問に対しては、全てYesで答える。
- 質問ではない台詞に対しては、ただ繰り返す。
たとえば、こんな感じだ。
我田引水:ボッコちゃん 星新一 - livedoor Blog(ブログ)
- 「お客のなかで、だれが好きだい」→「だれが好きかしら」
- 「ジンフィーズ飲むかい」→「ジンフィーズ飲むわ」
- 「もう来られないんだ」→「もう来られないの」
なお、答えられない場合は「マスター (開発者) に知らせる」と言う機能がある。
以上の情報を元にボッコちゃんの実装を試みた。環境は Ruby、形態素解析には Mecab*1 を利用した。また、品詞の活用が必要となる際には茶筅*2の cforms.cha を利用した (続く)。