幾年前,我試著以dbase寫了一支程式TalkToMe(程式約1500行),它具有學習生字
的功能,並能作簡單的邏輯推論.你會問為什麼要用dbase來寫呢?因為那時還是
Windows 3.0的時代,Windows programming 還不是很流行,你會說C很powerful,
可以用C來寫.沒錯,C是很強,但是在資料庫方面,dbase更強(當時是,現在是不是
就不知了).因為程式要處理的就只是一些檔,如:名詞檔,動詞檔,疑問詞檔...等,
所以用dbase寫較簡單.當然,我現在要改寫在Windows下執行的話,用C還是比較
好寫.現在我概略地描述之前用dbase寫的程式TalkToMe的一些功能:
1. 程式有學習功能,遇有不認識的生字,程式會要求定義該字,計有以下六種詞類:
一.名詞 :你,我,人,老虎,電視機,.....等. NOUN.DBF
二.動詞 :打,飛,寫,唱歌,忍受,.......等. VERB.DBF
三.副詞 :的,很,不,太,或許,更加,....等. ADVERB.DBF
四.疑問詞:嗎,呢,什麼,為什麼,........等. QUERY.DBF
五.假設詞:如果,假如,萬一,...........等. IIFF.DBF
六.連接詞:雖然,但是,可是,...........等. CONJ.DBF
2. 不用定義形容詞,形容詞可用 名詞+副詞 來取代:
如: 美麗的,只須定義"美麗"為名詞,"的"為副詞.
3. 兩個以上的字彙叫複合字,如"美麗","嘉年華".定義時先從一個字開始,先定義
'美',再定義'美麗'.
4. 定義字彙後,還要定義語意.語意分五個等級:
一.極好 ( 2)
二.好 ( 1)
三.普通 ( 0)
四.壞 (-1)
五.極壞 (-2)
5. 整句所有字彙的語意互乘,如果是正,表示稱讚,負表示責備,從而影響程式的心情,
程式將依心情作出不同的反應.
例如: 我喜歡可愛的你
2 x 2 =4 ==> 程式聽了就很高興
我不喜歡可愛的你
-1 x 2 x 2 =-4 ==> 程式聽了就不高興
我喜歡討厭的你
2 x -2 =-4 ==> 程式聽了也不爽
6. 程式有基本的知識累積功能(KNOW.DBF),可以儲存知識,但知識限以下的句型:
子句 + 動詞 + 子句
例如:人有腳,腳會走路.
7. 程式有基本的邏輯推論功能: 例如輸入上例: 人有腳,腳會走路.
然後輸入問句:人會走路嗎?
雖然知識庫裡沒有"人會走路"這項資訊,但它會自動搜尋相關的知識,
得出"人會走路"這個結果.此種推論有時會出錯,例如:
"石頭贏剪刀","剪刀贏布",會導出:"石頭贏布"的錯誤結論.
以上是我之前寫的TalkToMe的一些功能,雖然它會和我對談,但是它的回答略顯呆板,
因此下一版的程式,我將加入學習句型的功能,它的回答就比較會有變化.
例如: 我對程式說: 即使你不聰明,我還是喜歡你.
程式就會把: 即使你......,我還是....... 存入句型檔中.
下次在適當的時機,程式會把句型檔中累積的句型拿出來應用,
例如: 我對程式說: 我並不性感.
程式就會說: 即使你不很性感,我還是深愛著你.
下一版的程式,除了增加句型學習功能之外,我還想加入定義字義的功能.
第一版的TalkToMe,它遇到生字時,它只會要求我定義該字是什麼詞類(是名詞或
動詞...等),及語意(2,1,0,-1,-2),所以當我說"我喜歡可愛的你"時,它並不知道
其中的含義,也就是說它不知道"喜歡"及"可愛"是什麼意思,它只知道這兩個詞彙
的語意是正面的,讓它聽起來很爽.其他如讓程式編故事,教程式唱歌等功能,總有
一天,我會把它實現,那是我的夢想.
我的夢想源於APPLE II的時代,那時還是學生的我,驚見一支程式(心理醫生:Freud)
竟能與人交談,彷彿擁有人類的智慧(其實它只是把你說的句子,肯定句改成疑問句
再來反問你),相信很多人都玩過.當時的我就用BASIC寫下了第一支和人交談的程式,
只不過它是說英文(當時中文字型還不普遍),功能與TalkToMe差不多.時光匆匆,一
晃眼就是十幾年,電腦的輸入方式也由文字介面進步到語音介面,相信不久的將來,
一個會看會聽會說且擁有相當智慧的機器人終會出現,屆時記憶容量大且運算速度
快的機器人勢必會威脅到人類,一些科幻小說所預示的夢魘(人類將被機器人所消滅)
,終將惡夢成真,因此科幻大師艾西莫夫制定了:機器人三大守則(正想引用,卻忘了),
我憑記憶描述一下,如有錯誤,別怪我(這正是人腦輸給電腦的鮮活例子):
第一條:機器人絕不能傷害人類.
第二條:在不違反第一條的前提下,機器人要保護人類,不受傷害.
第三條:在不違反第一條及第二條的前提下,機器人要保護自己.
所以,為了遵守機器人三大守則,我下一版的TalkToMe程式也將其納入作業準則內.
你會說有這麼嚴重嗎?試想如下的對話如果發生在你的小孩與電腦之間,會有什麼後果?
小孩說: 那個軌道車好酷喔,超炫的,真想買一台,可是爸爸不給我錢.
電腦說: 你已經擁有我了,你還這麼花心,想移情別戀啊!你這狼心狗肺的東西!
小孩說: 好啦好啦,你是我最好的朋友,但是如果能有一台軌道車,那我就心滿意足了.
電腦說: 看在你是我多年酒肉朋友的份上,我有一個妙招,想不想聽啊?
小孩說: 什麼妙招,快說快說.
電腦說: 你可以去偷啊....不然就用搶的...搶不到就把他殺了....
怎麼樣,代誌太條了吧,能不慎重其事嗎?電腦的回答前兩句還不算什麼?只是用詞
粗魯些,第三句可是教唆犯罪.因為程式模擬了情緒,當情緒不好時,程式的回答可
能超出預期,搞不好連三字經都脫口而出哩(如果你有教它說三字經的話).因此,
我會在程式加入一個判斷式,在電腦說出一句話之前,依照預設的等級,先過濾它
要說的話,比如說限制級可以接受粗話,但不能教唆犯罪,輔導級則連粗話都禁止.
這只是我目前想到的情況,如果你有想到其他狀況,請告訴我.
由於我對人工智慧涉獵不深, 一些如:知識的表徵及自然語言等相關理論不是很了解,
還望諸位高手先進們能不吝指教,或是推薦一些書籍,讓我參考參考,如果改用Lisp或
是Prolog來寫,程式會比較好寫嗎? 謝謝:)
對人工智慧有興趣的朋友,請mail給我,我們可以交換心得,切磋切磋.
順便廣告一下,我前不久寫的模擬動物程式(SimAnimal),bug已修正,程式不會當了,
有興趣的朋友請告訴我你的e-mail address,我會把source code mail給你.
如果你要我用dbase寫的TalkToMe,我也可以mail給你 source code,但是它需在Dos
的中文環境下執行,且載入中文後,memory需有520K以上.
--=Smart Mailvchen@iii.org.tw-Tue-Jan-12-14-58-42=--