300 likes | 388 Views
Dive into the world of PATR.II formalism using Prolog as a robust tool for natural language description. From linguistic adequacy to expression capabilities, learn the essence of using formalism in computational linguistic analysis. Explore the operational foundations, merkmals structures, and the power of path equations within the PATR-II system. Gain insights into the importance of token identity, unification, and the intricacies of Merkmalslogik. Discover how Makros amplify modeling in computational linguistics, and uncover the mechanics of Merkmals structures represented in Prolog.
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