Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Typinferenz Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf."—  Präsentation transkript:

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

2 05.06.2000Typinferenz2 Hintergrund Getypte Merkmalsstrukturen sind von Bedeutung insbesondere für die HPSG. Implementierte Systeme zur Verarbeitung getypter Merkmalsstrukturen sind u.a. ALE, CUF, LKB, TFS, TROLL,... Die nachfolgenden Definitionen liegen dem Düsseldorfer System QType zugrunde, das sich seit 1997 in Entwicklung befindet.

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.

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.

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

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

7 05.06.2000Typinferenz7 FS zu Typ s in Shieber 1

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, '::').

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 >> [] :: [].

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)

11 05.06.2000Typinferenz11 Typen % type(?Type). % Type is defined as a type. type(T):- call(T >> _).

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).

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).

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.

15 05.06.2000Typinferenz15 Minimale (Sub-)Typen minimal_subtype(MiniType,Type):- subtype(MiniType,Type), minimal(MiniType). minimal(T):- T >> [] :: _.

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).

17 05.06.2000Typinferenz17 Alle Lösungen: setof/3 % setof(?Template,+Goal,?Set) Eingebautes Prädikat. % 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(_,_,[]).

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]

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.

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).

21 05.06.2000Typinferenz21 Grösste 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.

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:

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.

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).

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).

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.

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:

28 05.06.2000Typinferenz28 LUB-Filter für 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!

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,Complement). % complement(?Type,+ContextType,-Complement) % The Complement of Type relative to ContextType. % ContextType is the LUB for the complement types. complement(Type,CT,Complement):- setof1(ST,subtype(ST,CT),Types), complement_in_context(Type,Types,Complement0), lubs(Complement0,Complement), Complement \= [], !.

30 05.06.2000Typinferenz30 Komplement im Kontext % complement_in_context(?Type,+Context,-Complement) % The Complement of Type relative to Context. Context is a % list of candidate types for the complement. Every type in % Context that has no lower bound with Type is in Complement. complement_in_context(_,[],[]):- !. complement_in_context(Type,[T|Ts],Complement):- lb(Type,T,_), !, complement_in_context(Type,Ts,Complement). complement_in_context(Type,[T|Ts],[T|Complement]):- complement_in_context(Type,Ts,Complement).

31 05.06.2000Typinferenz31 Komplement: Beispiel ?- complement(first, top, C). C = [agr,category,gen,head,num,second,third,vform] yes ?- complement(first, pers, C). C = [second,third] yes mit der Shieber 1-Signatur als Basis

32 05.06.2000Typinferenz32 Literatur Carpenter, Bob (1993): The Logic of Typed Feature Structures. CUP. OKeefe, Richard A. (1990): The Craft of Prolog. MIT Press. Shieber, Stuart (1986): An Introduction to Unification-based Approaches to Grammar. CSLI Lecture Notes.


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

Ähnliche Präsentationen


Google-Anzeigen