300 likes | 383 Views
PATR II Interpreter. Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf. Grammatik-Formalismen. Grammatikformalismen sind Sprachen zur Beschreibung von Sprachen. Metasprache (Formalismus: Beschreibungsebene) Objektsprache (natürliche Sprache: Objektebene)
E N D
PATR IIInterpreter Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf
Grammatik-Formalismen • Grammatikformalismen sind Sprachen zur Beschreibung von Sprachen. • Metasprache (Formalismus: Beschreibungsebene) • Objektsprache (natürliche Sprache: Objektebene) • Anwendungszweck von Formalismen: • Werkzeug-orientiert (PATR II, ALE, QType, ...) • Theorie-orientiert (LFG, GPSG, HPSG, ...) PATR II
Motivation für Formalismen • Präzises Werkzeug für die Beschreibung natürlicher Sprachen. • Einschränkung der Klassen möglicher natürlicher Sprachen. • Computer-interpretierbare Charakterisierung natürlicher Sprachen. PATR II
Anforderungen an Formalismen • Linguistische Adäquatheit • Linguistische Phänomene sollten möglichst ‚direkt‘ darstellbar sein. • Ausdruckskraft • Welche Problemklassen können überhaupt dargestellt werden? • Berechenbarkeit/Effizienz • Welche Werkzeuge aus der Informatik werden benötigt und welche Eigenschaften haben sie? PATR II
PATR-Design-Entscheidungen • Oberflächenbasiert (vs. transformationiell) • Informationstragend (linguistisches Wissen) • Induktiv (Berechnung der Informationskombination) • Deklarativ (was vs. wie wird berechnet) • Merkmalsbasiert bzw. Constraintbasiert (komplexe Merkmalsstrukturen) PATR II
Abdeckung theoretischer Frameworks • CG categorial grammar • GPSG generalized phrase structure grammar • HPSG head driven phrase structure grammar • LFG lexical functional grammar • FUG functional unification grammar • DCG definite clause grammar • ... PATR II
PATR Basisoperationen • Konkatenation • String-Kombination auf Basis eines kontextfreien Phrasenstrukturgerüst. Jeder (Teil-)String wird mit einer Merkmalsstruktur assoziiert. • Unifikation • Informations-Kombination durch monotone Unifikation von Merkmalsstrukturen. PATR II
Merkmalsstrukturen • Seien F(features) und V(values) Mengen.Dann ist FS(feature structures) eine Menge von partiellen Funktionen FV mit VFS1. 1: Bzw. V ohne atomare Werte. PATR II
DAGs • Zyklische Merkmalsstrukturen können sich selbst als Wert enthalten. • Azyklische Merkmalsstrukturen können als gerichtete azyklische Graphen (DAGs) betrachtet werden. num pers sing 3 PATR II
Typ- vs. Tokenidentität Typidentität: f und g haben zwei verschiedene Werte vom Typ a. Tokenidentität: f und g haben den identischen Wert a. Die Indexe nennt man Tag, Reentrancy oder Koindexierung. PATR II
Subsumption • Subsumption ist eine partielle Ordnungsrelation über Merkmalsstrukturen, die auf der Spezifizität der enthaltenen Information beruht. • Informell: FS1FS2 gdw. alle Information in FS1 ebenfalls in FS2 enthalten ist. PATR II
Unifikation • Die Unifikation FS1FS2 = FS0 ist die allgemeinste Merkmalsstruktur FS0, so dass FS1FS0 und FS2FS0. • Falls FS0 nicht existiert, scheitert die Unifikation. PATR II
PATR II Merkmalslogik • Eine Merkmalslogik ist eine Beschreibungs-sprache für Merkmalsstrukturen. • Ein Ausdruck LiL der PATR II-Merkmalslogik L ist eine Abbildung LiFS(vs. Li(FS) mit Negation und Disjunktion). • Bestandteile der PATR II-Merkmalslogik sind • Pfadgleichungen P • Makros ML = (P M)* • Konjunktion PATR II
Pfadgleichungen • Seien FSiFS, FjF, AVkAV(atomare Werte), mit AVV und sei P die Menge der Pfade <FSiFj*>, dann ist G die Menge der Pfadgleichungen mit Pi = AVk Pi = Pj. • Originalnotation: • <S head> = <VP head> • <NP head agr num> = sg • Prolog-Notation: • S:head === VP:head • NP:head:agr:num === sg :- op(510,xfy, : ). :- op(600,xfx,===). PATR II
Makros (Templates) • Makros sind Abkürzungen für Merkmalsstrukturen und müssen definiert werden, bevor man sie verwenden kann. • Makro-Definition: LetMakronamebeLi. • Makro-Verwendung: Lj Makroname Lk • Originalnotation: • Let Third be <head agr pers> = 3. • Let Sing be <head agr num> = sing. • Let ThirdSing be ThirdSing. • Prolog-Notation: • third(F):- F:head:agr:pers === 3. • sing(F):- F:head:agr:num === sing. • thirdSing(F):- third(F), sing(F). PATR II
Merkmalsstrukturen in Prolog • Wir repräsentieren Merkmalsstrukturen in Prolog als offene Listen: • [agr:[num:sg|A]|B] • [agr:[pers:3|C]|D] • Die Unifikation der beiden Strukturen soll folgendes Ergebnis liefern: • [agr:[num:sg, pers:3|E]|B] • [agr:[pers:3, num:sg|E]|B] • B=D, A=[pers:3|E], C=[num:sg|E] PATR II
unify/2 % unify(?FS1,?FS2) unify(X,X):- !. unify([P:V|FS1],FS):- pathval(FS,P,V,FS2), unify(FS1,FS2). pathval([F:V1|FS], F, V2, FS):- !, unify(V1, V2). pathval([FS|FSs1], F, V, [FS|FSs2]):- pathval(FSs1, F, V, FSs2). PATR II
Zerlegung von Pfaden ?- current_op(Precedence,Associativity,:).Precedence = 500Associativity = xfyyes ?- a:b:c = F:P.F = aP = b:cyes a:b:c a:(b:c) PATR II
Interpreter für Pfadgleichungen X === Y :- denotes(X, X1), denotes(Y, Y1), unify( X1, Y1). denotes(V, V):- var(V), !. denotes(A, [A|_]):- atomic(A), !. denotes(F:P, V):- pathval(F, P, V, _), !. denotes(FS, FS). PATR II
Erweiterung für pathval/4 pathval(FS1, F:P, V, FS2):- !, pathval(FS1, F, FS3, FS2), pathval(FS3, P, V, _). pathval([F:V1|FS], F, V2, FS):- !, unify(V1, V2). pathval([FS|FSs1], F, V, [FS|FSs2]):- pathval(FSs1, F, V, FSs2). PATR II
Syntaxregeln: PATR II Allgemeines Schema: Rule FSiFS+:G*. (Makros?) Rule X0X1X2: < X0 cat> = s < X0 cat> = np < X0 cat> = vp < X0 subj> = < X2 subj> < X0 obj> = < X2 obj> < X2 subj> = < X1> < X1 agr cas> = nom. Rule X0X1X2: < X0 cat> = vp < X0 cat> = v < X0 cat> = np < X0 subj> = < X1 subj> < X0 obj> = < X1 obj> < X2 obj> = < X2>. PATR II
Syntaxregeln: DCG cat(S) --> { S:cat ==='S', NP:cat ==='NP', VP:cat ==='VP', S:subj ===VP:subj, S:obj ===VP:obj, VP:subj ===NP, nom(NP) }, cat(NP), cat(VP). cat(VP) --> { VP:cat ==='VP', V:cat ==='V', NP:cat ==='NP', VP:obj ===V:obj, VP:subj ===V:subj, VP:obj ===NP }, cat(V), cat(NP). Zur Vermeidung von linksrekursiven Loops müssen die Merkmalsstrukturen vor der Verzweigung berechnet werden. PATR II
Syntaxregeln: Klauseln cat(S,P0,P2):- S:cat ==='S', NP:cat ==='NP', VP:cat ==='VP', S:subj ===VP:subj, S:obj ===VP:obj, VP:subj ===NP, nom(NP), cat(NP,P0,P1), cat(VP,P1,P2). cat(VP,P0,P2):- VP:cat ==='VP', V:cat ==='V', NP:cat ==='NP', VP:obj ===V:obj, VP:subj ===V:subj, VP:obj ===NP, cat( V,P0,P1), cat(NP,P1,P2). PATR II
Lexikon: PATR II • Allgemeines Schema: WordString:L*. • Beispiele: • Word klaut: <cat> = V AccSing. • Word paul: <cat> = NP NomSing. • Word bananen: <cat> = NP AccPlur. PATR II
Lexikon: DCG cat(V) --> {V:cat ==='V', acc_sing(V)}, [klaut]. cat(NP) --> [paul], {NP:cat ==='NP', nom_sing(NP)}. cat(NP) --> {NP:cat ==='NP', acc_plur(NP)}, [bananen]. PATR II
Lexikon: Klauseln cat(V,[klaut|T],T):- V:cat ==='V', acc_sing(V). cat(NP,[paul|T],T):- NP:cat ==='NP', nom_sing(NP). cat(NP,[bananen|T],T]):- NP:cat ==='NP', acc_plur(NP). PATR II
Makros acc(C):- C:agr:cas ===acc. nom(C):- C:agr:cas ===nom. sing(C):- C:agr:num ===sing. plur(C):- C:agr:num ===plur. nom_sing(C):- nom(C), sing(C). acc_sing(C):- acc(C), sing(C). acc_plur(C):- acc(C), plur(C). PATR II
PATR II-Parser parse:- nl, write('Phrase >> '), read_wordlist(String), nl, parse(String). parse(String):- cat(FS, String, []), print_fsm_(FS). PATR II
Parsing-Session PATR II
Literatur • Shieber, Stuart (1986): An Introduction to Unification-based Approaches to Grammar. CSLI Lecture Notes. • Gazdar, Gerald & Chris Mellish (1989): Natural Language Processing in Prolog. Addison Wesley. • Covington, Michael A. (1994): Natural Language Processing for Prolog Programmers. Chap. 6: Parsing Algorithms. Prentice-Hall. PATR II