Vorschau Prolog Aufbaukurs SS 2003 Heinrich-Heine-Universität Düsseldorf Christof Rumpf
Vorschau Prolog Aufbaukurs2/46 Tokenizer Ein Tokenizer ist ein Programm, das beliebigen Zeicheninput in eine Liste von Tokens umwandelt. Ziel ist die Verarbeitung von Daten, die nicht in Prolog-Syntax vorliegen. Quelle der Daten kann die Tastatur oder eine Datei sein.
Vorschau Prolog Aufbaukurs3/46 Tokens Ein Token ist ein Intervall in einer Zeichenfolge, der per Konvention als nicht weiter zerlegbar gilt. Z.B. sind die Wörter dieser Präsentation durch Leerzeichen getrennte Tokens. Zeichen wie Punkt, Komma und Zeilenwechsel können ebenfalls Trenner sein oder auch selbständige Tokens bilden.
Vorschau Prolog Aufbaukurs4/46 Anwendungen Natürlichsprachlicher Input –Umwandeln einer Zeichenfolge in eine Wortliste. Compilerbau –Übergabe einer Tokenliste an einen Compiler. Datenbanken –Import von Daten aus einer externen Datenbank.
Vorschau Prolog Aufbaukurs5/46 Literatur OKeefe, Richard A. (1990): The Craft of Prolog. Chap. 10: Writing Tokenizers in Prolog. MIT Press.
Vorschau Prolog Aufbaukurs6/46 Parsing engl. to parse: grammatisch zerlegen Ein Parser ist ein Automat, der einer Zeichenkette aufgrund einer Grammatik einen Syntaxbaum zuordnet. Grammatik Parser Syntaxbaum Zeichenkette InOut
Vorschau Prolog Aufbaukurs7/46 Parsingstrategien top-down bottom-up left-corner Parsingstrategien unterscheiden sich durch die Reihenfolge, in der bei der Konstruktion des Syntaxbaums die Knoten im Baum besucht werden. depth-first breadth-first left-to-right right-to-left
Vorschau Prolog Aufbaukurs8/46 Beispielgrammatik (CFPSG) rule(s,[np,vp]). rule(np,[d,n]). rule(np,[np,conj,np]). 1 rule(vp,[v,np]). rule(vp,[v,np,pp]). rule(pp,[p,np]). rule(d,[]). 2 word(d,the). word(conj,and). word(p,near). word(n,dog). word(n,dogs). word(n,cat). word(n,cats). word(n,elephant). word(n,elephants). word(v,chase). word(v,chases). word(v,see). word(v,sees). word(v,amuse). word(v,amuses). 1 nicht für top-down-Parser 2 nicht für bottom-up-Parser
Vorschau Prolog Aufbaukurs9/46 Top-Down-Traversierung S 1 NP 2 VP 7 D 3 N 5 V 8 NP 10 D 11 N 13 the 4 dog 6 chased 9 the 12 cat 14 top-down depth-first left-to-right
Vorschau Prolog Aufbaukurs10/46 Top-Down-Parser parse(C,[Word|S],S) :- word(C,Word). parse(C,S1,S) :- rule(C,Cs), daughters(Cs,S1,S). daughters([C|Cs],S1,S) :- parse(C,S1,S2), daughters(Cs,S2,S). daughters([],S,S). % Wort der Kategorie C % Lexikon-Zugriff % Phrase der Kategorie C % Regel mit Mutter C % Töchter Cs parsen % Tochter der Kategorie C % ist Mutter eines Teilbaums % Schwestern parsen % Alle Töchter verarbeitet
Vorschau Prolog Aufbaukurs11/46 Bottom-Up-Traversierung S 14 NP 5 VP 13 D 2 N 4 V 7 NP 12 D 9 N 11 the 1 dog 3 chased 6 the 8 cat 10
Vorschau Prolog Aufbaukurs12/46 Shift-Reduce-Algorithmus Shift: lege ein Wort aus der Eingabekette auf einen Stapel. Reduce: reduziere den Stapel mit Hilfe der Grammatik soweit wie möglich. Falls die Eingabekette noch Wörter enthält, gehe zu Shift, sonst halte.
Vorschau Prolog Aufbaukurs13/46 Left-Corner-Traversierung S 1 NP 6 VP 7 D 3 N 4 V 9 NP 10 D 12 N 13 the 2 dog 5 chased 8 the 11 cat 14 nach Rumpf
Vorschau Prolog Aufbaukurs14/46 Chart-Parser Ein Chart-Parser speichert Information über bereits geparste Teilstrukturen in einer Tabelle (Chart). Bereits geleistete Arbeit kann beim Backtracking aus der Tabelle gelesen werden.
Vorschau Prolog Aufbaukurs15/46 Motivation: trashing VP V NP PP D N P NP D N chased the cat into the garden VP V NP VP V NP PP
Vorschau Prolog Aufbaukurs16/46 Chart In der Tabelle wird für jede Konstituente ein Eintrag gespeichert: –Name der Konstituente –wo sie beginnt –wo sie endet Beispiel chart(np,[the,cat,into,the,garden],[into,the,garden]).
Vorschau Prolog Aufbaukurs17/46 Earley-Chart: the dog chases the cat chart(start,[the,dog,chases,the,cat],[s], [the,dog,chases,the,cat]). chart(s, [the,dog,chases,the,cat],[np,vp],[the,dog,chases,the,cat]). chart(np, [the,dog,chases,the,cat],[d,n], [the,dog,chases,the,cat]). chart(np, [the,dog,chases,the,cat],[n], [dog,chases,the,cat]). chart(np, [the,dog,chases,the,cat],[], [chases,the,cat]). chart(s, [the,dog,chases,the,cat],[vp], [chases,the,cat]). chart(vp, [chases,the,cat],[v,np], [chases,the,cat]). chart(vp, [chases,the,cat],[v,np,pp], [chases,the,cat]). chart(vp, [chases,the,cat],[np], [the,cat]). chart(vp, [chases,the,cat],[np,pp], [the,cat]). chart(np, [the,cat],[d,n], [the,cat]). chart(np, [the,cat],[n], [cat]). chart(np, [the,cat],[], []). chart(vp, [chases,the,cat],[], []). chart(s, [the,dog,chases,the,cat],[], []). chart(start,[the,dog,chases,the,cat],[], []). chart(vp, [chases,the,cat],[pp], []).
Vorschau Prolog Aufbaukurs18/46 Performance
Vorschau Prolog Aufbaukurs19/46 Literatur Covington, Michael A. (1994): Natural Language Processing for Prolog Programmers. Chap. 6: Parsing Algorithms. Prentice-Hall. Gazdar, Gerald & Chris Mellish (1989): Natural Language Processing in Prolog. Addison Wesley.
PATR II Interpreter Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf
Vorschau Prolog Aufbaukurs21/46 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,...)
Vorschau Prolog Aufbaukurs22/46 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)
Vorschau Prolog Aufbaukurs23/46 Abdeckung theoretischer Frameworks CG categorial grammar GPSGgeneralized phrase structure grammar HPSGhead driven phrase structure grammar LFGlexical functional grammar FUGfunctional unification grammar DCGdefinite clause grammar...
Vorschau Prolog Aufbaukurs24/46 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.
Vorschau Prolog Aufbaukurs25/46 Merkmalsstrukturen Seien F (features) und V (values) Mengen. Dann ist FS (feature structures) eine Menge von partiellen Funktionen F V mit V FS 1. 1: Bzw. V ohne atomare Werte.
Vorschau Prolog Aufbaukurs26/46 Unifikation Die Unifikation FS 1 FS 2 = FS 0 ist die allgemeinste Merkmalsstruktur FS 0, so dass FS 1 FS 0 und FS 2 FS 0. Falls FS 0 nicht existiert, scheitert die Unifikation.
Vorschau Prolog Aufbaukurs27/46 PATR II Merkmalslogik Eine Merkmalslogik ist eine Beschreibungs- sprache für Merkmalsstrukturen. Ein Ausdruck L i L der PATR II-Merkmalslogik L ist eine Abbildung L i FS (vs. L i (FS) mit Negation und Disjunktion). Bestandteile der PATR II-Merkmalslogik sind –Pfadgleichungen P –Makros ML = (P M)* –Konjunktion
Vorschau Prolog Aufbaukurs28/46 Pfadgleichungen Seien FS i FS, F j F, AV k AV (atomare Werte), mit AV V und sei P die Menge der Pfade, dann ist G die Menge der Pfadgleichungen mit P i = AV k P i = P j. Originalnotation: – = – = sg Prolog-Notation: –S:head === VP:head –NP:head:agr:num === sg :- op(600,xfx,===). :- op(510,xfy, : ).
Vorschau Prolog Aufbaukurs29/46 Parsing-Session
PATR II Compiler Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf
Vorschau Prolog Aufbaukurs31/46 3 Compiler-Komponenten Tokenizer –Input: PATR II-Grammatik –Output: Token-Zeilen Präprozessor –Input: Token-Zeilen –Output: Token-Sätze Syntax-Compiler –Input: Token-Sätze –Output: Prolog-Klauseln compile_grammar(File):- clear_grammar, tokenize_file(File), read_sentences, compile_sentences.
Vorschau Prolog Aufbaukurs32/46 Tokenizer-Input ; Shieb1.ptr ; Sample grammar one from Shieber 1986 ; Grammar Rules ; Rule {sentence formation} S --> NP VP: = =. Rule {trivial verb phrase} VP --> V: =. ; Lexicon ; Word uther: = NP = masculine third = singular.
Vorschau Prolog Aufbaukurs33/46 Tokenizer Output = Präprozessor Input line(1,[o($;$),b(1),u($Shieb1$),o($.$),l($ptr$)]). line(2,[o($;$),b(1),u($Sample$),b(1),l($grammar$),b(1),l($one$),b(1),l($from$),b(1),... line(3,[ ]). line(4,[ ]). line(5,[o($;$),b(1),u($Grammar$),b(1),u($Rules$)]). line(6,[o($;$),b(1),o($-$),o($-$),o($-$),o($-$),o($-$),o($-$),o($-$),o($-$),o($-$),o($-$),... line(7,[ ]). line(8,[u($Rule$),b(1),o(${$),l($sentence$),b(1),l($formation$),o($}$)]). line(9,[b(2),u($S$),b(1),o($-$),o($-$),o($>$),b(1),u($NP$),b(1),u($VP$),o($:$)]). line(10,[b(1),o($ $),b(1),o($=$),b(1),o($<$),u($VP$),b(1),... line(11,[b(1),o($ $),b(1),o($=$),b(1),... line(12,[b(1)]). line(13,[u($Rule$),b(1),o(${$),l($trivial$),b(1),l($verb$),b(1),l($phrase$),o($}$)]). line(14,[b(2),u($VP$),b(1),o($-$),o($-$),o($>$),b(1),u($V$),o($:$)]). line(15,[b(1),o($ $),b(1),o($=$),b(1),o($<$),u($V$),b(1), line(41,[b(1),o($<$),l($head$),b(1),l($subject$),b(1),l($agreement$),b(1),l($number$),... line(42,[eof]).
Vorschau Prolog Aufbaukurs34/46 Präprozessor Output = Compiler Input sentence( 1,11,[u($Rule$),o(${$),l($sentence$),l($formation$),o($}$),... sentence(12,15,[u($Rule$),o(${$),l($trivial$),l($verb$),l($phrase$),o($}$),... sentence(16,24,[u($Word$),l($uther$),o($:$),o($ $),o($=$),... sentence(25,30,[u($Word$),l($knights$),o($:$),o($ $),o($=$),... sentence(31,36,[u($Word$),l($sleeps$),o($:$),o($ $),o($=$),... sentence(37,41,[u($Word$),l($sleep$),o($:$),o($ $),o($=$),... sentence(42,42,[eof]). Der Präprozessor entfernt Kommentare und Leerzeichen und fasst mit einem Punkt terminierte Sätze aus mehreren Zeilen zusammen. Der eigentliche Compiler kann sich dann auf das wesentliche konzentrieren.
Vorschau Prolog Aufbaukurs35/46 Compiler Output A ---> B, C :: A : cat === 'S', B : cat === 'NP', C : cat === 'VP', A : head === C : head, C : head : subject === B : head. A ---> uther :: A : cat === 'NP', A : head : agreement : gender === masculine, A : head : agreement : person === third, A : head : agreement : number === singular.
Vorschau Prolog Aufbaukurs36/46 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.
Typinferenz Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf
Vorschau Prolog Aufbaukurs38/46 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.
Vorschau Prolog Aufbaukurs39/46 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.
Vorschau Prolog Aufbaukurs40/46 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.
Vorschau Prolog Aufbaukurs41/46 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
Vorschau Prolog Aufbaukurs42/46 FS zu Typ s in Shieber 1
Vorschau Prolog Aufbaukurs43/46 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)
Vorschau Prolog Aufbaukurs44/46 Interpretieren vs. Kompilieren Eine Typensignatur enthält implizit viele Relationen. Ein Interpreter macht diese Relationen explizit. –Laufzeit-, Runtime-, bzw. Online-Berechnung Ein Compiler berechnet (alle) Relationen vollständig und liefert das Ergebnis der Berechnung zum direkten Zugriff. –Kompilezeit-, Compiletime-, bzw. Offline-Berechnung
Vorschau Prolog Aufbaukurs45/46 Merkmalslogik Eine Merkmalslogik definiert eine Beschreibungssprache für Merkmalsstrukturen. Die Semantik eines Ausdrucks in unserer Merkmalslogik wird durch die partielle Funktion mgu definiert: mgu: Descr 2 FSs Partiell: nicht alle Beschreibungen haben Lösungen. Potenzmenge: manche Beschreibungen haben mehrere Lösungen, da durch Disjunktion und Negation ein Nichtdeterminismus eingebracht wird.
Vorschau Prolog Aufbaukurs46/46 Bestandteile der Logik Variablen Typen Attribut-Wert-Paare Konjunktion Disjunktion Negation Makros PrologVar DESCR Type DESCR F:DESCR DESCR DESCR, DESCR DESCR DESCR; DESCR DESCR - DESCR DESCR
Vorschau Prolog Aufbaukurs47/46 mgu/1 mgu(Descr):- mgu(Descr,top, FS), print_fs(FS). (_1,agr, [cas:(_2,cas,[]), num:(_3,num,[]), gen:(_4,gen,[])]) agr