第二講知識表示框架劇本對象表示法講解材料_第1頁
第二講知識表示框架劇本對象表示法講解材料_第2頁
第二講知識表示框架劇本對象表示法講解材料_第3頁
第二講知識表示框架劇本對象表示法講解材料_第4頁
第二講知識表示框架劇本對象表示法講解材料_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2024/9/271人工智能原理第二講知識表示之框架/劇本表示主講:王祖喜zuxiw@163.com華中科技大學(xué)圖像所2024/9/272知識的表示方法謂詞邏輯法狀態(tài)空間法問題歸約法語義網(wǎng)絡(luò)法框架表示法面向?qū)ο蟊硎緞”?script)表示過程(procedure)表示小結(jié)2024/9/273知識的框架表示2024/9/2741.概念知識的框架表示法1975年由M.Minsky提出,最早用作視覺感知、自然語言對話等問題的知識表示;目前已作為一種通用數(shù)據(jù)結(jié)構(gòu)來表示知識對象(實體)??蚣芾碚撜J(rèn)為,人們對現(xiàn)實世界中各種事物的認(rèn)識都是以一種類似于框架的結(jié)構(gòu)存儲在記憶中的,當(dāng)面臨一種新事物時,就從記憶中找出一個合適的框架并根據(jù)實際情況對其細(xì)節(jié)加以修改、補充,從而形成對當(dāng)前事物的認(rèn)識。例如:當(dāng)一個人要走近一個教室時,他能根據(jù)以往的知識,想象到這個教室一定有四面墻,有門、窗、天花板和地板,有課桌、椅子、黑板等,盡管他對這個教室的細(xì)節(jié)還不清楚,但對教室的基本結(jié)構(gòu)是可以預(yù)見的。他之所以能做到這一點,是由于他通過以往的認(rèn)識活動已經(jīng)在記憶中建立了關(guān)于教室的框架,該框架不僅指出了相應(yīng)事物的名稱(教室),而且還指出了事物各有關(guān)方面的屬性(如有四面墻、有課桌、有黑板,……)。通過對該框架的查找,很容易得到教室的各有關(guān)特征。知識的框架表示2024/9/276<框架名>槽名1側(cè)面名1值1,值2,…值p1

側(cè)面名2值1,值2,…值p2

……

側(cè)面名m1

值1,值2,…值pm1槽名2側(cè)面名1值1,值2,…值q1

側(cè)面名2值1,值2,…值q2

……

側(cè)面名m2

值1,值2,…值qm2

……

……槽名n側(cè)面名1值1,值2,…值r1

側(cè)面名2值1,值2,…值r2

……

側(cè)面名mn值1,值2,…值rmn約束:約束條件1

……

約束條件n框架的一般結(jié)構(gòu):2024/9/277

例1:框架名:<假冒偽劣商品>

商品名稱:生產(chǎn)廠家:出售商店:

處罰:處理方式:處罰依據(jù):處罰時間:單位(年、月、日)經(jīng)辦部門:

在這個框架中,有4個槽,其中,“處罰”槽有4個側(cè)面,側(cè)面“處罰時間”用“單位”指出了一個填值時的標(biāo)準(zhǔn)限制。2024/9/278例2:框架名:<教師>

姓名:單位(姓、名)年齡:單位(歲)性別:范圍(男、女)缺?。校┞毞Q:范圍(教授、副教授、 講師、助教)缺?。ㄖv師)部門:單位(系、教研室)住址:<住址框架>

工資:<工資框架>

開始工作時間:單位(年、月)

截止時間:單位(年、月)缺省:現(xiàn)在

把某教師的一組信息填入教師框架的各個槽,就得到了相應(yīng)框架的一個事例框架:框架名:<教師-1>

姓名:夏冰年齡:36

性別:女職稱:副教授部門:計算機教研室住址:<adr1>

工資:<sal-1>

開始工作時間:1988.9

截止時間:1996.9

2024/9/279例1:碩士生的具體框架框架名:<碩士生>姓名:單位(姓,名)性別:范圍(男,女)默認(rèn):男年齡:單位(歲)條件:歲>16學(xué)習(xí)專業(yè):單位(專業(yè)名)研究方向:單位(方向名)導(dǎo)師姓名:單位(姓,名)參加課題:范圍(國家級,省部級,其它)默認(rèn):國家級學(xué)籍:<碩學(xué)籍>住址:單位(樓號,房間號)電話:單位((區(qū)號),話機號)入學(xué)時間:單位(年,月)學(xué)制:單位(年)默認(rèn):4年2024/9/2710碩士生的實例框架框架名:<碩士生-1>姓名:楊楊性別:女年齡:23學(xué)習(xí)專業(yè):計算機應(yīng)用技術(shù)研究方向:人工智能導(dǎo)師姓名:林海參加課題:學(xué)籍:<碩學(xué)籍-1>住址:16號樓316房間號電話:(010)66668888入學(xué)時間:2000年9月學(xué)制:2024/9/2711框架的BNF描述:<框架>::=<框架頭><槽部分>[<約束部分>]<框架頭>::=框架名<框架名的值><槽部分>::=<槽>,[<槽>]<約束部分>::=約束<約束條件>,[<約束條件>]<框架名的值>::=<符號名>|<符號名>(<參數(shù)>,[<參數(shù)>])<槽>::=<槽名><槽值>|<側(cè)面部分><槽名>::=<系統(tǒng)預(yù)定義槽名>|<用戶自定義槽名><槽值>::=<靜態(tài)描述>|<過程>|<謂詞>|<框架名的值>|<空><側(cè)面部分>::=<側(cè)面>,[<側(cè)面>]<側(cè)面>::=<側(cè)面名><側(cè)面值><側(cè)面名>::=<系統(tǒng)預(yù)定義側(cè)面名>|<用戶自定義側(cè)面名><側(cè)面值>::=<靜態(tài)描述>|<過程>|<謂詞>|<側(cè)面名的值>|<空><靜態(tài)描述>::=<數(shù)值>|<字符串>|<布爾值>|<其它值><過程>::=<動作>|<動作>,[<動作>]<參數(shù)>::=<符號名>2024/9/2712框架系統(tǒng)的基本結(jié)構(gòu)框架系統(tǒng)的基本結(jié)構(gòu)是通過諸框架之間的橫向或縱向聯(lián)系來實現(xiàn)的。(1)框架之間的橫向聯(lián)系一個框架的槽值或側(cè)面值可以是另外一個框架的名字。如,“碩士生”框架合“碩學(xué)籍”框架之間為橫向聯(lián)系。(2)框架之間的縱向聯(lián)系用框架表示具有演繹關(guān)系的知識結(jié)構(gòu)時,下層框架與上層框架之間具有一種繼承關(guān)系,這種具有繼承關(guān)系的框架之間的聯(lián)系稱為縱向關(guān)系。2024/9/2713學(xué)生框架為:框架名:<學(xué)生>姓名:單位(姓,名)性別:范圍(男,女)默認(rèn):男年齡:單位(歲)住址:單位(樓號,房間號)電話:單位((區(qū)號),話機號)入學(xué)時間:單位(年,月)學(xué)制:單位(年)2024/9/2714碩士生框架為:框架名:<碩士生>繼承:<學(xué)生>學(xué)籍:<碩學(xué)籍>研究方向:單位(方向名)導(dǎo)師姓名:單位(姓,名)參加課題:范圍(國家級,省部級,其它)默認(rèn):國家級學(xué)位論文:單位(論文題目)默認(rèn):題目未定2024/9/2715計算機系碩士生框架為:框架名:<計算機系碩士生>繼承:<碩士生>專業(yè):范圍(計算機應(yīng)用技術(shù),計算機軟件及理論)默認(rèn):計算機應(yīng)用技術(shù)使用計算機:單位(計算機的型號)2024/9/2716例:一個計算機系碩士生的實例框架框架名:<計算機系碩士生-1>繼承:<碩士生>姓名:柳青性別:女年齡:23研究方向:人工智能......2024/9/2717例1:一個教室A的框架上下層是part-of關(guān)系,黑板是教室A的一部分,但黑板的結(jié)構(gòu)、性能與教室是完全不同的。最上面是主框架,最上面記著框架名,其他部分是由槽和值組成。槽用中文寫出,值用小長方形表示。(1)某些值可以是另一個子框架。如左墻、右墻、前墻,而且子框架可以共享。(2)某些值可以空著,等適當(dāng)?shù)臅r候再去填寫。2024/9/2718例2:拱框架2024/9/2719例3:動物分類框架2024/9/27203.框架網(wǎng)絡(luò)框架間的橫向聯(lián)系:由于框架中的槽值或側(cè)面值都可以是另一個框架的名字,這就在框架之間建立起了聯(lián)系,通過一個框架可以找到另一個框架,這稱為橫向聯(lián)系;框架間的縱向聯(lián)系:舉例說明:在一個學(xué)校中,無論是教師,還是學(xué)生以及在學(xué)校工作的其他人員,如干部,實驗員,工人等,盡管他們所承擔(dān)的任務(wù)不同,但由于他們都處于學(xué)校這個環(huán)境中,必然會有一些共同的屬性,因此,在對他們進(jìn)行描述時,可以將它們具有的共同屬性抽取出來,構(gòu)成一個上層框架,然后再對各類人員獨有的屬性分別構(gòu)成下層框架,為了指明框架間的這種上,下關(guān)系,可在下層框架中設(shè)立一個專用的槽,用以指出他的上層框架是哪一個。這樣就在框架間建立了縱向聯(lián)系;而且對于這種聯(lián)系,下層框架還可以繼承上層框架的屬性及值,避免了重復(fù)描述,節(jié)約了時間和空間的開銷??蚣荛g的繼承性:繼承性是框架表示法的一個重要特性,它不僅可以在兩個框架之間實現(xiàn)繼承關(guān)系,而且還可以通過兩兩的繼承關(guān)系,從最低層追搠到最高層,使高層的信息逐層向低層傳遞。2024/9/2721

像這樣具有橫向聯(lián)系及縱向聯(lián)系的一組框架稱為框架網(wǎng)絡(luò)。

下圖是一個關(guān)于師生員工的框架網(wǎng)絡(luò)。師生員工框架教職工框架學(xué)生框架教師框架工人框架

電子系學(xué)生框架機械系學(xué)生框架教師1

教師n

學(xué)生n

學(xué)生1………………?師生員工框架——用于描述師生員工的共同屬性,例如姓名,性別,年齡等;?教職工框架——用于描述教師,干部,工人的共同屬性,凡是在師生員工框架中已指出的屬性在這里可不再重復(fù)描述;(以此類推)?教師框架,工人框架——其中也只需描述只有他們自己具有的屬性。2024/9/2722

[注意]

1.如果一個在上層框架中描述的屬性在下層框架需作進(jìn)一步說明時,則需要在下層框架中再次給出描述。例如,設(shè)在師生員工框架中對年齡槽的描述是:年齡:單位(歲)由于學(xué)生一般都在七歲開始上學(xué),因此學(xué)生的年齡可由年齡=學(xué)齡+7

得到,所以在學(xué)生框架中仍可設(shè)置年齡槽,并在該槽的描述中給出計算年齡的過程。

2.如果在下層框架中對某些槽沒有作特別的聲明,那么它將自動繼承上層框架相應(yīng)槽的槽值。

下面具體給出上述幾個框架的描述:2024/9/2723師生員工框架為:框架名:<師生員工>

姓名:單位(姓,名)年齡:單位(歲)性別:范圍(男,女)缺?。耗薪】禒顩r:范圍 (健康,一般,差)缺省:一般住址:<住址框架>教職工框架為:

框架名:<教職工>

繼承:<師生員工>

工作類別:范圍 (教師,干部,工人)缺?。航處熼_始工作時間:單位(年,月)截止工作時間:單位(年,月)缺?。含F(xiàn)在離退休狀況:范圍(離休,退休)缺?。和诵?024/9/2724教師框架為:

框架名:<教師>

繼承<教職工>

部門:單位(系,教研室)語種:范圍(英語,法語,日語,德語,俄語)缺?。河⒄Z外語水平:范圍(優(yōu),良,中,差)缺?。毫悸毞Q:范圍(教授,副教授,講師,助教)缺省:講師研究方向:某個教師的事例框架為:框架名:<教師-1>

繼承:<教師>

姓名:孫林年齡:28

健康狀況:健康部門:計算機系軟件教研室語種:德語開始工作時間:1985.9……..2024/9/2725

由以上框架描述可以看出:

(1)在框架網(wǎng)絡(luò)中。既有用“繼承“槽指出的上、下層框架間的縱向聯(lián)系,也有以框架名作為槽值指出的框架間的橫向聯(lián)系,因此框架網(wǎng)絡(luò)之間是一個縱橫交錯的復(fù)雜的框架體系結(jié)構(gòu)。

(2)

原則上說,事例框架中的每一個槽都應(yīng)給出槽值,但對可以繼承上層框架槽值的槽,其槽值可不給出。例如在上面的教師-1的框架中,雖然沒有給出性別,職稱槽及其槽值,但由繼承性可知孫林的性別為“男“,職稱為講師。2024/9/27264.框架中槽的設(shè)置與組織框架是一種集事物各方面屬性的描述為一體,并反映相關(guān)事物間各種關(guān)系的數(shù)據(jù)結(jié)構(gòu)。在此結(jié)構(gòu)中,槽起至關(guān)重要的作用,因為不僅要用他描述事物各方面的屬性,而且還要用他指出相關(guān)事物間的復(fù)雜關(guān)系。因此要注意以下幾個方面的關(guān)系:

(1)充分表達(dá)事物各有關(guān)方面的屬性——合理地設(shè)置槽在以框架作為知識表示模式的系統(tǒng)中,知識是通過事物的屬性來表示的。為使系統(tǒng)具有豐富的知識,以滿足問題的求解的需要,就要求框架中有足夠的槽把事物各方面的屬性充分表達(dá)出來。這里說的“各有關(guān)方面的屬性”有兩方面的含義:

?要與系統(tǒng)的設(shè)計目標(biāo)相一致,凡是系統(tǒng)設(shè)計目標(biāo)所要求的屬性,或者問題求解中有可能要用到的屬性都應(yīng)該用相應(yīng)的槽把他們表示出來;

?僅僅需要對有關(guān)的屬性設(shè)立槽,不可面面俱到,以免浪費空間和降低系統(tǒng)的運行效率。2024/9/2727

(2)充分表達(dá)相關(guān)事物間的各種關(guān)系——由槽中的框架名建立聯(lián)系

現(xiàn)實世界中的事物一般不是孤立的,彼此之間存在千絲萬縷的聯(lián)系。為了將其中有關(guān)的聯(lián)系反映出來,以構(gòu)成完整的知識體系,需要設(shè)置相應(yīng)的槽來描述這些聯(lián)系。在框架系統(tǒng)中,事物間的聯(lián)系是通過在槽中填入相應(yīng)的框架名來實現(xiàn),至于它們之間究竟是一種什么樣的關(guān)系,則是由槽名來指明的。

在框架表示系統(tǒng)中通常定義一些標(biāo)準(zhǔn)槽名,應(yīng)用時不用說明就可直接使用稱這些槽名為系統(tǒng)預(yù)定義槽名?,F(xiàn)簡單介紹幾個:

Ⅰ.

ISA槽

ISA槽用于指出事物間抽象概念上的類屬關(guān)系。其直觀含義是“是一個”,“是一種”,“是一只”……。當(dāng)它用作某下層框架的槽時,表示該下層框架所描述的事物是其上層框架的一個特例,上層框架是比下層框架更一般或更抽象的概念。設(shè)有下面兩個框架:2024/9/2728框架名:<運動員>

姓名:單位(姓,名)年齡:單位(歲)性別:范圍(男,女)缺?。耗锌蚣苊?lt;棋手>ISA:<運動員>

腦力:特好在此例中,棋手框架中的ISA槽指出該框架所描述的事物是運動員框架所描述事物的屬性及值。Ⅱ.AKO槽

AKO槽用于具體的指出事物間的類屬關(guān)系。其直觀含義是“是一種”,當(dāng)它用作某下層框架的槽時,就明確的指出該下層框架所描述的事物是其上層框架所描述事物的一種,下層框架可以繼承其上層框架所描述的屬性及值。對上面的例子,可將棋手框架中的ISA改為AKO。2024/9/2729Ⅲ.Subclass槽

subclass槽用于指出子類與類(或子集與超集)之間的類屬關(guān)系。當(dāng)用它作為某下層框架的槽時,表示該下層框架是其上層框架的一個子類(或子集)。在上例中,由于“棋手”是“運動員的一個子類,故可將ISA該為Subclass。Ⅳ

.Instance槽

Instance槽用來建立AKO槽的逆關(guān)系。當(dāng)用它作為某上層框架的槽值時,可用來指出它的下層框架是哪些。

框架名:<運動員>Instance:<棋手>,<足球運動員>,<排球運動員>

姓名:單位(姓,名)年齡:單位(歲)性別:范圍(男,女)缺省:男2024/9/2730Ⅴ.

Part-of槽

Part-of槽用于指出部分與全體的關(guān)系。當(dāng)它用作某下層框架的槽時,它指出該下層框架所描述的事物只是其上層框架所描述的事物的一部分。例如,上層框架是對汽車的描述,下層框架是對輪胎的描述。顯然,輪胎是汽車的一部分。這里應(yīng)注意將Part-of槽與上面討論的那四種槽區(qū)分開來:前述4種槽是上、下層框架間的類屬關(guān)系,它們由共同的特性,可以繼承;Part-of槽只指出下層是上層的一個子結(jié)構(gòu),兩者一般不具有共同的特征,不能繼承。如:上層描述汽車,而下層描述輪胎,輪胎是汽車的一部分,但兩者的結(jié)構(gòu)、性能缺完全不同,這是可選用Part-of槽指出其上下層的關(guān)系——部分與全體。2024/9/2731Ⅵ.Infer槽

Infer槽用于指出兩個框架所描述的事物間的邏輯推理關(guān)系,用它可以表示相應(yīng)的產(chǎn)生式規(guī)則。

例如:設(shè)有下面知識:如果咳嗽,發(fā)燒且流涕,則八成是患了感冒,需服用感冒清,一日三次,每次2-3粒,多喝開水對該知識,可用如下兩個框架表示:

框架名:<診斷規(guī)則>

癥狀1:咳嗽癥狀2:發(fā)燒癥狀3:流涕

Infer:<結(jié)論>

可信度:0.8框架名:<結(jié)論>

病名:感冒治療方法:服用感冒清,一日三次,每次2-3粒

注意事項:多喝開水預(yù)后:良好Ⅶ.Possible-Reason槽。其作用與Infer槽作用相反,它用來把某個結(jié)論與可能的原因聯(lián)系起來。2024/9/2732(3)對槽及側(cè)面進(jìn)行合理的組織——利用其上下層間的繼承性基于框架上、下層的繼承性,盡量將不同框架中的相同屬性抽取出來,放入其上層框架,而在下層框架中只描述相應(yīng)事物獨有的屬性。

這樣可大大減少信息的重復(fù)性,其且有利于知識的一致性。例如:將鴿子、啄木鳥、布谷鳥、燕子等動物,用框架將其特征描述出來?上層:有羽毛、會飛、有兩只爪等共同特性;下層:各種鳥獨有的特征各建一個框架;聯(lián)系:用AKO或Instance將上下層聯(lián)系起來。(4)有利于進(jìn)行框架推理用框架表示知識的系統(tǒng)一般由兩大部分組成:

1.由框架及其相互關(guān)聯(lián)構(gòu)成的知識庫(提供求解問題所需要的知識);

2.由一組解釋程序構(gòu)成的框架推理機(針對用戶提出的問題,通過運用知識庫中的相關(guān)知識完成求解問題的任務(wù),給出問題的解)。

框架推理是一個反復(fù)進(jìn)行框架匹配的過程,為了使推理得以進(jìn)行,通常需要設(shè)置相應(yīng)的槽來配合。怎樣設(shè)置?與推理方法有關(guān)。2024/9/27335.框架系統(tǒng)中求解問題的基本過程

在用框架表示知識的系統(tǒng)中,問題的求解主要是通過匹配與填槽實現(xiàn)的。要求解某個問題時:(1)首先把這個問題用一個框架表示出來;

(2)然后通過與知識庫中已有的框架進(jìn)行匹配,找出一個或幾個可匹配的預(yù)選框架作為初步假設(shè),并在此初步假設(shè)的引導(dǎo)下收集進(jìn)一步的信息;

(框架的匹配是通過對相應(yīng)的槽的槽名及槽值逐個比較實現(xiàn)的。如果兩個框架的各對應(yīng)槽沒有矛盾,或者滿足預(yù)先規(guī)定的某些條件,就認(rèn)為這兩個框架可以匹配。)

(3)最后用某種評價方法對預(yù)選框架進(jìn)行評價,以便決定是否接受它。由于框架間存在繼承關(guān)系,兩個框架的比較往往牽涉到上層、上上層框架;而且框架間的匹配都有不確定性,所以匹配比較困難。在不同的系統(tǒng)中,可采用不同的解決方法,如設(shè)置“必要條件槽”、“充分條件槽”等。2024/9/2734框架的推理框架沒有固定的推理機理,框架是一種復(fù)雜結(jié)構(gòu)的語義網(wǎng)絡(luò)。因此語義網(wǎng)絡(luò)推理中的匹配和特性繼承在框架系統(tǒng)中也可以實行??蚣芟到y(tǒng)的推理和語義網(wǎng)絡(luò)一樣遵循匹配和繼承原則。2024/9/2735除此以外,由于框架用于描述具有固定格式的事物、動作和事件,因此可以在新的情況下,推論出未被觀察到的事實??蚣苡靡韵聨追N途徑來幫助實現(xiàn)這一點:(1)框架包含它所描述的情況或物體的多方面的信息。這些信息可以被引用,就像已經(jīng)直接觀察到這些信息一樣。例如,當(dāng)一個程序訪問一個ROOM框架時,不論是否有證據(jù)說明屋子里有門,都可以推論出,在屋子里至少有一個門。之所以能這樣做,是因為ROOM框架中包含對屋子的描述,其中包括在屋子里必須有門的事實。2024/9/2736(2)框架包含物體必須具有的屬性。在填充框架的各個槽時,要用到這些屬性。建立對某一情況的描述要求先建立對此情況的各個方面的描述。與描述這個情況的框架中的各個槽有關(guān)的信息可用來指導(dǎo)如何建立這些方面的描述。(3)框架描述它們所代表的概念的典型事例。如果某一情況在很多方面和一個框架相匹配,只有少部分相互之間存在不同之處。這些不同之處很可能對應(yīng)于當(dāng)前情況的重要方面,也許應(yīng)該對這些不同之處作出解答。因此,如果一個椅子被認(rèn)為應(yīng)有4條腿,而某一椅子只有3條腿,那么或許這把椅子需要修理。2024/9/2737在以某種方式應(yīng)用框架以前,首先要確認(rèn)這個框架是適用于當(dāng)前所研究的情況的。這時可以利用一定數(shù)量的部分證據(jù)來初步選擇候選框架。這些候選框架就被具體化,以建立一個描述當(dāng)前情況的實例。這樣的框架將包含若干個必須填入填充值的槽。2024/9/2738然后程序通過檢測當(dāng)前的情況,試圖找到合適的填充值。如果可以找到滿足要求的填充值,就把它們填入到這個具體框架的相應(yīng)槽中去。如果找不到合適的填充值,就必須選擇新的框架。從建立第一個具體的框架試驗失敗的原因中可為下一個應(yīng)該試驗什么框架提供有用的線索。在另一方面,如果找到了合適的值,框架就被認(rèn)為適合于描述當(dāng)前的情況。2024/9/2739當(dāng)然,當(dāng)前的情況可能改變。那么,關(guān)于產(chǎn)生什么變化的信息(例如,我們可以按順時針方向沿屋子走動)可用來幫助選擇描述這個新情況的框架。用一個框架來具體體現(xiàn)一個特定情況的過程,經(jīng)常不是很順利的。但當(dāng)這個過程碰到障礙時,經(jīng)常不必放棄原來的努力去從頭開始,而是有很多辦法可想的:2024/9/2740框架系統(tǒng)的問題求解辦法:(1)選擇和當(dāng)前情況相對應(yīng)的當(dāng)前的框架片斷,并把這個框架片斷和候補框架相匹配。選擇最佳匹配。如果當(dāng)前的框架,總的來說差不多是可以接受的,則許多已經(jīng)做的,有關(guān)建立子結(jié)構(gòu)以填入這個框架的工作將可保留。(2)盡管當(dāng)前的框架和要描述的情況之間有不相匹配的地方,但是仍然可以繼續(xù)應(yīng)用這個框架。例如,所研究的只有3條腿的椅子,可能是一個破椅子或是有另一個在椅子前面的物體擋住了一條腿??蚣艿哪骋徊糠职P(guān)于哪些特性是允許不相匹配的信息。同樣的,也有一般的啟發(fā)性原則,比如一個漏失某項期望特性的框架(可能由于被擋住視線造成的)比另一個多了某一項不應(yīng)有的特性的框架更適合當(dāng)前的情況。舉例來說,一個人只有一條腿比說一個人有3條腿或有尾巴更合乎情理些。2024/9/2741(3)查詢框架之間專門保存的鏈,以提出應(yīng)朝哪個方向進(jìn)行試探的建議。例如,如果和CHAIR框架匹配時,發(fā)現(xiàn)沒有靠背,并且太寬,這時就建議用BENCH(條凳)框架;如果太高,并且沒有靠背,就建議用STOOL(凳子)框架。圖相似網(wǎng)絡(luò)2024/9/2742(4)沿著框架系統(tǒng)排列的層次結(jié)構(gòu)向上移動(即從狗框架→哺乳動物框架→動物框架),直到找到一個足夠通用,并不與已有事實矛盾的框架。如果框架足夠具體,可以提供所要求的知識,那就采用這個框架?;蛘呓⒁粋€新的、正好在匹配的框架下一層的框架。2024/9/2743框架推理的例子例1:關(guān)于學(xué)生的框架系統(tǒng)已建立在知識庫中,要找出一個滿足如下條件的計算機系碩士生:女性,年齡25歲以下,專業(yè)為計算機應(yīng)用技術(shù),研究方向為人工智能。問題框架為:框架名:計算機系研究生-x----姓名:----年齡:<25----性別:女----專業(yè):計算機應(yīng)用技術(shù)----研究方向:人工智能“年齡”槽、“性別”槽、“研究方向”槽都可以與“計算機系研究生-1”框架相匹配。雖然這里沒有給出“專業(yè)”的槽值。由于繼承性可知它取默認(rèn)值“計算機應(yīng)用技術(shù)”,完全符合初始問題框架“計算機系研究生-x”的要求,所以要找的學(xué)生有可能是柳青。2024/9/2744例:假設(shè)前面提出的關(guān)于師生員工的框架網(wǎng)絡(luò)已建立在知識庫中,當(dāng)前要解決的問題是從知識庫中找出一個滿足以下條件的教師:男性,年齡在30歲以下,身體健康,職稱為講師把這些條件用框架表示出來,就可得到如下的初始問題框架:

框架名:教師-x

姓名:年齡:<30

性別:男健康狀況:健康職稱:講師用此框架與知識庫中的框架匹配:1.教師_1可與之匹配,(年齡、健康狀況與之相符);

2.職稱、性別可有其繼承性在上層、上上層得到;故:孫林可能是要找的教師(符合條件的可能不止孫林一個,此框只能作為預(yù)選框,還需進(jìn)一步收集更多的信息,以從中選出一個)。2024/9/27456.知識的框架表示法的特點

(1)框架能進(jìn)行結(jié)構(gòu)化深層知識表示:

?框架可為實體、屬性關(guān)系和默認(rèn)值等提供顯示表示;其中提供默認(rèn)值相當(dāng)于用人的經(jīng)驗預(yù)測。

?適合表示常識性知識;

?表示實體固有的因果模型,便于知識的解釋;

(2)容易附加過程信息框架主要描述靜態(tài)知識,它的if_needed,if_added,if_removed側(cè)面可進(jìn)行附加。

(3)框架之間的層次結(jié)構(gòu)提供了繼承特性一個框架的屬性及附加過程可從高層次的框架繼承下來。

(4)框架間的組織結(jié)構(gòu)化框架可組織成層狀;每個框架形成了一個獨立的知識單元;可利用系統(tǒng)擴展、模塊化。2024/9/2746框架表示法的優(yōu)點(1)結(jié)構(gòu)性

---框架表示法善于表示結(jié)構(gòu)型知識,把知識的內(nèi)部結(jié)構(gòu)關(guān)系以及知識間的特殊聯(lián)系表示出來。知識的基本單位是框架,而框架又由若干個槽組成,一個槽又由若干個側(cè)面組成,這樣就把知識的內(nèi)部結(jié)構(gòu)顯式地表示出來。(2)深層性

---框架表示法不僅可以從多個方面、多重屬性表示知識,可以以嵌套結(jié)構(gòu)分層地對知識進(jìn)行表示,或表示事物間的因果關(guān)系,因此能用來表示事物間的復(fù)雜的深層聯(lián)系。(3)繼承性

---在框架系統(tǒng)中,下層框架可以繼承上層框架的槽值,也可進(jìn)行補充,這不僅可以減少知識的冗余,而且較好地保證了知識的一致性。(4)自然性

---框架系統(tǒng)把某個實體或?qū)嶓w集的相關(guān)特性都集中在一起,從而高度模擬了人腦對實體的多方面、多層次的存儲結(jié)構(gòu),直觀自然,易于理解。2024/9/2747框架表示法的缺點(1)缺乏框架的形式理論---至今沒有建立框架的形式理論,其推理和一致性檢查機制并非基于良好定義的語義。(2)缺乏過程性知識表示---不便于表示過程性知識,推理過程中用到一些與領(lǐng)域無關(guān)的推理規(guī)則,在框架系統(tǒng)中又很難表達(dá)。(3)清晰性難以保證---各框架本身的數(shù)據(jù)結(jié)構(gòu)不一定相同,從而框架系統(tǒng)的清晰性很難保證。

2024/9/2748劇本(script)表示2024/9/2749劇本(script)表示劇本是框架的一種特殊形式,他用一組槽來描述某些時間的發(fā)生序列,就像劇本中的事件序列一樣。2024/9/2750劇本(script)表示

1劇本的構(gòu)成

一個劇本一般由以下各部分組成:

(1)開場條件:給出在劇本中描述的事件發(fā)生的前提條件。

(2)角色(支撐物):用來表示在劇本所描述的事件中可能出現(xiàn)的有關(guān)人物的一些槽。

(3)道具(線索):這是用來表示在劇本所描述的事件中可能出現(xiàn)的有關(guān)物體的一些槽。

(4)場景(場次):描述事件發(fā)生的真實順序,可以由多個場景組成,每個場景又可以是其它的劇本。

(5)結(jié)果(結(jié)局):給出在劇本所描述的事件發(fā)生以后通常所產(chǎn)生的結(jié)果。2024/9/2751例子:餐廳劇本(1)開場條件

(a)顧客餓了,需要進(jìn)餐廳(b)顧客有足夠的錢(2)角色

顧客、服務(wù)員、廚師、老板(3)道具

食品、桌子、菜單、錢(4)場景

場景1

進(jìn)入餐廳

(a)顧客走入餐廳(b)尋找桌子(c)在桌子旁坐下

場景2

點菜

(a)服務(wù)員給顧客菜單(b)顧客點菜(c)顧客把菜單還給服務(wù)員(d)顧客等待服務(wù)員送菜場景3

等待

(a)服務(wù)員把顧客所點的菜告訴廚師(b)廚師做菜

場景4

吃菜

(a)廚師把做好的菜給服務(wù)員(b)服務(wù)員給顧客送菜(c)顧客吃菜

場景5

離開

(a)服務(wù)員拿來賬單(b)顧客付錢給服務(wù)員(c)顧客離開餐廳(5)結(jié)果

(a)顧客吃了飯,不餓了(b)顧客花了錢(c)老板掙了錢(d)餐廳食品少了2024/9/2752例子:音樂會劇本(1)開場條件

A想聽音樂會

E主辦音樂會

A有錢(2)角色

A為聽眾、B為售票員、C為收票員、D為樂隊、E為主辦者(3)道具入場券、樂器、錢幣、聽眾席、售票處、演奏廳(4)場景場景1

購票

A注意到售票處

A朝售票處走去

A向B說:“我要入場券”。

A給B錢

B給A入場券場景2

入場

A給C入場券

A進(jìn)入演奏廳

A注意到聽眾席

A看往哪坐

A朝自己的聽眾席走去

A坐下場景3

聽演出樂隊演奏樂器

A聽音樂場景4

離開

A站起來

A離開座位

A離開音樂廳2024/9/27532劇本的推理劇本是有用的知識表達(dá)結(jié)構(gòu),因為在現(xiàn)實世界中事件發(fā)生的某種模式來自事件之間的因果關(guān)系。事件中的主人公完成一個動作后才能完成另一個動作。劇本中所描述的事件形成一個巨大的因果鏈,這個鏈的起點是一組開場條件,滿足這些開場條件,劇本中的事件才能產(chǎn)生。鏈的終點是一組結(jié)果,有了這組結(jié)果,以后的事件或事件序列(可能用其他的劇本來描述)才能發(fā)生。2024/9/2754在這個鏈內(nèi)一件事情和前后的事情都相互聯(lián)系。前面的事件,使當(dāng)前的事件有可能產(chǎn)生,而當(dāng)前事件又使后面的事件有可能產(chǎn)生。

如已知某一劇本適用于所給定的情形,劇本在預(yù)言一些沒有直接提到的事件方面特別有用。同時劇本對表示已經(jīng)提到的事件之間的關(guān)系也很有用。例如,要表示某人點了燉牛肉這道菜和此人吃牛肉之間是什么聯(lián)系,就可以利用劇本。但在應(yīng)用某一劇本以前,必須先準(zhǔn)備好劇本,也就是先要確定這個劇本適用于當(dāng)前的情形。根據(jù)劇本的重要性,可以有二種準(zhǔn)備劇本的方法:(激活劇本)2024/9/2755

(1)對于不屬于事件核心部分的劇本,只需設(shè)置指向該劇本的指針即可,以便當(dāng)它成為核心時啟用,如對于餐廳劇本,在下述事件中應(yīng)采用這種方法:

蘇珊在去博物館的路上經(jīng)過她喜歡的餐廳。她非常喜歡這次的畢加索作品展覽會。

(2)對于符合事件核心部分的劇本,則應(yīng)使用在當(dāng)前事件中涉及到的具體對象和人物去填寫劇本的槽。劇本的前提、道具、角色和事件等常能起到啟用劇本的指示器的作用。

一旦劇本被啟用(激活),則可以應(yīng)用它來進(jìn)行推理。其中最重要的是運用劇本可以預(yù)測沒有明顯提及的事件的發(fā)生。2024/9/2756---如對于以下情節(jié):---“昨晚,約翰到了餐廳,他訂了牛排,當(dāng)他要付款時發(fā)現(xiàn)錢已用光。因為開始下雨了,所以他趕緊回家了”。有人問:“昨晚,約翰吃飯了嗎?”。又如,“約翰走進(jìn)餐廳,他被帶到餐桌旁,訂了一大塊牛排之后,他坐在那兒等了許久。于是,他生氣地走了?!备鶕?jù)劇本,可以得出結(jié)論。2024/9/2757面向?qū)ο蟊硎?024/9/2758面向?qū)ο蟊硎?/p>

1面向?qū)ο蠡A(chǔ)

人們認(rèn)識世界是以世界劃分為一些事和物為基礎(chǔ)的,這里的物指物體,事指物體間的聯(lián)系。面向?qū)ο蟊硎痉ㄖ械膶ο笾肝矬w,消息指物體間的聯(lián)系,通過發(fā)送消息使對象間相互作用來求得所需的結(jié)果。

對象是由一組數(shù)據(jù)和與該組數(shù)據(jù)相關(guān)的操作構(gòu)成的實體。如一個對象叫me。會有一組表征自身的數(shù)據(jù):

name:Liming

age:20

相應(yīng)的操作作為

birthday(歲數(shù)):每年實現(xiàn)age+1

消息是由(object,Selector,arguments)表示。其中object是消息要發(fā)送的對象,Selector是要求該對象完成的操作,arguments是Selector可選的參數(shù)。2024/9/2759簡單地說,面向?qū)ο笞鳛橐环N大有前途的方法和現(xiàn)今被廣泛采用的技術(shù),其基本原則有三條:一切事物都是對象;任何系統(tǒng)都是由對象構(gòu)成的,系統(tǒng)本身也是對象;系統(tǒng)的發(fā)展和進(jìn)化過程都是由系統(tǒng)的內(nèi)部對象和外部對象之間(也包括內(nèi)部對象與內(nèi)部對象之間)的相互作用完成的2024/9/2760面向?qū)ο蠓椒ê图夹g(shù)之所以會如此流行,主要是因為它非常適合于人們認(rèn)識和解決問題的習(xí)慣。首先它是一種從一般到特殊的演繹方法,這與人們認(rèn)識客觀世界時常用的分類的思想非常吻合;其次它也是一種從特殊到一般的歸納方法,由一大批相同或相似的對象抽象出新的類的過程,就是一個歸納過程。面向?qū)ο蠹忍峁┝藦囊话愕教厥獾难堇[手段,如繼承等;也提供了從特殊到一般的歸納方法,如類等。因此它是一種很好的認(rèn)知方法。2024/9/2761從狹義上看,面向?qū)ο蟮能浖_發(fā)包括三個主要階段:面向?qū)ο蠓治鯫bject-OrientedAnalysis簡稱OOAOOA是指系統(tǒng)分析員對將要開發(fā)的系統(tǒng)進(jìn)行定義和分析,進(jìn)而得到各個對象類以及它們之間的關(guān)系的抽象描述。面向?qū)ο笤O(shè)計Object-OrientedDesign簡稱OODOOD是指系統(tǒng)設(shè)計人員將面向?qū)ο蠓治龅慕Y(jié)果轉(zhuǎn)化為適合于程序設(shè)計語言中的具體描述,它是進(jìn)行面向?qū)ο蟪绦蛟O(shè)計的藍(lán)圖。面向?qū)ο蟪绦蛟O(shè)計Object-OrientedProgramming簡稱OOP。OOP則是程序設(shè)計人員利用程序設(shè)計語言,根據(jù)OOD得到的對象類的描述,生成對象實例,建立對象間的各種聯(lián)系,最終建立實際可運行的系統(tǒng)。2024/9/27622類與類繼承

在面向?qū)ο蟊硎局蓄惡皖惱^承是重要概念。類是面向?qū)ο蟮囊粋€基本概念。類由一組變量和一組操作組成,它描述了一組具有相同屬性和操作的對象。每個對象都屬于某一類,每個對象都可由相關(guān)的類生成,類生成對象的過程就是例化。類封裝了客觀世界中的實體的主體和動作,即類的數(shù)據(jù)抽象和過程抽象兩個方面。

類是對一組類似的對象的一般化的描述。同一個類中的對象繼承類的屬性和方法,對一組相似的類進(jìn)行抽象可以得到這一組類的超類Superclass。相應(yīng)地,超類中的每一個類稱為子類Subclass類。超類和子類的定義隱含地表示了類層次Classhierarchy的概念。在類層次結(jié)構(gòu)中,超類的屬性和方法可以由子類繼承,而子類中又可能加入新的屬性和方法,而子類中從超類中繼承而來的屬性和方法,以及子類中新定義的屬性和方法,都可以由這一子類的子類繼承。2024/9/2763(1)客觀世界是由各種對象Object組成的。任何事物都是對象。復(fù)雜的對象可以由比較簡單的對象以某種方式組合起來。因此面向?qū)ο蟮能浖到y(tǒng)是由對象組成的。軟件中的任何元素都是對象。復(fù)雜的對象由比較簡單的對象組合而成。(2)把所有的對象都劃分為各種類(Class)。每個類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對象的靜態(tài)屬性,描述對象的狀態(tài)信息。方法是對象所能執(zhí)行的操作,也就是類中所能提供的服務(wù)。(3)按照子類也稱為派生類和父類也稱為基類的關(guān)系,把若干個類組成一個層次結(jié)構(gòu)的系統(tǒng)。在這種類層次結(jié)構(gòu)中,通常下層的派生類具有和上層的基類相同的特性,包括數(shù)據(jù)和方法。我們把這一特性稱為繼承(Inheritance)。(4)對象與對象之間只能通過傳遞消息進(jìn)行通信(CommunicationwithMessages)。

2024/9/2764以上四個要點概括了面向?qū)ο蠓椒ǖ木A。面向?qū)ο蠓椒捎靡粋€公式概括為:ObjectOriented=Objects+Classes+Inheritances+CommunicationwithMessages。2024/9/27653面向?qū)ο蟊硎镜膶嵗?.舉一個簡單的例子說明面向?qū)ο蟪绦蛟O(shè)計中如何實現(xiàn)封裝性

//日期類CDate的例子.定義日期字符串類型string80

typedefcharString80[80];

//定義日期類CDate

classCDate

{

//類的實現(xiàn)

private:

intyear,month,day;

//類的接口

public:

CDate(intmonth,intday,intyear);

CDateoperator+(intdays);

2024/9/2766voidGetDateString(String80&DateString);

//...

};

//部分成員函數(shù)的實現(xiàn)

voidCDate::GetDateString(String80&DateString)

{

sprintf(DateString,"%d-%d-%d",month,day,year%100);

}

CDate類中數(shù)據(jù)成員year,month和day是類的實現(xiàn)部分,構(gòu)造函數(shù)和重載的加法運算符構(gòu)成了類的對外接口。類的接口中構(gòu)造函數(shù)可以用初始參數(shù)構(gòu)造一日期型對象,重載的加法運算可以使得類的用戶計算,并返回一增加或減少一個整數(shù)天之后或之前的一個新的日期型對象。2024/9/27672.舉一個簡單的例子說明面向?qū)ο蟪绦蛟O(shè)計中如何實現(xiàn)繼承性以CDate類作為例子,假設(shè)CDate類中的GetDateString成員函數(shù)以美國日期格式MM-DD-YY返回日期字符串,現(xiàn)在如果要能夠以歐洲日期格式DD-MM-YY返回日期字符串,該如何做呢?如果已經(jīng)有CDate類的源代碼,則可以復(fù)制整個類的源代碼,然后修改GetDateString成員函數(shù),使之能夠返回歐洲日期格式的日期字符串,更好的辦法是通過繼承。//定義日期字符串類型string80

typedefcharString80[80];

//定義日期類CDate

classCDate

{

2024/9/2768//year,month,day改成了protected類型

protected:

intyear,month,day;

public:

CDate(intmonth,intday,intyear);

CDateoperator+(intdays);

voidGetDateString(String80&DateString);

//...

};

//部分成員函數(shù)的實現(xiàn)

voidCDate::GetDateString(String80&DateString)

{

sprintf(DateString,"%d-%d-%d",month,day,year%100);

}

//CEuropeDate類是從CDate類派生得到的

classCEuropeDate:publicCDate

2024/9/2769{

public:

//重載基類的成員函數(shù)

voidGetDateString(String80&DateString);

//...

};

//部分成員函數(shù)的實現(xiàn)

voidCEuropeDate::GetDateString(String80&DateString)

{

sprintf(DateString,"%d-%d-%d",day,month,year%100);

}類CEuropeDate與類CDate非常類似,只是繼承下來的GetDateString()函數(shù)被重載并返回歐洲格式的日期字符串2024/9/27703.舉一個簡單的例子說明面向?qū)ο蟪绦蛟O(shè)計中如何實現(xiàn)多態(tài)性//以類CDate和類CEuropeDate類為例予以說明.定義日期字符串類型string80

typedefcharString80[80];

//定義日期類CDate

classCDate

{protected:

intyear,month,day;

public:

CDate(intmonth,intday,intyear);

CDateoperator+(intdays);

voidGetDateString(String80&DateString);

2024/9/2771voidDisplayDateString(void);//這里重點考察這一成員函數(shù)

//...

};

//部分成員函數(shù)的實現(xiàn)

voidCDate::GetDateString(String80&DateString)

{sprintf(DateString,"%d-%d-%d",month,day,year%100);}

voidCDate::DisplayDateString(void)

{String80DateString;

GetDateString(DateString);

cout<<"日期是"<<DateString<<endl;

}

//CEuropeDate類是從CDate類派生得到的

classCEuropeDate:publicCDate

2024/9/2772{public:

//重載基類的成員函數(shù)

voidGetDateString(String80&DateString);

CEuropeDate(intd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論