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

Slides:



Advertisements
Ähnliche Präsentationen
Jeopardy II Ordinal Numbers Hypothesizing Relative Pronouns Wortschatz
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
6. Regelbasierte Systeme
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
Semantik und Wissensrepräsentation
Kapitel 9: Graphdurchlauf
Kontextfreie Grammatiken
Das LCA – Problem in Suffixbäumen
Gliederung 1. Grundlagen der Bottom-Up-Syntaxanalyse
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Design by Contract with JML - Teil 2
Kapitel 4 Syntaktische Analyse: LR Parsing.
Einführung in die Computerlinguistik
Listen & Beweisstrategie
Binäre Bäume Richard Göbel.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
CFGs und Kellerautomaten
Dynamische Programmierung (2) Matrixkettenprodukt
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Konstruktion von Suffix Bäumen
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Welcome DTD. Document Type Definition Graphic Services/Everything you already know about presentations Was ist eine DTD? DTD ist eine Schemasprache.
Informatik II – Kapitel 13
Prolog Grundkurs WS 99/00 Christof Rumpf
Prolog Grundkurs WS 98/99 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.
Vorschau Prolog Aufbaukurs SS 2003 Heinrich-Heine-Universität Düsseldorf Christof Rumpf.
PATR II Compiler 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.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Hauptseminar Automaten und Formale Sprachen
Kapitel 10: Graphalgorithmen
FH-Hof Sortieren mit Binären Bäumen Richard Göbel.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Semantik und Pragmatik Übung 4 Fragment 2 Skopusambiguitäten Frank Schilder.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Compilerbau und Reverse Engineering m Vorlesung im Wintersemester.
Linguistically Motivated Information Retrieval
Eignung von Grammatik-basiertem Layout für grafische Programmiersprachen Seminar Layout-Algorithmen für Graphen Institut für Informatik Christian-Albrechts.
Wie komme ich nach…….?.
NANI SEARCH "THE ULTIMATE HELP FOR DESPERATE KIDS"... ODER EINE KNACKNUSS FÜR PROLOG ANFÄNGER.
Zuhören Seite 97. Jeopardy! 5 was bedeutet? 5 wie sagt man? 10 genders.
Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung
You need to use your mouse to see this presentation © Heidi Behrens.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 9: Abstraktion.
Handy Questions 4 - Brothers and Sisters With the Unusual Mike Rophone.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen Übungsmodul 6
VII directions - Freiburg
RfEUnit 3 ns 04 RfEUnit 3 Du wirst auf jedem Bild 15 sehen. Jeweils 2 der Symbole sind mit dem selben Wort verknüpft. Finde heraus, welches Wort du 2x.
I will be able to use the correct possessives sein und ihr. (Buch Seite 82)
Algorithmen und Datenstrukturen Übungsmodul 8
Why Connectionism? Friedrich & Assadollahi. Satz Fritz geht nach Hause.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Agenda Motivation und Einordnung Syntaxgerichtete Übersetzung
Algorithmen und Datenstrukturen 1 SS 2002
Prolog Grundkurs WS 99/00 Christof Rumpf
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Tabellengesteuerte Verfahren
Directions Gehen Sie… in die …Straße - into …street
2.4 Durchlaufen von Bäumen
 Präsentation transkript:

Parsing Prolog Aufbaukurs SS 2000 Heinrich-Heine-Universität Düsseldorf Christof Rumpf

Parsing2 engl. to parse: grammatisch zerlegen Ein Parser ist ein Automat, der einer Zeichenkette aufgrund einer Grammatik einen Syntaxbaum zuordnet. Grammatik Parser Syntaxbaum Zeichenkette InOut

Parsing3 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

Parsing4 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

Parsing5 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

Parsing6 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

Parsing7 Problem: Linksrekursion Top-Down-Strategie loopt bei linksrekursiven Regeln: NP NP Conj NP Auswege: –Linksrekursion vermeiden –Bottom-Up- oder Left-Corner-Strategie

Parsing8 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

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

Parsing10 Shift-Reduce-Beispiel

Parsing11 Shift-Reduce-Parser parse(S,Result) :- shift_reduce(S,[],Result). shift_reduce(S,Stack,Result) :- shift(Stack,S,NewStack,S1), reduce(NewStack,ReducedStack), shift_reduce(S1,ReducedStack,Result). shift_reduce([],Result,Result). shift(X,[H|Y],[H|X],Y). reduce(Stack,ReducedStack) :- brule(Stack,Stack2), reduce(Stack2,ReducedStack). reduce(Stack,Stack). brule([vp,np|X],[s|X]). brule([np,conj,np|X],[np|X]). %... brule([Word|X],[Cat|X]) :- word(Cat,Word). % S = String, Result = Stapel. % Initialisierung: leerer Stapel. % Nichtleere Eingabekette S. % Lege ein Wort auf den Stapel. % Reduziere den Stapel. % Verarbeite Rest S1. % Leere Eingabekette. % Lege ein Wort auf den Stapel. % Reduziere Stack durch Anwendung % einer Backward-Regel. % Reduziere weiter. % Keine Reduktion mehr möglich. % Backward-Regel. % Linksrekursive Backward-Regel. %...weitere Backward-Regeln. % Lexikon-Zugriff.

Parsing12 Problem: Leere Kategorien Bottom-Up-Strategie loopt bei leeren Kategorien. Det. Auswege –Leere Kategorien vermeiden. –Left-Corner-Strategie mit Linking.

Parsing13 Left-Corner-Algorithmus Um eine Konstituente von Typ C zu Parsen 1.Nimm das erste Wort der Kette mit Kategorie W. 2.Vervollständige C a)falls C=W: fertig b)sonst: i.Finde eine Regel mit W als linker Ecke (erstes Element der rechten Seite) und Mutter M. ii.Parse die Schwestern von W. iii.Ersetze W durch M und gehe zu Schritt 2.

Parsing14 Left-Corner-Traversierung S 1 NP 4 VP 7/10 D 3 N 5 V 9 NP 11/14 D 13 N 15 the 2 dog 6 chased 8 the 12 cat 16 nach Covington 1994

Parsing15 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

Parsing16 Left-Corner-Parser lcp(C,[Word|S2],S):- word(W,Word), complete(W,C,S2,S). complete(C,C,S,S). complete(W,C,S1,S):- rule(P,[W|Rest]), lc_sisters(Rest,S1,S2), complete(P,C,S2,S). lc_sisters([C|Cs],S1,S):- lcp(C,S1,S2), lc_sisters(Cs,S2,S). lc_sisters([],S,S). % Nimm erstes Wort der Kette. % Bestimme Kategorie. % Vervollständige Kette. % Akt. Kat = erwartet. % Akt. Kat \= erwartet. % Akt. Kat ist linke Ecke. % Parse LC-Schwestern. % Vervollständige Kette. % Aktuelle Schwester ist % Mutter eines Teilbaums. % Parse übrige Schwestern. % Alle Töchter geparst.

Parsing17 Problem: Leere Kategorien Erweiterung für leere Kategorien: lcp(C,S2,S):- rule(W,[]), complete(W,C,S2,S). Problem: Left-Corner-Strategie loopt beim Backtracking, da beliebig viele leere Kategorien eingebaut werden können. Ausweg: Linking

Parsing18 Linking Die Linke-Ecke-Relation bestimmt die erste Konstituente in der Expansion einer Phrase. Die Linking-Relation ist die reflexive, transitive Hülle der Linke-Ecke-Relation. S NP VP NP D N VP V NP le(np, s) le(d, np) le(v, vp) link(np, s). link(d, np). link(d, s). link(v, vp). link(X, X).

Parsing19 LC-Parser mit Linking lcp(C,[Word|S2],S):- word(W,Word), link(W,C), complete(W,C,S2,S). lcp(C,S2,S):- rule(W,[]), link(W,C), complete(W,C,S2,S).

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