Shift-Reduce-Parsing: Ein einfaches Bottom-Up-Verfahren Keller Shift- und Reduce-Schritte Vorgehen des Parsers Implementation in Prolog Probleme

Ähnliche Dokumente
Chart-Parsing. bersicht. Ziel. Motivation: Bisher vorgestellte Verfahren sind nicht effizient Grundidee des Chart-Parsing Datenstruktur

Die vorgestellten Chart-Parser haben bei bestimmten Grammatiken Probleme die Symbole der Grammatik dÿrfen nicht unterspezifiziert sein

Top-Down-Parsing: DCGs

Parsing-Repetition. bersicht. Ziel

Bottom-Up-Chart-Parser

Parsing-EinfŸhrung Ð 1

Übersicht. (A) Kontextfreie Sprachen (B) Syntaxanalyse (Parsing) (C) Grenzen der Kontextfreiheit

Neben allgemeinen Programmiertechniken gibt es eine Anzahl von Mšglichkeiten, um Parser zu beschleunigen.

Kontrolle. bersicht. Ziel. Alle Lšsungen fÿr ein Ziel erhalten. Negation Disjunktion SuchbŠume stutzen: Cut

Einführung - Parser. Was ist ein Parser?

Kellerautomat (1/4) Kellerautomat (2/4) Kellerautomat (3/4) Kellerautomat (4/4)

Kapitel 3: Datentyp Keller und Schlange

R. Montague: ÈEnglish as a Formal LanguageÇ Vortrag von Sascha Brawer á 18. Januar 1995

(KFG und) Kellerautomaten

Charts. Motivation. Grundfrage. Chart als Graph

Eigenschaften I. Earley-Parsing. Earley-Algorithmus. Eigenschaften II

Der CKY-Parser. Vorlesung Computerlinguistische Techniken Alexander Koller. 27. Oktober 2015

LR-Parsing. Präsentation vom 19. Dez Adriana Kosior, Sandra Pyka & Michael Weidauer. Automatische Syntaxanalyse (Parsing) Wintersemester 12/13

Syntax und Parsing. OS Einblicke in die Computerlinguistik. Philipp Rabe, 13IN-M

Earley Parsing. Parsing - WS 2012 / 2013 Lisa Orszullok & Anika Stallmann

Einführung in die Computerlinguistik

1. Die rekursive Datenstruktur Liste

EinfŸhrung Ð 1. bersicht. Aufbau des Kurses Organisatorisches. Warum gerade Prolog? Ein erstes Prolog-Programm. bungsaufgaben Folienkopien

LR Parsing. Prinzip: Entwicklung des Parsebaums bottom up, von links nach rechts (Abb. 2.52)

Morphologie. bersicht. Ziel. Grundbegriffe Vollformen-Lexikon Morphologische Analyse mit DCGs

SelektionsbeschrŠnkungen Ð 1

Hallo Welt für Fortgeschrittene

12. Dynamische Datenstrukturen

Teil 111. Chart-Parsing

ABITURPRÜFUNG 2006 LEISTUNGSFACH INFORMATIK (HAUPTTERMIN)

Der Earley-Algorithmus

Der Earley-Algorithmus

Earley Parser. Flutura Mestani

Kapitel 4: Datentyp Keller und Schlange

LR-Parser, Shift-Reduce-Verfahren

Rekursion. bersicht. Ziel. Beispiele fÿr Bezug auf sich selber. Woraus besteht eine rekursive Definition? Rekursion in Prolog Weitere Beispiele

16. Dynamische Datenstrukturen

Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion

Operationen auf Grammatiken

Stack. Seniorenseminar Michael Pohlig

Sprachenhierarchie. bersicht. Zweck. Begriffe Hierarchie verschiedener Formalismen (unvollstšndig) Wo liegen die natÿrlichen Sprachen?

MODIFIKATIONEN DES TOMITA-PARSERS FÜR ID/LP UND FEATURE GRAMMARS Jens Woch

Eine Erweiterung der kontextfreien Grammatiken: PATR-II

5. Syntaxanalyse und der Parser-Generator yacc. 5.5 Aufsteigende Analyse. Absteigende Analyse versus aufsteigende Analyse. 5.5 Aufsteigende Analyse

Shift Reduce Parser (Bottom up Parser) Historie Grundbegriffe Tabellengesteuerter LR(1) Parser Konstruktion der Elementmengen Tabellenkonstruktion

Automatisches Verstehen gesprochener Sprache

26 Hierarchisch strukturierte Daten

Inkrementelle Syntax

Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion

Effiziente Prolog-Techniken

Merkmalstrukturen. bersicht. Ziel. Beispiele fÿr Merkmalstrukturen Koreferenz, Unifikation Sinn und Zweck Merkmalstrukturen in Prolog: GULP.

Listen. M. Jakob. 20. September Gymnasium Pegnitz

Einführung in unifikationsbasierte Grammatikformalismen

13. Dynamische Datenstrukturen

Grundlagen der Programmierung 2 (Comp-D)

Übung Algorithmen und Datenstrukturen

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Algorithmen und Datenstrukturen

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Definition von LR(k)-Grammatiken

Formale Sprachen und Automaten: Tutorium Nr. 8

Advanced Computational Semantics Sommersemester 2008, Hauptseminar. Lösung zu Übung 6,

Arbeitsweise des vorgestellten Tokenizers verstehen nicht: Auswendiglernen dieses Prolog-Programms. Wissen, dass das Problem nicht ganz trivial ist

Einführung in die Computerlinguistik Formale Grammatiken rechtslineare und kontextfreie Grammatiken Kellerautomaten

Einführung in die Computerlinguistik

Anwendung von Kontextfreien Grammatiken

Einführung in PROLOG 7 Kontextfreie Grammatiken

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

Bottom-Up Analyse. im Einzelnen

Prolog. Modellieren in Prolog. Argumente eines Prädikates. Fakten

Programmierkurs Python II

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

7. Verkettete Strukturen: Listen

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)

Tokenizer. Motivation. Zweck und Funktion eines Tokenizers. Ein einfacher Tokenizer. : These are words. [these, are, words,'.'] These are words.

Künstliche Intelligenz Sprachverarbeitung mit Prolog

Inhalt. Einführung Formale Sprachen und Grammatiken Übergangsnetze Merkmalsstrukturen Unifikationsgrammatiken

Künstliche Intelligenz

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Informatik III. Christian Schindelhauer Wintersemester 2006/07 7. Vorlesung

Featuregrammatiken. Vorlesung Computerlinguistische Techniken Alexander Koller. 21. November 2014

Kapitel 5: Syntax-Analyse

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Das Kontrollfluss-Diagramm für Ò ¼ µ:

Einführung Computerlinguistik. Konstituentensyntax II

Kontextfreie Grammatiken

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

13. Übungsblatt

Parsing regulärer Ausdrücke. Karin Haenelt

Der eigentliche Inhalt (z.b. arithmetisch, algebraisch) wird ignoriert:

Formale Sprachen und Automaten

Ein Satz der deutschen Sprache besitzt ein Subjekt, ein Prädikat und ein Objekt (SPO).

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 7. Entrekursivierung

Programmieren 1 C Überblick

Übungsblatt 6: Softwareentwicklung I (WS 2006/07)

Tutorium Prolog für Linguisten 12

Transkript:

Shift-Reduce-Parsing bersicht Shift-Reduce-Parsing: Ein einfaches Bottom-Up-Verfahren Keller Shift- und Reduce-Schritte Vorgehen des Parsers Implementation in Prolog Probleme Tilgungsregeln Zyklische Regeln Shift-Reduce-Parsing Ð 1

Shift-Reduce-Parsing Shift-Reduce-Parsing ist ein einfaches Bottom-Up-Verfahren. Nimm ein Wort Ñ es ist ÈaÇ ÈaÇ ist ein Det Nimm ein weiteres Wort Ñ es ist ÈmanÇ ÈmanÇ ist ein N Det und N bilden zusammen eine NP Nimm ein weiteres Wort Ñ es ist ÈsleepsÇ ÈsleepsÇ ist ein V V bildet (fÿr sich alleine) eine VP NP und VP bilden zusammen ein S S NP VP NP Det N VP V NP VP V Det a Det the Det a N man N woman NP N man S V loves V sleeps V sees V thinks VP V sleeps S NP VP NP V NP sleeps Det N sleeps Det man sleeps a man sleeps Shift-Reduce-Parsing Ð 2

Keller Keller (auch: Stapel), engl. Stack wichtige Datenstruktur zwei Operationen: push Ñ etwas oben auf den Stapel darauflegen pop Ñ oberste Schicht vom Stapel wegnehmen Zugang immer von oben Keller im Alltag: BŸcherstapel; MensatellerwŠrmer leerer Keller empty stack push pop pop pop push Shift-Reduce-Parsing Ð 3

Keller in Prolog Stacks kšnnen in Prolog einfach als Listen programmiert werden: = [, ] = [ ] oberstes Element auf Stapel = erstes Element in Liste push und pop als Listenoperationen Shift-Reduce-Parsing Ð 4

Shift-Reduce-Parsing In jedem Schritt fÿhrt ein Shift-Reduce-Parser eine von zwei mšglichen Aktionen durch: Shift Ènimm ein WortÇ verschiebe ein Wort auf den Keller Reduce ÈX und Y bilden zusammen ein ZÇ, ÈX bildet (fÿr sich alleine) ein ZÇ, ÈX ist ein ZÇ wenn die obersten Kellerelemente gleich der rechten Seite einer Regel sind, ersetze sie durch die linke Seite der Regel (Reduktion) Shift-Reduce-Parsing Ð 5

Shift-Reduce-Parsing Vorgehen beim Shift-Reduce-Parsing: Verschiebe ein Wort von der Eingabekette auf den Keller (ÈShiftÇ) Reduziere die obersten Keller-Elemente (ÈReduceÇ) so lange, bis die obersten Kellerelemente nicht mehr der rechten Seite einer Grammatikregel entsprechen Sind noch mehr Wšrter in der Eingabekette? ja: nochmals von vorne nein: Stop Shift-Reduce-Parsing Ð 6

Shift-Reduce-Parsing Schritt Aktion Keller (Stack) Eingabe-Kette 0 Ñ ε the man sleeps 1 shift the man sleeps 2 Det man sleeps 3 shift Det man sleeps 4 Det N sleeps 5 NP sleeps 6 shift NP sleeps ε 7 NP V ε 8 NP VP ε 9 S ε Shift-Reduce-Parsing Ð 7

Shift-Reduce-Parser in Prolog Um einen Shift-Reduce-Parser in Prolog zu implementieren, empfiehlt sich: Keller ÈrŸckwŠrtsÇ als Liste darstellen oberstes Keller-Element = erstes Element in der Liste Det N [n, det] Regeln so darstellen, dass sie mit Keller unifizieren auch rÿckwšrts NP Det N brule([n, det RestKeller], [np RestKeller]). Shift-Reduce-Parsing Ð 8

Grammatikregeln, Lexikon brule([vp, np X], [s X]). brule([n, det X], [np X]). brule([np, v X], [vp X]). brule([v X], [vp X]). brule([word X], [Cat X]) :- word(cat, Word). word(det, the). word(n, dog). word(n, cat). word(v, sees). Shift-Reduce-Parsing Ð 9

Ein einzelner Reduce-Schritt Durch diese Darstellung von Regeln und Keller ist ein einzelner Reduce-Schritt sehr effizient: NP Det N Aktion Keller (Stack) NP V Det N NP V NP brule([n, det X], [np X]).?- brule([n, det, v, np], NewStack). NewStack = [np, v, np] Shift-Reduce-Parsing Ð 10

Mehrere Reduce-Schritte: / 2 Der Keller wird so lange reduziert, bis keine Grammatikregel mehr anwendbar ist. Rekursiver Fall (Stack, ReducedStack) :- brule(stack, Stack2), (Stack2, ReducedStack). Abbruch (Stack, Stack). Shift-Reduce-Parsing Ð 11

shift / 2 Ein einzelner Shift-Schritt nimmt erste Wort von der Eingabekette weg ÈpushtÇ es zuoberst auf den Keller shift(stack, [Word S], [Word Stack], S). alter Keller alte Kette neuer Keller neue Kette?- shift([det], [man,sleeps], NewStack, NewString). NewStack = [man,det], NewString = [sleeps] Schritt Aktion Keller Eingabe-Kette 2 Det man sleeps 3 shift Det man sleeps Shift-Reduce-Parsing Ð 12

shift_ / 3 Das PrŠdikat shift_ fÿhrt einen einzelnen Shift-Schritt durch benutzt /2, um den Keller so weit wie mšglich zu reduzieren Rekursiver Fall Abbruch shift_([], Stack, Stack). shift_(string, Stack, Result) :- shift(stack, String, NewStack, NewString), (NewStack, ReducedStack), shift_(newstring, ReducedStack, Result). Shift-Reduce-Parsing Ð 13

Tilgungsregeln Reine Bottom-Up-Verfahren (z.b. Shift-Reduce-Parsing) kommen nicht mit Tilgungsregeln zurecht. wenn die Grammatik eine Regel der Form X ε enthšlt kann der Reduce-Schritt beliebig oft angewendet werden dabei wšchst der Keller immer weiter ohne dass der Parser nšher zur Lšsung kommen wÿrde Schritt Aktion Keller (Stack) Eingabe-Kette 0 Ñ ε the man sleeps 1 shift the man sleeps 2 X the man sleeps 3 X X the man sleeps 4 X X X the man sleeps 5 X X X X the man sleeps 6 X X X X X the man sleeps Shift-Reduce-Parsing Ð 14

Zyklische Regeln Reine Bottom-Up-Verfahren (z.b. Shift-Reduce-Parsing) kommen nicht mit Regeln zurecht, die zu Zyklen fÿhren. Beispiel: A B á B C á C A wie bei Tilgungsregeln kann der Reduce-Schritt beliebig oft durchgefÿhrt werden somit ist wiederum nicht garantiert, dass der Parser terminiert Aktion Keller (Stack) B É A É C É B É A É C É B É A É C É B É A É Shift-Reduce-Parsing Ð 15

Problematische Grammatiken Welche Komplikationen tauchten bisher auf? Links-Rekursion Beispiel: NP Det N á Det NP Poss (fÿr Èthe kingsõs crownç) Beispiel: S S Conj S (fÿr ÈEine Katze singt und ein Hund belltç) problematisch fÿr Top-Down-Parser, die von links nach rechts parsen Rechts-Rekursion Beispiel: S S Conj S (fÿr ÈEine Katze singt und ein Hund belltç) problematisch fÿr Top-Down-Parser, die von rechts nach links parsen Tilgungsregeln: X ε problematisch fÿr Bottom-Up-Parser Zyklische Kettenregeln: A B á B C á C D á D A problematisch fÿr Bottom-Up-Parser; fÿr Top-Down wg. Links-/Rechtsrekursion Shift-Reduce-Parsing Ð 16

Aufgaben: Shift-Reduce-Parsing Programmiertechniken der Computerlinguistik 1 á Wintersemester 1998/99 1. Keller-Operationen Beispiel (die EinrŸckungen sind nur zur Verdeutlichung; Prolog wird dagegen alles in einer einzigen Zeile schreiben):?- parse([the,dog,sees,the,cat], [s(struktur)]). Struktur = s(np(det(the), n(dog)), vp(v(sees), np(det(the), n(cat)))) Schreibe Prolog-PrŠdikate fÿr die Operationen auf einem Keller. Es sind jeweils Beispiele fÿr die Benutzung dieser PrŠdikate angegeben. a) push/3 Ñ Nimmt ein Element und einen Keller; liefert einen neuen Keller zurÿck, bei dem das Element zuoberst auf dem Eingabekeller liegt.?- push(marmelade, [maus, kartoffel, assel], NeuerKeller). NeuerKeller = [marmelade, maus, kartoffel, assel] b) pop/3 Ñ Nimmt einen Keller; liefert das oberste Element des Kellers und den neuen Keller zurÿck.?- pop([maus, kartoffel, assel], Gepoppt, NeuerKeller). Gepoppt = maus, NeuerKeller = [kartoffel, assel] Was passiert, wenn Du versuchst, das oberste Element von einem leeren Keller wegzunehmen? 2. Shift-Reduce-Parsing FŸhre auf dem Papier ein Shift-Reduce-Parsing der folgenden Eingabeketten durch. Gib fÿr jeden Shift- oder Reduce-Schritt an, wie Eingabekette und Keller aussehen. a) the cat sees a dog b) the dog the dog 3. StrukturbŠume Der bisherige Shift-Reduce-Parser ist eigentlich gar kein Parser, sondern lediglich ein Akzeptor: Er gibt nur aus, ob ein Satz der Grammatik entspricht oder nicht. FŸr die meisten computerlinguistischen Anwendungen wird jedoch die Struktur der erkannten SŠtze gebraucht. Welche nderungen sind nštig, damit die Struktur in der selben Form wie frÿher bei den DCGs ausgegeben wird?