- 簽證留學(xué) |
- 筆譯 |
- 口譯
- 求職 |
- 日/韓語(yǔ) |
- 德語(yǔ)
很多自然語(yǔ)言處理應(yīng)用程序都是用編程語(yǔ)言PROLOG實(shí)現(xiàn)的,或者用建立在PROLOG上的某種擴(kuò)充來(lái)實(shí)現(xiàn)。PROLOG被證明是一種有用的工具,它建立在合一和搜索的概念基礎(chǔ)上。這樣,它提供了很多人工智能應(yīng)用所必需的基本構(gòu)造單元。
PROLOG建立在霍恩子句(Horn clause)的概念基礎(chǔ)上,霍恩子句可以定義為一個(gè)邏輯蘊(yùn)涵式,蘊(yùn)涵式的左側(cè)是單一的簡(jiǎn)單命題。這樣,PROLOG中的表達(dá)式:
friendly(fido1) :- dog(fido1) well-fed(fido1)
對(duì)應(yīng)于斷言:Fido是友好的,如果它是一條狗而且它吃飽了。這在一階謂詞演算中表達(dá)如下:
(Dog (Fido1 ) & Well-Fed(Fido1))? Friendly( Fido1)
當(dāng)然,更有用的規(guī)則會(huì)使用變量,以便應(yīng)用于一系列的實(shí)體。一個(gè)關(guān)于“吃飽了的狗是友好的”一般性語(yǔ)句表達(dá)如下,其中,變量用一個(gè)大寫(xiě)字母開(kāi)頭的符號(hào)表示:
1. friendly(X) :- dog(X) well-fed(X)
這等價(jià)于一階謂詞演算中的斷言Vx(DOG(x)&WELL-FED(x))?FRIENDLY(x)。在PROLOG中,它的解釋是過(guò)程性的:對(duì)任何實(shí)體x,要證明x是友好的,可以證明x是一條狗,而且x吃飽了。
沒(méi)有右側(cè)的霍恩子句稱為事實(shí)。要聲明Fifi是一條狗而且它吃飽了,可以加入以下事實(shí):
2. dog(fifi) :-
3. well-fed(fifi) :-
使用子句1,子句2和子句3,PROLOG現(xiàn)在可以如下證明Fif是友好的:
Goal: Friendly(fifi)
使用合一算法,子句1被具體化以便用于這個(gè)目標(biāo)(也就是說(shuō),變量X被綁定到ffi)
4. friendly(fifi) :- dog(fifi) well-fed(fifi)
為了根據(jù)這條規(guī)則給出目標(biāo)的證明,需要證明以下子目標(biāo):
5. Goal: dog(fifi)
6. Goal: well-fed(fifi)
由于這些子目標(biāo)就是子句2和子句3的斷言,其證明是不言而喻的,所以初始的目標(biāo)得到證明。
一般地,很多不同的規(guī)則可以應(yīng)用于一個(gè)目標(biāo)??梢灾饌€(gè)嘗試它們,直到有一個(gè)成功。作為另外一個(gè)例子,考慮以下公理:
所有的魚(yú)都生活在海里。
7. live-in-sea(X) :- fish(X)
所有的鱈都是魚(yú)。
8. fish(X):-cod(X)
所有的鯖都是魚(yú)。
9. fish(X) :- mackerel(X)
鯨生活在海里。
10. live-in-sea(X) :- whale(X)
Homer是一條鱈。
11. mackerel(homer):-
Willie是一頭鯨。
12. whale(willie) :-
給定這些公理,系統(tǒng)可以證明Willie生活在海里,證明中使用的方法稱為回溯搜索。它使用深度優(yōu)先搜索策略來(lái)系統(tǒng)地搜索每一種可能的子句應(yīng)用序列,用以檢查目標(biāo)是否確立。
圖1顯示了一個(gè)典型的PROLOG搜索,根據(jù)前面給定的子句,目標(biāo)是:
live-in-sea(willie)
感覺(jué)PROLOG最好的辦法就是運(yùn)行系統(tǒng),并使用跟蹤工具來(lái)精確地觀察它是如何工作的。
PROLOG系統(tǒng)在大多數(shù)類型的工作站和個(gè)人計(jì)算機(jī)上都可以得到。
圖1 live-in-sea(willie)的證明
責(zé)任編輯:admin