Vorschau Prolog Aufbaukurs SS 2003 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.

Slides:



Advertisements
Ähnliche Präsentationen
Vorlesung Compilertechnik Sommersemester 2008
Advertisements

6. Regelbasierte Systeme
Statistische Aspekte der PSG
Semantik und Wissensrepräsentation
Kontextfreie Grammatiken
für Kommunikation, Informationstechnik und Ergonomie
Das LCA – Problem in Suffixbäumen
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
8. Formale Sprachen und Grammatiken
Sommersemester, 1999 © Frank Schilder Semantik und Pragmatik Referentielle Netze Frank Schilder.
Grammatiken, Definitionen
Verifizieren versus Berechnen
Algorithmen und Komplexität
Kapitel 4 Syntaktische Analyse: LR Parsing.
Einführung in die Computerlinguistik
Listen & Beweisstrategie
Maschinelle Übersetzung I
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
FH-Hof Grammatiken Richard Göbel. FH-Hof Begriffe Eine Grammatik definiert die Struktur (Syntax) einer Zeichenkette Eine Grammatik definiert nicht die.
Java: Dynamische Datentypen
Grammatikentwicklung
Thomas Kloecker Betreuer: Tim Priesnitz
CFGs und Kellerautomaten
Suche in Texten: Suffix-Bäume
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Default-Vererbung in der Unifikationsgrammatik Christof Rumpf Heinrich-Heine-Universität Düsseldorf
Semantik von Prolog & Unifikation
Prolog Grundkurs WS 99/00 Christof Rumpf
Syntax von Prolog & Familiendatenbasis
Fakten, Regeln und Anfragen
Prolog Grundkurs WS 98/99 Christof Rumpf
Typinferenz (mit Bitvectoren) Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf Gast: Wolfram Bernhardt.
Typinferenz Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Tokenizer Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Chart-Parsing Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
PATR II Interpreter Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
PATR II Compiler Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Parsing Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Merkmalslogik Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
Reguläre Sprachen Karin Haenelt.
© Karin Haenelt 2006, Äquivalenzen Reg.Ausdrücke, Reg.Sprachen, EA ( ) 1 Reguläre Sprachen Karin Haenelt.
Parsing regulärer Ausdrücke
© Karin Haenelt 2005, Endliche Automaten: Alphabet, Zeichenreihe, Sprache, Endliche Automaten Grundlagen: Alphabet, Zeichenreihe, Sprache.
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Günter Kniesel Advanced Prolog. 2 Bisher: Grundlagen Klauseln –Regeln –Fakten Terme –Die einzige Datenstruktur in Prolog –Listen als Sonderfall mit eigener.
Lexikalisch-Funktionale Grammatik
Grammatiktheorien Head-Driven Phrase Structure Grammar Einführung.
Was bedeutet "Weiche drei schalten"?
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Hauptseminar Automaten und Formale Sprachen
Von der Sprache zum Programm
Titelmasterformat durch Klicken bearbeiten Formatvorlage des Untertitelmasters durch Klicken bearbeiten Die formalen Sprachen bei ETAP Teil II.
Eignung von Grammatik-basiertem Layout für grafische Programmiersprachen Seminar Layout-Algorithmen für Graphen Institut für Informatik Christian-Albrechts.
VII directions - Freiburg
Erfindervon Fuzzy Logic
Das Traveling Salesman Problem (TSP)
7. Formale Sprachen und Grammatiken
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Semantische Analyse und attributierte Grammatiken
Funktionale Unifikations-Grammatik (FUG)   Hauptmerkmale der FUG.
Funktionale Unifikations-Grammatik (FUG)  Hauptmerkmale der FUG.
Lexikalisch-Funktionale Grammatik   Subsumption   Unifikation   Von der K-Struktur zur F-Struktur.
Merkmale und Merkmalstrukturen
Der PATR II Formalismus
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
13.Dezember 2006–1Elektronisches Publizieren: Schemasprachen — Relax NG Schemasprachen für XML — Relax NG — Anne Brüggemann-Klein TU München.
 Präsentation transkript:

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