Sunday, May 14, 2006

Programming::ArtificialIncompetence - 人工無能がうまくいきそうな気がする理由

人工知能に興味を持ったのは、NaGISAさんのARISAに触れたからなのです。ARISAをベースに改造を重ね、MINAを作り、Ruby版であるKASUMIを作り、現在研究している内容の原点のようなものである神久夜を作りました。

人工無能はルールベース、つまり辞書を手書きで作成して、対応できる入力文の数を増やしていくわけですが、最初の内は、この方法で普通に会話ができるプログラムが出来上がるんじゃないか、と思ってしまうのです。というか思いました。出来上がるんじゃないか、と思ってしまう理由。それは、

「小規模な辞書で、小数の文を入力した結果、それなりにうまく反応してくれるから」

です。10万文ほどの発言を入力したときに、一体どれほど許容できる反応を示してくれるのだろうか。1000行ほどの辞書を作ったとしても、おそらく1%も良い反応率が得られないでしょう(いや、1%くらいは得られるかも知れませんが)。

うまくいかない理由というのは、文型パターンと返答を対応づけているだけ、いわば単なるパターンマッチングであり、我々の頭の中で行われている言語処理とやっていることが違いすぎるからだと思います。日本語の場合、句や節の順番を適当に入れ替えても意味が通じることが間々あります。"大丈夫でしょ?入れ替えても、こんな感じで。"などのように。パターンと返答を対応づけて、多くの文に対しても返答できるようなプログラムが仕上がった気になるのですが、実は全然対応し切れていないのです。語の順番を入れ替えるだけでなく、表記揺れという問題もあります。"ありがとう"も"有り難う"も"アリガトウ"も"ありがとー"も意味は同じで、語の印象や発言に込められた気持ちなどが異なるだけです。計算機からすれば、これらの"ありがとう"という文字列は全て全くの別物であり、関連性はおろか類似性さえわかりません。類似性などは、シソーラスなんかでなんとかなるのですが。シソーラスを使ったとしても、言葉は変化し続けるものですから、なんとかなる、といいつつ対処しきれるものでもないかもしれません。

人工無能を作ってうまく会話できたとしても、人工無能が置かれているコミュニティや対話相手のトピックが非常に狭い範囲のものであるからであり、どんなに頑張っても人工無能である限り、多くの対話者を満足させてくれることはないように思います。

しかし、うまくいっているようにみえるならみえるで、対話者や作成者に満足感を与えますから、娯楽目的としてはなんら問題ないでしょうけどね。

No comments: