インサイドゅぃぼっと



技術的説明

とあるWWWチャットの管理人さんが、WebCHAT7.1にイチローくんを組み込もうとしたんだけどうまくいかない...と相談されまして、とりあえず、イチローくんを組み込んであげようとしたのがはじまりです。
もともと、イチローくんは、1:1での会話専用に作成されています。おまけに、一つのキーワードに一つの回答しか記憶できないために単調さがどうしても生じます。その辺りを改良しようとしたら、結局自分でつくることになってしまいました。 まず、一つのキーワードに複数の応答を可能としました。
ゅぃの学習辞書は、各行が”キーワード:#それに対する回答”という形になっています。 そこで、まず、相手の発言にキーワードが含まれているかを検索します。 キーワードが含まれていたら、その回答を実際の応答候補としてリストに記憶します。辞書ファイル全体を検索して、応答候補のリストができあがった場合、そのリストから無作為に一つの回答を選んで応答します。
そのため、たとえば辞書が
A:#Aなんですねぇ。
B:#Bってことね。
C:#う〜〜ん。
A:#Aなのかぁ。
A:#Bではないの?。
となっていた場合、発言内容”Aは、Bではないんだ”に対する応答候補は
1.Aなんですねぇ。
2.Bってことね。
3.Aなのかぁ。
4.Bではないの?。
の4つから選択することになるわけです。....
無限に大きな辞書があらかじめ作成されているのが理想なんですけど、実際はそうはいきません。サーバーの処理能力、基本辞書作成の苦労等々..(いきなり1000語程度の辞書をあらかじめ作成するなんて、個人ではむずかしいでしょ?)
..ということは、いつでも、キーワード応答が可能ではない訳です。(そんなの当たり前!?...あはは。)イチローくんの場合、キーワードが見つからなければ、すぐに、教育モード(?)..つまり、なんて答えたらいいか教えて攻撃をしてきます。 この手法は学習機能としては有効なのですが、発言する度に聞かれては、参加者も飽きてしまいます。そこで、キーワードがなくてもある程度応答可能にする必要があるわけですが....。
一つ目の方法。(つっこみぼっと。)
ボットのサブルーチンbot2は、1/10の確率でキーワード検索を行わないで、ぼけファイルから適当な応答を選び、相手の発言内容に続ける形で返します。
例えば、発言内容”Aは、Bではないんだ”に対して、
”Aは、Bではないんだ...っていわれてもぉ〜〜”
のように単に”...っていわれてもぉ〜〜”を付加するだけなんですけど...これが、案外絶妙なタイミングで返答されると、面白いものです。

二つ目の方法。(勝手にぼっと。)
つっこみぼっとの応答確率を上げると...それはそれで、つまらなくなります。 そのため、9/10の確率で学習辞書からの検索を行わせざるをえないのですが..。 ゆいぼっとの場合、キーワード検索を行って応答が見つからなかった時、常に学習要求させる代わりに、一定の確率でまったく無関係な発言を別ファイル(ago.dat)からランダムに選んで応答させています。 実際のago.datには600種の応答パターンが入れてありますけど..この辺がゅぃが賢いといわれる所以かな〜とか思います。(単にキーワードが見つからなかった場合のしのぎにすぎないんですけどね) イチロー君は、(効率よく機能しているかどうかは別として...)、一応、対話型学習という形になっています。学習形式とては、純粋に対話型、あるいは、自動的に(勝手に?)行われるのが理想でしょうけど..そこまでうまいスクリプトが書けません..わたしは..。..で、結局、いくつかの人工無脳がそうであるように、”[キーワード]には[適当な応答]と答えよ”みたいな構文で、覚えさせることにしました。より人間的に学習させるためには、AにはBと答えよ式な構文がいいんですけど、実用性からは、”キーワード===応答例”のような単にイコールで結んだ無機的な構文の方がよいかもしれません。(鏡の国のゅぃはイコール方式です。) まだ、書いてません。概略だけ...
perlでいわゆる部分一致検索($chat=/.*$key.*/;)を行う場合、キーワードに正規表現が含まれていたりするとエラーを起こすことがあります。そして、S-JIS漢字コードの2バイト目は、正規表現となるようなメタキャラクタがいっぱいです。そこで、そういう問題がおこらないように、公開版ではindex検索を併用しました。こちらは、正規表現が無視されますので、エラーがでません。なので、いわゆるワイルドカード(.*)が使えません。より賢い教育を行うためには、.*が使える方がいいんですけどね..。(鏡の国のゅぃは漢字コードをEUCにして...使えるようにしてます....。EUCへの変換方法を知りたい方はこちらをどうぞ..)



編集後記

人工無脳(人工無能?...どちらかに統一してほしい。能と脳。検索するとき不便..。あ。人工無で検索すればよいのかぁ...)の賢さは、いまのところ辞書の賢さにつきるといって問題ないでしょう。(専門家なら、日本語の構文解析などなど..いくらでも追究できるのかもしれませんが...)
それはさておき、このページが、インサイド○かちゃんの真似をしてつくっていたのかどうかは、あなたの想像におまかせします。(苦笑)
(1997年4月16日記)

電子メールアドレス:yui@cup.com (Suzuki Yui)