Typinferenz Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

  • View
    104

  • Download
    0

Embed Size (px)

Text of Typinferenz Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

  • Folie 1
  • Typinferenz Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universitt Dsseldorf Christof Rumpf
  • Folie 2
  • 05.06.2000Typinferenz2 Hintergrund Getypte Merkmalsstrukturen sind von Bedeutung insbesondere fr die HPSG. Implementierte Systeme zur Verarbeitung getypter Merkmalsstrukturen sind u.a. ALE, CUF, LKB, TFS, TROLL,... Die nachfolgenden Definitionen liegen dem Dsseldorfer System QType zugrunde, das sich seit 1997 in Entwicklung befindet.
  • Folie 3
  • 05.06.2000Typinferenz3 Getypte Merkmalsstrukturen Sind Mengen von Attribut-Wert-Paaren. Jede Merkmalsstruktur hat einen Typ. Jeder Wert eines Attributs ist eine getypte Merkmalsstruktur. Die Typen sind in einer Vererbungshierarchie (Summenhalbverband) angeordnet, innerhalb der Attribut- Wert-Paare top-down vererbt werden. Die Vererbungshierarchie wird durch eine Typensignatur etabliert, in der Klassen von Merkmalsstrukturen definiert werden.
  • Folie 4
  • 05.06.2000Typinferenz4 Typensignatur - Syntax 2 Mengen: Types, Features 2 Relationen: unmittelbarer Subtyp >> Appropriateness :: Typdefinition Supertyp >> Subtyp 1,..., Subtyp n :: Feature 1 :Typ 1,...,Feature m :Typ m.
  • Folie 5
  • 05.06.2000Typinferenz5 Typensignatur zu Shieber 1 top >> category, featval. category >> verbal, np :: HEAD:head. featval >> head, agr, gen, pers, num, vform. head >> vhead, nhead. verbal >> v, vp, s :: HEAD:vhead. np :: HEAD:nhead. nhead :: AGREEMENT:agr. agr :: GENDER:gen, PERSON:pers, NUMBER:num. gen >> masc, fem, neut. pers >> first, second, third. num >> sing, plur. vhead :: FORM:vform, SUBJECT:np. vform >> finite, base. Kilbury 1997, QType-Syntax
  • Folie 6
  • 05.06.2000Typinferenz6 Typhierarchie category verbal np v vp s head vhead nhead gen masc fem neut pers first second third num sing plur vform finite base featval top agr
  • Folie 7
  • 05.06.2000Typinferenz7 FS zu Typ s in Shieber 1
  • Folie 8
  • 05.06.2000Typinferenz8 Typensignatur: Prolog-Syntax % Type >> Subtypes :: FeatureValuePairs % Type = Atom % Subtypes = [Type1,...,TypeN] % FeatureValuePairs = [F1:V1,...,Fm:Vm] % Fi = Atom % Vi = Type :- op(800, xfx, '>>'). :- op(700, xfx, '::').
  • Folie 9
  • 05.06.2000Typinferenz9 Shieber 1 in Prolog-Syntax top >> [category, featval] :: []. category >> [verbal, np] :: ['HEAD':head]. featval >> [head, agr, gen, pers, num, vform] :: []. head >> [vhead, nhead] :: []. verbal >> [v, vp, s] :: ['HEAD':vhead]. np >> [] :: ['HEAD':nhead]. nhead >> [] :: ['AGREEMENT':agr]. agr >> [] :: ['GENDER':gen, 'PERSON':pers, 'NUMBER':num]. gen >> [masc, fem, neut] :: []. pers >> [first, second, third] :: []. num >> [sing, plur] :: []. vhead >> [] :: ['FORM':vform, 'SUBJECT':np]. vform >> [finite, base] :: []. base >> [] :: []. v >> [] :: []. masc >> [] :: []. first >> [] :: []. vp >> [] :: []. fem >> [] :: []. second >> [] :: []. s >> [] :: []. neut >> [] :: []. third >> [] :: []. sing >> [] :: []. plur >> [] :: []. finite >> [] :: [].
  • Folie 10
  • 05.06.2000Typinferenz10 Typensignatur-Interpreter type(?Type) immediate_subtype(?ImmediateSubType,?Type) subtype(?SubType,?Type) immediate_supertype(?SuperType,?Type) supertype(?SuperType,?Type) lb(?Type1,?Type2,?Type3)lower bound glb(?Type1,?Type2,?Type3)greatest lower bound ub(?Type1,?Type2,?Type3)upper bound lub(?Type1,?Type2,?Type3)least upper bound complement(?Type,-Complement)
  • Folie 11
  • 05.06.2000Typinferenz11 Typen % type(?Type). % Type is defined as a type. type(T):- call(T >> _).
  • Folie 12
  • 05.06.2000Typinferenz12 Unmittelbare Subtypen % immediate_subtype(?ImmediateSubType,?Type) % ImmediateSubType is defined as an immediate % subtype of Type. immediate_subtype(ST,T):- call(T >> STs :: _), member(ST,STs).
  • Folie 13
  • 05.06.2000Typinferenz13 Subtypen % subtype(?SubType,?Type) % SubType is a subtype of Type. % Reflexive transitive closure of the % immediate_subtype/2 relation. subtype(T,T):- type(T). subtype(ST,T):- immediate_subtype(IST,T), subtype(ST,IST).
  • Folie 14
  • 05.06.2000Typinferenz14 Echte Subtypen % true_subtype(?SubType,?Type) % SubType is a true subtype of Type. true_subtype(T1,T2):- subtype(T1,T2), T1 \= T2.
  • Folie 15
  • 05.06.2000Typinferenz15 Minimale (Sub-)Typen minimal_subtype(MiniType,Type):- subtype(MiniType,Type), minimal(MiniType). minimal(T):- T >> [] :: _.
  • Folie 16
  • 05.06.2000Typinferenz16 Extension eines Typs % extension(?Type,-Extension) % Extension is the set of minimal subtypes of Type. extension(Type,Extension):- type(Type), setof1(MiniType, minimal_subtype(MiniType,Type), Extension).
  • Folie 17
  • 05.06.2000Typinferenz17 Alle Lsungen: setof/3 % setof(?Template,+Goal,?Set) Eingebautes Prdikat. % Set ist die Menge aller Instanzen von Template, % so dass Goal bewiesen werden kann. Falls Set % leer ist, scheitert setof/3. % setof1(?Template,+Goal,?Set) setof1(Template,Goal,Set):- setof(Template,Goal,Set), !. setof1(_,_,[]).
  • Folie 18
  • 05.06.2000Typinferenz18 Setof-Beispiel likes(bill, cider). likes(dick, beer). likes(harry, beer). likes(jan, cider). likes(tom, beer). likes(tom, cider). ?- setof(X, likes(X,Y), S). S = [dick,harry,tom], Y = beer -> ; S = [bill,jan,tom], Y = cider -> ; no ?- setof((Y,S), setof(X, likes(X,Y), S), SS). SS = [(beer,[dick,harry,tom]),(cider,[bill,jan,tom])] yes ?- setof(X, Y^(likes(X,Y)), S). % Y existenzquantifiziert S = [bill,dick,harry,jan,tom]
  • Folie 19
  • 05.06.2000Typinferenz19 Typen-Unifikation Die Unifikation zweier Typen t 1 und t 2 liefert entweder Typ t 3, falls t 3 der allgemeinste Typ ist, soda t 3 Subtyp von t 1 ist und t 3 Subtyp von t 2 ist oder ist undefiniert, falls es einen solchen Typ t 3 nicht gibt.
  • Folie 20
  • 05.06.2000Typinferenz20 Untere Schranken % lb(?Type1,?Type2,?Type3) % Type3 is a lower bound for Type1 and % Type2, if it is a subtype of both. lb(T1,T2,T3):- subtype(T3,T1), subtype(T3,T2).
  • Folie 21
  • 05.06.2000Typinferenz21 Grsste untere Schranken % glb(?Type1,?Type2,?Type3) % Type3 is the greatest lower bound of Type1 and Type2. glb(T1,T2,T3):- % T3 is GLB of T1 and T2 if lb(T1,T2,T3), % T3 is a LB of T1 and T2 and setof1(T4, % the set S of types T4 ( % which are true_subtype(T3,T4), % true supertypes of T3 and lb(T1,T2,T4) % lower bounds of T1 and T2 ), S), S=[]. % is the empty set.
  • Folie 22
  • 05.06.2000Typinferenz22 GLB ber Extension extension/2 liegt als berechnete Faktenmenge vor. Das zweite Argument von extension/2 ist alphabetisch sortiert. Jeder Typ hat entweder keinen oder mindestens zwei unmittelbare Subtypen. % glb(?T1,?T2,?T3) glb(T1,T2,T3):- extension(T1,E1), extension(T2,E2), intersection(E1,E2,E4), sort(E4,E3), extension(T3,E3). Nebenstehende Definition hat folgende Voraussetzungen:
  • Folie 23
  • 05.06.2000Typinferenz23 Typen-Generalisierung Die Generalisierung zweier Typen t 1 und t 2 liefert entweder Typ t 3, falls t 3 der spezifischste Typ ist, soda t 3 Supertyp von t 1 ist und t 3 Supertyp von t 2 ist oder ist undefiniert, falls es einen solchen Typ t 3 nicht gibt.
  • Folie 24
  • 05.06.2000Typinferenz24 Supertypen % supertype(?SuperType,?Type) % SuperType is a supertype of Type. supertype(ST,T):-subtype(T,ST). % immediate_supertype(?SuperType,?Type) % SuperType is an immediate supertype of Type. immediate_supertype(ST,T):- immediate_subtype(T,ST).
  • Folie 25
  • 05.06.2000Typinferenz25 Obere Schranken % ub(?Type1,?Type2,?Type3) % Type3 is an upper bound for Type1 and % Type2 if it is a supertype of both. ub(T1,T2,T3):- subtype(T1,T3), subtype(T2,T3).
  • Folie 26
  • 05.06.2000Typinferenz26 Kleinste obere Schranken % lub(?Type1,?Type2,?Type3) % Type3 is the least upper bound of Type1 and Type2. lub(T1,T2,T3):-% T3 is the LUB of T1 and T2 if ub(T1,T2,T3),% T3 is an UB for T1 and T2 and setof1(T4,% the set S of types T4 (% which are true_subtype(T4,T3), % true subtypes of T3 and ub(T1,T2,T4)% upper bounds for T1 and T2 ), S), S=[].% is the empty set.
  • Folie 27
  • 05.06.2000Typinferenz27 LUB ber Extension extension/2 liegt als berechnete Faktenmenge vor. Das zweite Argument von extension/2 ist alphabetisch sortiert. Jeder Typ hat entweder keinen oder mindestens zwei unmittelbare Subtypen. % lub(?T1,?T2,?T3) lub(T1,T2,T3):- extension(T1,E1), extension(T2,E2), union(E1,E2,E4), sort(E4,E3), extension(T3,E3). Nebenstehende Definition hat folgende Voraussetzungen:
  • Folie 28
  • 05.06.2000Typinferenz28 LUB-Filter fr Typenmenge % lubs(+ListOfTypes1, ?ListOfTypes2) % ListOfTypes2 includes the disjunct least upper bounds for % the types in ListOfTypes1. In other words: every type in % ListOfTypes1 that is a subtype of some other type in % ListOfTypes1 is deleted. lubs(Types,Lubs):- delete(Type1,Types,Types1), member(Type2,Types1), subtype(Type1,Type2), !, lubs(Types1,Lubs). lubs(L,L):- !. naives Verfahren, delete/3 vermeiden!
  • Folie 29
  • 05.06.2000Typinferenz29 Komplement % complement(?Type,-Complement) % The Complement of Type relative to all other Types. complement(Type,Complement):- type(Type), complement(Type,top,Compleme

Recommended

View more >