○File No.9

ELIZAの語るもの



1 J. Weizenbaum, "ELIZA--A Computer Program For the Study of Natural Language Communication Between Man and Machine", Commun. ACM 9[1] 36-45(1966)
 アメリカでの人工知能を語る上で外せない存在であるイライザ(Eliza)は1966年にMITのJ. Weizenbaum氏によって開発された1.このプログラムはセラピストとしてユーザと対談することで知られており,彼らの好きなチューリングテストにかけられてかなりの好成績を残したエポックメイキングなプログラムのひとつである.そして現在ではそのソースはさまざまなプラットホーム用に移植されており,Perl5 用のモジュールChatbot::Elizaとしても意外と簡単に手に入る.そこで今回はElizaのソースを見ながら多くの人を錯覚させた機構の正体を眺めてみる.


 Elizaの会話機能の中核部分は分解decomp再構成reasmbである.以下にスクリプトから取り出してきたごく一部を載せる.勘の良い人であれば,この部分を見ただけでもおおむね想像がつくだろう.
key: remember 5
  decomp: * i remember *
    reasmb: Do you often think of (2) ?
    reasmb: Does thinking of (2) bring anything else to mind ?
    reasmb: What else do you recollect ?
    reasmb: Why do you remember (2) just now ?
    reasmb: What in the present situation reminds you of (2) ?
    reasmb: What is the connection between me and (2) ?
    reasmb: What else does (2) remind you of ?
 elizaは人間の入力からrememberという単語を発見した場合,decompの * i remember * というルールが適用できるかどうかマッチングを行ない,*は順番にその後の(1)や(2)に展開される.正規表現の( )に相当すると思えばよい.次にreasmbに並んだ候補を前から順に選択してユーザに返している.重要なポイントは積極的にユーザの発言をとり入れて返事に組み込んでいる点で,それによってユーザはelizaがちゃんとこちらの言うことを聞いているような錯覚を覚える.rememberの最後の5という数字は優先度である.そして
key: name 15
  decomp: *
    reasmb: I am not interested in names.
    reasmb: I've told you before, I don't 
            care about names -- please continue.
 自分があまり望まない方向に進みそうな単語を見つけると,やんわりと方向をねじまげようとする.またやたらと疑問文を返す傾向が見られる,すなわちユーザに考えさせようとする点が特徴的である
key: i 0
  decomp: * i @desire *
    reasmb: What would it mean to you if you got (3) ?
    reasmb: Why do you want (3) ?
    reasmb: Suppose you got (3) soon.
    reasmb: What if you never got (3) ?
    reasmb: What would getting (3) mean to you ?
    reasmb: What does wanting (3) have to do with
          this discussion ?
  decomp: * i am* @sad *
    reasmb: I am sorry to hear that you are (3).
    reasmb: Do you think coming here will
            help you not to be (3) ?
    reasmb: I'm sure it's not pleasant to be (3).
    reasmb: Can you explain what made you (3) ?
  decomp: * i am* @happy *
    reasmb: How have I helped you to be (3) ?
    reasmb: Has your treatment made you (3) ?
    reasmb: What makes you (3) just now ?
    reasmb: Can you explain why you are suddenly (3) ?
 これらのかたよったキャラクタは,サイコセラピストというelizaの職業的役割から導かれている.
Elizaがかなりの質問好きなのは上の例を見ればわかるが,ユーザがそれに答えた場合はどうするのか?
key: because 0
  decomp: *
    reasmb: Is that the real reason ?
    reasmb: Don't any other reasons come to mind ?
    reasmb: Does that reason seem to explain anything else ?
    reasmb: What other reasons might there be ?
 結局答えた内容の評価はせず,さらに質問で返している.このひたすら聞いて,絶対に答えの評価をしないという挙動は心理カウンセラーの基本的なルールである.
 Elizaはreasm_for_memoryというキーワードを使ってユーザの返事の一部を記憶する.発言がdecompを満たしたとき,Elizaはreasmした結果をメモリに格納する.そして通常の返事ができなくなった場合に,このようにして蓄えた返事を持ち出してきて話題の転換を図ろうとする.
これはなかなか巧妙な仕掛けで,前の会話の内容をきちんと押さえているゼスチャーが可能になる.
key: my 2
  decomp: * my *
    reasm_for_memory: Let's discuss further why your (2).
    reasm_for_memory: Earlier you said your (2).
    reasm_for_memory: But your (2).
    reasm_for_memory: Does that have anything to do
                      with the fact that your (2) ?
 elizaのスクリプトは合計で約460行ほどである.


いただけるもの,いただけないもの

 Elizaの特徴を整理してみよう.
  • システムの特徴
    • ユーザの発言から辞書を成長させる機構がない
    • 文脈を複数行にわたって追跡しない
    • 過去のユーザの発言を一部だけ憶えている
    • ユーザの直前の発言を大雑把に切りとって流用する
  • スクリプトの特徴
    • ユーザの発言に対する質問がメイン
    • 自分のことに注意を向けさせないように仕向ける
    • 質問に対するユーザの返答を評価しない

 素朴に感じる違和感として,チャットでは* i am* @happy *だとか* i remember *というような会話が,テーマ的にあまりない.またrememberにしてもIにしても意味が同じになる言い回しはいくらでもあって,elizaの仕掛けを単純に日本語に訳しただけでは英語版ほどの会話は望めなさそうである.しかも多くのユーザは人工無脳に相談に乗ってくれるカウンセラーを期待しているわけではなく,むしろ友達やフェローアニマル的な役割を演じさせたいと思っている.このあたり,日本と欧米のメンタリティーの違いが如実に現れているとも考えられて興味深い.

 ELIZAのばあい,会話システムとしてはシステム3に対してスクリプト7くらいの寄与をしているようである.すなわち良い人工無脳を作るためにはスクリプト製作について考察を進めなければならないようである.
[PREV] 会話のアルゴリズムII 辞書の構築[NEXT]