1 / 30

PATR II Interpreter

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)

shania
Télécharger la présentation

PATR II Interpreter

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

  8. Merkmalsstrukturen • Seien F(features) und V(values) Mengen.Dann ist FS(feature structures) eine Menge von partiellen Funktionen FV mit VFS1. 1: Bzw. V ohne atomare Werte. PATR II

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

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

  11. Subsumption • Subsumption ist eine partielle Ordnungsrelation über Merkmalsstrukturen, die auf der Spezifizität der enthaltenen Information beruht. • Informell: FS1FS2 gdw. alle Information in FS1 ebenfalls in FS2 enthalten ist. PATR II

  12. Unifikation • Die Unifikation FS1FS2 = FS0 ist die allgemeinste Merkmalsstruktur FS0, so dass FS1FS0 und FS2FS0. • Falls FS0 nicht existiert, scheitert die Unifikation. PATR II

  13. PATR II Merkmalslogik • Eine Merkmalslogik ist eine Beschreibungs-sprache für Merkmalsstrukturen. • Ein Ausdruck LiL der PATR II-Merkmalslogik L ist eine Abbildung LiFS(vs. Li(FS) mit Negation und Disjunktion). • Bestandteile der PATR II-Merkmalslogik sind • Pfadgleichungen P • Makros ML = (P M)* • Konjunktion PATR II

  14. Pfadgleichungen • Seien FSiFS, FjF, AVkAV(atomare Werte), mit AVV 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

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

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

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

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

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

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

  21. Syntaxregeln: PATR II Allgemeines Schema: Rule FSiFS+:G*. (Makros?) Rule X0X1X2: < 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 X0X1X2: < X0 cat> = vp < X0 cat> = v < X0 cat> = np < X0 subj> = < X1 subj> < X0 obj> = < X1 obj> < X2 obj> = < X2>. PATR II

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

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

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

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

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

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

  28. PATR II-Parser parse:- nl, write('Phrase >> '), read_wordlist(String), nl, parse(String). parse(String):- cat(FS, String, []), print_fsm_(FS). PATR II

  29. Parsing-Session PATR II

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

More Related