35
Изкуствен интелект Изкуствен интелект Упражнение № 6 спец. Информатика, ФМИ 2004/2005

Изкуствен интелект Упражнение № 6

  • Upload
    ivy

  • View
    98

  • Download
    0

Embed Size (px)

DESCRIPTION

Изкуствен интелект Упражнение № 6. спец. Информатика, ФМИ 2004/2005. Семантични мрежи и фрейми. Семантични мрежи Фрейми. Семантични мрежи. Семантичните мрежи се състоят от обекти и релации между обектите - PowerPoint PPT Presentation

Citation preview

Page 1: Изкуствен интелект Упражнение № 6

Изкуствен интелектИзкуствен интелект

Упражнение № 6

спец. Информатика, ФМИ

2004/2005

Page 2: Изкуствен интелект Упражнение № 6

Семантични мрежи и фреймиСемантични мрежи и фрейми

Семантични мрежиФрейми

Page 3: Изкуствен интелект Упражнение № 6

Семантични мрежиСемантични мрежи

Семантичните мрежи се състоят от обекти и релации между обектите

Обикновено се представят чрез граф, като възлите на графа съответстват на обектите, а релациите между обектите се представят чрез именувани дъги свързващи възлите на графа

Page 4: Изкуствен интелект Упражнение № 6

СемантичнСемантичнaa мреж мрежaa

Page 5: Изкуствен интелект Упражнение № 6

СемантичнСемантичнaa мреж мрежaa

Page 6: Изкуствен интелект Упражнение № 6

СемантичнСемантичнaa мреж мрежaa

Page 7: Изкуствен интелект Упражнение № 6

ОсновниОсновни типове връзки типове връзки

Т и п С е м а н т и к а П р и м е р

s u b s e t ( c a t s , m a m m a l s )

i s _ a ( b i l l , c a t s )

a g e ( t o m , 1 2 )

l e g s ( b i r d s , 2 ) .

p a r e n t ( t o m , a n )

BА Subset

BА Member

BА R

BА R

BА R

),( BАR

),( BxRАxx

),( yxRByАxyx

Page 8: Изкуствен интелект Упражнение № 6

Семантична мрежаСемантична мрежаanimal

flybirddaylight

albatross kiwi brown

walk

night

Kimblack_&_white

Albert

Ross

isaactive_at moving_method

isa isa

isa

isa isa

moving_method

active_at

colour

colour

Page 9: Изкуствен интелект Упражнение № 6

isa(bird,animal).isa(albatross,bird).isa(kiwi,bird).isa(ross,albatross).isa(albert,albatross).isa(kim,kiwi).moving_method(bird,fly).moving_method(kiwi,walk).active_at(bird,daylight).active_at(kiwi,night).colour(albatross,black_&_white).colour(kiwi,brown).

moving_method(X,Method):-isa(X,SuperX),moving_method(SuperX,Method).

Page 10: Изкуствен интелект Упражнение № 6

(де)композиция на терм(де)композиция на терм+Term =.. ?List ?Term =.. +List List е списък, чийто първи елемент е функтор на Term, а останалите елементи на List са аргументите на този терм Term, т.е.

| ?- product(0, n, n-1) =.. L.L = [product,0,n,n-1]

| ?- n-1 =.. L.L = [-,n,1]

| ?- product =.. L.L = [product]

| ?- X=..[functor,arg1,arg2,arg3,arg4].X = functor(arg1,arg2,arg3,arg4) ?

Вместо този предикат може да се използват arg/3 и functor/3.

Page 11: Изкуствен интелект Упражнение № 6

fact(Fact):-Fact,!.

fact(Fact):-Fact=..[Rel,Arg1,Arg2],isa(Arg1,SuperArg),SuperFact=..[Rel,SuperArg,Arg2],fact(SuperFact).

Page 12: Изкуствен интелект Упражнение № 6

| ?- fact(moving_method(kim,Method)).| ?- fact(moving_method(kim,Method)).Method = walk ? Method = walk ?

| ?- fact(moving_method(albert,Method)).| ?- fact(moving_method(albert,Method)).Method = fly ? Method = fly ?

Page 13: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

figure

oval polygon

4-side triangleellipsecircle

rectangle

square

trapezoid

Page 14: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

% is_a hierarchy% is_a hierarchy

isa(square,rectangle).isa(square,rectangle).isa(rectangle,4-side).isa(rectangle,4-side).isa(trapezoid,4-side).isa(trapezoid,4-side).isa(parallelogram,4-side).isa(parallelogram,4-side).isa(circle,oval).isa(circle,oval).isa(ellipse,oval).isa(ellipse,oval).isa(triangle,polygon).isa(triangle,polygon).isa(4-side,polygon).isa(4-side,polygon).isa(polygon,figure).isa(polygon,figure).isa(oval,figure).isa(oval,figure).

Page 15: Изкуствен интелект Упражнение № 6

c

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

a b

c

a b

c

a b

c

a b

Арка

support(a,c).

touch(a,b).

Page 16: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

% Objects represented as facts in the format:

% object(Name,Parts,IsaRelations,MustRelations,MustNotRelations

object(arch,[a,b,c], [isa(a,4-side),isa(b,4-side), isa(c,polygon)], [support(a,c),support(b,c)], [touch(a,b)]).

Page 17: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

% Test patterns

test1([X,Y,Z], [isa(X,rectangle),isa(Y,rectangle),isa(Z,triangle)], [support(X,Z),support(Y,Z)]).

test2([X,Y,Z], [isa(X,rectangle),isa(Y,rectangle),isa(Z,triangle)], [support(X,Z),support(Y,Z),touch(X,Y)]).

Page 18: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

% Sample runs

?- match([X,Y,Z], [isa(X,rectangle),isa(Y,rectangle),isa(Z,triangle)], [support(X,Z),support(Y,Z)], Name).

Name=arch

?- test1(Parts,Isa,Rels),match(Parts,Isa,Rels,Name).

Name=arch

Page 19: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

match(Parts,Isa1,Rels,Name) :-object(Name,Parts,Isa2,Must,MustNot),

match_isa(Isa1,Isa2), subset(Must,Rels), \+ intersect(Rels,MustNot).

Page 20: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

match_isa([],[]).

match_isa([isa(X,P)|T],[isa(X,Q)|V]) :- parent(P,Q), match_isa(T,V).

Page 21: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

subset([],_).subset([X|T],Y) :- member(X,Y), subset(T,Y).

intersect(L1,L2) :- member(X,L1), member(X,L2).

Page 22: Изкуствен интелект Упражнение № 6

Съпоставяне на семантични Съпоставяне на семантични мрежимрежи

parent(X,X).

parent(X,Z) :-isa(X,Y),

parent(Y,Z).

Page 23: Изкуствен интелект Упражнение № 6

OpusName: OpusOpus

Friend:

BirdsLegs: 22

Flies: TT

MammalsLegs: 44

PenguinsFlies: FF

Cats BatsLegs: 2

Flies: TT

PatName: PatPat

AnimalsAlive: TT

Flies: FF

BillName: BillBill

Friend:

Subset

Subset

Subset

Subset

Subset

Member Member Member

rel(alive,animals,t).

rel(flies,animals,f).

subset(birds,animals).

subset(mammals,animals).

rel(flies,birds,t).

rel(legs,birds,2).

rel(legs,mammals,4).

Фрейми

Page 24: Изкуствен интелект Упражнение № 6

OpusName: OpusOpus

Friend:

BirdsLegs: 22

Flies: TT

MammalsLegs: 44

PenguinsFlies: FF

Cats BatsLegs: 2

Flies: TT

PatName: PatPat

AnimalsAlive: TT

Flies: FF

BillName: BillBill

Friend:

Subset

Subset

Subset

Subset

Subset

Member Member Member

rel(legs,mammals,4).

subset(penguins,birds).

subset(cats,mammals).

subset(bats,mammals).

rel(flies,penguins,f).

rel(legs,bats,2).

rel(flies,bats,t).

Page 25: Изкуствен интелект Упражнение № 6

OpusName: OpusOpus

Friend:

BirdsLegs: 22

Flies: TT

MammalsLegs: 44

PenguinsFlies: FF

Cats BatsLegs: 2

Flies: TT

PatName: PatPat

AnimalsAlive: TT

Flies: FF

BillName: BillBill

Friend:

Subset

Subset

Subset

Subset

Subset

Member Member Member

is_a(opus,penguins).

is_a(bill,cats).

is_a(pat,bats).

name(opus,'Opus').

friend(opus,bill).

name(bill,'Bill').

friend(bill,opus).

name(Pat,'Pat').

Page 26: Изкуствен интелект Упражнение № 6

ПримерПример

FRAME: bird

a_kind_of: animal

moving_method: fly

active_at: daylight

Page 27: Изкуствен интелект Упражнение № 6

ПримерПримерFRAME: albatross

a_kind_of: bird

colour: black_and_white

size: 115 % 115 cm long

FRAME: kiwi

a_kind_of: bird

moving_method: walk

active_at: nightcolour: brown

size: 40

Page 28: Изкуствен интелект Упражнение № 6

ПримерПримерFRAME: Albert

instance_of: albatross

size: 120

Page 29: Изкуствен интелект Упражнение № 6

% A frame is represented as a set of% A frame is represented as a set of% Prolog facts:% Prolog facts:% frame_name(Slot,Value)% frame_name(Slot,Value)% where Value is either a simple value or % where Value is either a simple value or % a procedure% a procedure

% Frame bird: the prototypical bird% Frame bird: the prototypical birdbird(a_kind_of,animal).bird(a_kind_of,animal).bird(movin_method,fly).bird(movin_method,fly).bird(active_at,daylight).bird(active_at,daylight).

% Frame albatross: albatross is a typical bird% Frame albatross: albatross is a typical bird% with some extra facts: it is black and white,% with some extra facts: it is black and white,% and it is 115 cm long% and it is 115 cm longalbatross(a_kind_of, bird).albatross(a_kind_of, bird).albatross(colour,black_and_white).albatross(colour,black_and_white).albatross(size,115).albatross(size,115).

Page 30: Изкуствен интелект Упражнение № 6

% Frame kiwi: kiwi is a rather untypical% Frame kiwi: kiwi is a rather untypical% bird in that it walks instead of flies,% bird in that it walks instead of flies,% and it is active at night% and it is active at nightkiwi(a_kind_of,bird).kiwi(a_kind_of,bird).kiwi(moving_method,walk).kiwi(moving_method,walk).kiwi(active_at,night).kiwi(active_at,night).kiwi(colour,brown).kiwi(colour,brown).kiwi(size,40).kiwi(size,40).% Frame albert: an instance of big albatross% Frame albert: an instance of big albatrossalbert(instance_of,albatross).albert(instance_of,albatross).albert(size,120).albert(size,120).% Frame ross: an instance of baby albatross% Frame ross: an instance of baby albatrossross(instance_ot,albatross).ross(instance_ot,albatross).ross(size,40).ross(size,40).

Page 31: Изкуствен интелект Упражнение № 6

% Frame animal: slot relative_size % Frame animal: slot relative_size % obtains its value by executing% obtains its value by executing% procedure relative_size% procedure relative_sizeanimal(relative_size,animal(relative_size,

execute( execute(

relative_size(Object,Value),relative_size(Object,Value),

Object,Object,

ValueValue

))

).).

Page 32: Изкуствен интелект Упражнение № 6

value(Frame,Slot,Value):-value(Frame,Slot,Value):-

Query=..[Frame,Slot,Value],Query=..[Frame,Slot,Value],

call(Query),!. call(Query),!.

value(Frame,Slot,Value):-value(Frame,Slot,Value):-

parent(Frame,ParentFrame),parent(Frame,ParentFrame),

value(ParentFrame,Slot,Value).value(ParentFrame,Slot,Value).

parent(Frame,ParentFrame):-parent(Frame,ParentFrame):-

(Query=..[Frame,a_kind_of,ParentFrame](Query=..[Frame,a_kind_of,ParentFrame]

;;

Query=..[Frame,instance_of,ParentFrame]),Query=..[Frame,instance_of,ParentFrame]),

call(Query). call(Query).

Page 33: Изкуствен интелект Упражнение № 6

?-value(albert,active_at,AlbertTime).?-value(albert,active_at,AlbertTime).

AlbertTime=daylightAlbertTime=daylight

?-value(kiwi,active_at,KiwiTime).?-value(kiwi,active_at,KiwiTime).

KiwiTime=nightKiwiTime=night

Page 34: Изкуствен интелект Упражнение № 6

% 40/115*100%=34.78%% 40/115*100%=34.78%?-value(ross,relative_size,R).?-value(ross,relative_size,R).R=34.78R=34.78

relative_size(Object,RelativeSize):-relative_size(Object,RelativeSize):-value(Object,size,ObjSize),value(Object,size,ObjSize),value(Object,instance_of,ObjClass),value(Object,instance_of,ObjClass),

value(ObjClass,size,ClassSize),value(ObjClass,size,ClassSize), RelativeSize is ObjSize/ClassSize*100.

animal(relative_size, execute(

relative_size(Obj,Val),Obj,Val)

).

Page 35: Изкуствен интелект Упражнение № 6

value(Frame,Slot,Value):-value(Frame,Slot,Value):-value(Frame,Frame,Slot,Value).value(Frame,Frame,Slot,Value).

value(Frame,SuperFrame,Slot,Value):-value(Frame,SuperFrame,Slot,Value):-Query=..[SuperFrame,Slot,Information],Query=..[SuperFrame,Slot,Information],call(Query),call(Query),process(Information,Frame,Value).process(Information,Frame,Value).

value(Frame,SuperFrame,Slot,Value):-value(Frame,SuperFrame,Slot,Value):-parent(SuperFrame,ParentSuperFrame),parent(SuperFrame,ParentSuperFrame),value(Frame,ParentSuperFrame,Slot,Value).value(Frame,ParentSuperFrame,Slot,Value).

process(execute(Goal,Frame,Value),Frame,Value):-!,process(execute(Goal,Frame,Value),Frame,Value):-!,call(Goal).call(Goal).

process(Value,_,Value).process(Value,_,Value).