|
|
これは古典的な人工知能プログラムの「ELIZA」をWINDOWS95に移植したものである。V−BASIC4.0で作られているので実行にはDLLが必要。ソースもつけておいたので細かな処理については各人の解析にゆだねる。このプログラムを実行したことで発生した損害について、著者は一切の責任を負わない。ファイル構成
ELIZA2.vbp(ソース) ELIZA2.Frm(ソース) ELIZA2.frx(ソース) ELIZA2.exe(実行用) Setup.dat(初期設定用) Conjugate.dat(僕←→君変換用) Knowledge.dat(キーワードと返答) Proper.dat(大文字←→小文字変換の際の固有名詞) Readme.txt(解説文書) |
処理の上での工夫は、1)「患者」の一つの答えを処理するたびにプログラムを終了させるようにしたために、前回の 「患者」の解答を保管しておくための「men.Text」という名前の記憶用テキストボックス を作ったこと。このテキストボックスは「INPUT」と書かれた釦の後ろに隠した。
2)プログラムの答えは小文字で、「患者」の答えは大文字で表示するようにした。これは文字列 を全て小文字にする関数を用いて変換後、「僕←→君変換」と同様の手順で「Proper.da t(大文字←→小文字変換の際の固有名詞)」を辞書にして適宜大文字に直すようにした。この処 理は「患者」と「医者」の差異を際立たせるのに効果的ではないかと思ったので行った。
3)最大の工夫は「僕←→君変換」の辞書、キーワード(鍵)と「医者」の返事の辞書、「医者」 の発話や、空白が入力されたときや同じ言葉が繰り返されたときの反応、キーワードが発見できな かったときの返事の辞書を全て別のファイルから読み込むようにしたことである。このようにして おけばプログラム本体を変えることなく辞書ファイルを変えるだけで、さまざまな「人格」をプロ グラムに持たせる事ができる。辞書の書式は以下のようなものである。
Setup.dat(初期設定用)
"Please state your problem.","!"(←最初の「!」までがプログラムの発話) "Do you have a problem?","!"(←次の「!」までが空白入力時の返事) "Please don't repeat yourself!","!"(←次の「!」までが同語反復時の返事) "Please go on.","What does that suggest to you?","!"(←次の「!」までが鍵なしのときの返事) |
Conjugate.dat(僕←→君変換用)
" I "," YOU@ " " US "," YOU@ " " WE "," YOU@ " (←左の言葉が右の言葉に変換される) " YOU "," ME@ " " ME "," YOU " |
Knowledge.dat(キーワードと返答)
"キーワード","!"(←"!"を読み込むまで次々にキーワードを読み取る) "Do you often think about*?","."(←読み取ったキーワードに対応する返答。) "DO ME@ REMEMBER","!" (↓ *はキーワード以降の「患者」の答えを変換したものを挿入) "Did you really think I would forget*?","." "YOU@ DREAMED","!" "Really,*?","." "DREAM ","!" "How does that dream make you feel?","." " IF ","!" "Do you think that its likely that if *?","." "EVERYBODY","EVERYONE","NOBODY","NO ONE","!" "Really,#?","."(←#はキーワードを小文字に変換したものを挿入) |
Proper.dat(大文字←→小文字変換の際の固有名詞)
" i "," I " "i'm","I'm" (←左の言葉が右の言葉に変換される) "japanese","Japanese" "chinese","Chinese" |
Please state your problem. :I WANT YOU TO HELP ME. What would it mean to you if you got me to help you? :I AM AFRAID TO TELL YOU. How long have you been afraid to tell me. :SO LONG. Please go on. :WHY I'M SO AFRAID TO TELL YOU? It's because you are so afraid to tell methat you came to me? :YES. You seem quite sure! :NO,I AM NOT SURE. Did you think they might not be not sure? :WHO ARE THEY? I am not sure I understand you fully. :ME TOO. What does that suggest to you? :ARE YOU SURE? Why are you interested in whether I am sure or not? :BECAUSE YOUR ANSWER WAS A BIT CRAZY. Is that the real reason? :WELL,PERHAPS ME.. You don't seem quite certain. :BUT,IT NOT ALWAYS. Can you think of a specific example? :I HAVE REMEMBERED WHEN I WAS IN CHINA. Were you really? :YES. You seem quite sure! :NOT SO. Please go on. :I CANNOT GO ON. How do you know you can't go on? :I DON'T KNOW. Don't you really know? :NO. Aren't we just a bit negative today? :I THINK SO. But are you sure so. |