12
Parsing Hauke Traulsen Methoden der Sprachverarbeitung Heute Parser - Arten Parsing - Arten grob klassifiziert Interessante Parser – Arten detailierter Einführung Bedeutung „Parsing“ Zuweisung einer Strukturbeschreibung zu einer Texteingabe engl. to parse: „grammatikalisch bestimmen“ Grammatik – Parser I Interpretierender Parser „deklarative“ Grammatik Grammatik losgelöst von der Analyse Interpretiert vom Parser Grammatik - Parser II Prozeduraler Parser Grammatik in Algorithmus integriert Grammatik ist prozedural als eine Menge von Instruktionen formuliert. Neue Prozedur für jede neue Grammatik Grammatik – Parser III Kompilierter Parser (Deklarative) Grammatik Erzeugung eines prozeduralen Parsers durch Generator (JavaCC)

Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

Embed Size (px)

Citation preview

Page 1: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

1

Parsing

Hauke TraulsenMethoden der

Sprachverarbeitung

Heute

• Parser - Arten• Parsing - Arten grob klassifiziert• Interessante Parser – Arten detailierter

Einführung

• Bedeutung „Parsing“

– Zuweisung einer Strukturbeschreibung zu einer Texteingabe

– engl. to parse: „grammatikalisch bestimmen“

Grammatik – Parser I

• Interpretierender Parser• „deklarative“ Grammatik• Grammatik losgelöst von der Analyse• Interpretiert vom Parser

Grammatik - Parser II

• Prozeduraler Parser• Grammatik in Algorithmus integriert• Grammatik ist prozedural als eine Menge von

Instruktionen formuliert.• Neue Prozedur für jede neue Grammatik

Grammatik – Parser III

• Kompilierter Parser• (Deklarative) Grammatik• Erzeugung eines prozeduralen Parsers durch

Generator (JavaCC)

Page 2: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

2

Grammatik Spezifikation

• Produktionsregeln

– Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren

– Start bei einer Root – Kategorie (meistens S oder sentence genannt

– „kontextfreie Grammatik“

Grammatik Spezifikation II

• Übergangsnetzwerke– (transition networks)– Knoten: Zustände in einem Prozess– Kanten: Übergänge, beschriftet mit den

Wortkategorien

– RTN, ATN

Grammatik Spezifikation III

• complement slots– syntaktische Einheit (z.B. Verb)– Fordert andere Konstrukte (Subjekt,...)– Suche nach diesen Konstrukten– Im Lexikon für jedes Item festgehalten

Komplement: Vervollständigung (zu einem Satz)

Strukturelle Beschreibung I

• constituency structure (Teilbildung)• typischer Parsebaum

Strukturelle Beschreibung II

• dependency structures• Alle Knoten sind elementare Segmente der

Eingabe• Aber: Komplexe Strukturen wiederum als

Dependency Trees (Subjekt, Objekt,...)

Konstruktion Parsebaum I

• Top – Down –Analyse• Beginn an der Wurzel• Produktionsregeln: von links nach rechts• Expansion • „expectation driven“, da Hypothesen

Page 3: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

3

Konstruktion Parsebaum II

• Bottom – Up – Analyse• Beginn an der Eingabe• data driven • Nutzt Produktionsregeln von rechts nach links• Reduktion• „SR-Parser“

Konstruktion Parsebaum III

• Depth First• Sowohl TD als auch BU einsetzbar(TD sinnvoll)• Linkeste / rechteste Symbol zuerst• Überwindet schnellstmöglich die gesamte Höhe

des Baumes• (im Falle TD) schnellstmögliche Überprüfung

der bisher getroffenen Entscheidungen anhand der Daten

Konstruktion Parsebaum IV

• Breadth First• bottom up sinnvoll• Abarbeitung aller Symbole in der Reihenfolge

ihrer Entstehung• Dadurch: Bearbeitung in der Breite• Selten

Alternativen

Grund:– ungenügende Informationen– mehrdeutige Informationen

Lösungsansätze– Backtracking– Parallele (nebenläufige) Ausführung– Lookahead (z.B. LL(k) – Grammatiken)

Charts

• Abspeicherung bereits erkannter Substrukturen in einer Tabelle

• Effizienz• Bekanntester Algorithmus:

Earley (Jay Earley 1970)

Vorgestellte Parser

• Top – Down mit Backtracking• Top – Down mit Parallel Processing• Top – Down mit Divided Productions• Bottom – Up mit Charts• Tabellengesteuerter SR – Parser• Parser mit RTN • Erweiterte Übergangsnetzwerke (ATN)• Chart Parsing nach Slot – Filler – Prinzip

Page 4: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

4

Top – Down – Parser mit Backtracking

– Erkennungexpectation driven

– Resultatconstituency tree

– Grammatikspezifikationkontextfreie Produktionsregeln

Zur Übersicht

Top – Down mit Backtracking II

• Man nehme:– Eine Menge von Produktionsregeln– Ein Lexikon für die Wortkategorien– Eine Eingabetabelle (Wort,Kat.,Pos.)– Eine Positionsvariable P i.d. Eingabe– Ein Arbeitsraum (organisiert als Stack)– Ein Backtrackingstack (hält alternative

Produktionen)

Zur Übersicht

Top – Down mit Backtracking III

• Das Vorgehen:1. Start bei Root (Produktion S)

2. Innerhalb einer Produktion entwickelt man von links nach rechts (S NP VP : NP wird zuerst weiterentwickelt)

3. Alternativen der Reihe nach (Backtracking)

4. Depth-First

5. Vergleichen, ob die erwartete Kategorie mit der des nächsten Wortes der Eingabe übereinstimmt.

Zur Übersicht

Top – Down mit Backtracking IV

– Kategorie passt (sonst BT):– betrachte Rest der aktuellen Produktion:

• Rest leer und Eingabe enthält noch Elemente Backtracking

• Rest nicht leer Weiterentwickeln des linkesten NT-Symbols

• Rest leer und Eingabe leer: Matching Ausgabe– Backtrackingstack nicht leer Backtracking– Sonst Ende

Zur Übersicht

Top – Down mit Backtracking V

• Bewertung– Durch das Backtracking gehen bereits

gefundende Teile wieder verloren+ Durch Left-Right und Depth-First erhält man

schnell ein erstes Ergebnis• Überdeckung

– Kontextfreie Grammatiken ohne Linksrekursion

Zur Übersicht

Top – Down mit Parallel Processing

• Kaum Unterschied zu Backtracking• Einzigster Unterschied:

– Statt Backtracking parallele Auswertung der Produktionsalternativen

Zur Übersicht

Page 5: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

5

Top-Down mit geteilten Produktionen

– Erkennungexpectation driven

– Resultatconstituency tree

– Grammatikspezifikationkontextfreie Produktionsregeln

Zur Übersicht

Top-Down mit geteilten Produktionen II

• Anders ist:– Generell zwar TD, jedoch mit zwischenzeitlichen BU-Phasen– Kein Backtracking, stattdessen substring-table– Linksrekursion in Grammatik erlaubt

– Earley‘s Algorithmus: „Active Chart Parser“

Zur Übersicht

Top – Down mit geteilten Produktionen III

• Man nehme:– Eine Menge von Produktionsregeln einer kfG– Ein Lexikon für die Wortkategorien– Eine Eingabetabelle (Wort, Kat., Berandungen)– Eine Arbeitstabelle (Substring-Tabelle, auch

Chart)– Zwei Variablen CUR und NEW

Zur Übersicht

Top-Down mit geteilten Produktionen IV

• Eingabetabelle (Beispiel)

Berandungen!

Zur Übersicht

Top-Down mit geteilten Produktionen V

• Arbeitstabelle

• CUR und NEW initial auf dieser Zeile 1 (sonst Tabelle leer)

• Punkt teilt linken und rechten Teil einer ganzen Grammatikproduktion

• Links wird hier verarbeitet, rechts noch ungeprüft.

Zur Übersicht

Top-Down mit geteilten Produktionen VI

• Vorgehensweise• 1. Predictor

Wenn in Zeile CUR ein NT-Symbol hinter dem Punkt zu finden ist neue Zeile einfügen, mit Produktion, die dieses NT-Symbol entwickelt.

Zur Übersicht

Page 6: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

6

Top-Down mit geteilten Produktionen VI

• Immer: NEW auf die neue Zeile• Predictor: rechten Rand von CUR erben• Undo, falls Dublikat

Zur Übersicht

Top-Down mit geteilen Produktionen VII

• Wenn kein NT-Symbol in der CUR-Zeile hinter dem Punkt steht Scanner

• Mögliche Bedeutung:a. Der Punkt wurde durch alle Bestandteile

der Eingabe bewegtb. Ein Lex-Symbol steht hinter dem Punkt

der CUR-Zeile

Zur Übersicht

Top-Down mit geteilten Produktionen VIII

Scanner: • Wenn Lex-Symbol erwartet: Von der Eingabe

lesen.

• Wenn Wort der Eingabe passtKopiere CUR-Produktion in neue ZeileBewege den Punkt hinter den erkannten TeilSetze NEW auf diese neue ZeileERHÖHE RECHTEN RAND + 1

Zur Übersicht

Top-Down mit geteilten Produktionen IX

• Wenn ein NT- oder Lex-Symbol in der CUR-Produktion stand:

CUR = CUR +1 und von vorne

• Versetzen des Punktes führt dazu, dassirgendwann die Phase Completer auf eine Zeile angewendet werden kann.

Zur Übersicht

Top-Down mit geteilten Produktionen X

3. Completer• Wenn die Produktion X Y in Zeile CUR komplett ist

(Punkt ist ganz rechts)• Betrachte linke Margin• Suche in entsprechender Sektion, ob X in einer

Teilproduktion S genau rechts vom Punkt benutzt wird

• Bemerke: Lrand == Rrand (keine Überlappung durch Randnumerierung)

• Wenn neue ProduktionNEW auf neue Produktionneue Produktion wie S, aber X nun links vom Punkt

Zur Übersicht

Top-Down mit geteilten Produktionen XI

Ende des AlgorithmusWenn eine Aktion des Completers dazu führt,

dass

• # S. • Linke Margin = 0• Rechte Margin = Wortanzahl der Eingabe

Dann hat man die Eingabe komplett parsen können.

Zur Übersicht

Page 7: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

7

Top-Down mit geteilten Produktionen XII

Betreff: Margins• Beginnend mit (0,0) für # .S• Predictor: Vererbung der rechten Margin für daraus

ableitbare Teilproduktionen (links und rechts: (1,2) - - > (2,2) )

• Scanner: Erhöht rechte Margin um 1

• Completer:Linke Margin der kleineren, Rechte Margin der größeren

• Bedeutung ?

Zur Übersicht

Top-Down mit geteilten Produktionen XIII

Warum vererbt man von Produktion X aus im Predictor den rechten Rand ?Weiterentwicklung im Predictor nur des jeweils ersten Symbols rechts vom PunktAus der Sicht der Produktion X betrachtet X alle Eingabesymbole zwischen seinen Begrenzungen:Diese sind auch bereits gelesen worden (Erhöhung nur durch Scannereinsatz)Für das Symbol rechts vom Punkt in X sind noch keine Eingaben gelesen worden, folglich Vererbung des rechten Randes von X

Zur Übersicht

Top-Down mit geteilten Produktionen XIV

• Warum wird beim Scanner der rechte Rand um 1 erhöht ?

• Trivial: ein Eingabewort mehr gelesen und somit von der neuen Produktion bearbeitet.

Zur Übersicht

Top-Down mit geteilten Produktionen XV

Warum bekommt die im Completer entstehende neue Produktion den linken Rand von X und den rechten Rand der Teilproduktion Y, die man in X einpflanzen kann ?X hatte bereits alle Eingabezeichen von xl

bis xr behandelt, Y hat nun alle Eingabezeichen von xr+1 bis yr behandeltResultat: gesamte neue Produktion

behandelt alle Eingabezeichen von xl bis yr

Zur Übersicht

Top-Down mit geteilten Produktionen XVI

Bewertung• Eine Menge von unbenötigten Produktionen

werden generiert.• Nicht wird zweimal getan, da alle

Zwischenergebnisse wiederverwendet werden.

• Kein Backtracking• TD kombiniert mit BU (BU im Completer)• kFG ohne Beschränkungen

Zur Übersicht

Bottom-Up mit Chart

– Erkennungdata driven

– Resultatconstituency tree UND dependency tree

– Grammatikspezifikationkontextfreie Produktionsregeln

Zur Übersicht

Page 8: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

8

Bottom-Up mit Chart II

Man nehme:• Eine kontextfreie Grammatik in

Chomsky Normalform• Ein Lexikon (wie bekannt)• Eine Variable P, die durch die Eingabe

läuft• Eine Arbeitstabelle (Chart)• Drei Variablen CUR,NEW, NEIGHBOR

Zur Übersicht

Bottom-Up mit Chart III

Aufbau der Arbeitstabelle• Wie gehabt: Unteilung in Sektionen gemäß

des rechten Randes• Jede Zeile

– Kategorie eines Segmentes der Eingabe– linker und rechter Rand– Segment durch Reduktion Angabe des linken

und des rechten Bestandteils (durch Zeilennummer)

Zur Übersicht

Bottom-Up mit Chart IV

Beispiel Tabelle (Auszug)

Zur Übersicht

Bottom-Up mit Chart V

Variablen• CUR: aktuell bearbeitete Zeile

• NEW: Zeile neu erstelltes Segment am Ende der Tabelle

• NEIGHBOR: ein linker Nachbar von CUR (?...kommt)

Kategorie in Zeile CUR ist momentan zu verarbeitendes Symbol

Zur Übersicht

Bottom-Up mit Chart VI

Vorgehen1. Shift-Phase

– Holen einer Terminal-Kategorie (von Position P) auf die Tabelle = Lesen von Eingabe

– Rechter Rand = P– Linker Rand = P-1– Setze Bestandteile auf Null („-“)– Falls mehrere Kategorien für gelesenes (Mehrdeutigkeit):

ebenfalls neue Zeile für diese

Zur Übersicht

Bottom-Up mit Chart VII

2. Reduce– Symbol in CUR ist Kandidat für Reduktion

– Suche nach der nächsten Produktion X, die Symbol in CUR als rechten Teil besitzt.

– Suche linken Nachbarn (Produktion) im Chart (NEIGHBOR)

– Falls existent, Reduktion mit neuer Zeile, NEW erhöhen, Nachbarn eintragen

– Wiederhole Reduce, bis keine Produktion X mehr zu finden

Zur Übersicht

Page 9: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

9

Bottom-Up mit Chart VIII

3. Endbedingung überprüfen– Erhöhe CUR um 1– Wenn CUR ungleich NEW Reduce– Andernfalls erhöhe P um 1:

• P hinter dem letzten Eingabewort komplettes Resultat ?• Sonst Shift

4. Komplettes Resultat– Min. eine Zeile mit:

• Linker Rand = 0• Rechter Rand = Anzahl Eingabewörter

Zur Übersicht

Bottom-Up mit Chart IX

• Arbeitstabelle ist Chart (Beispiel)

Zur Übersicht

6 und 10 sind überflüssige Reduktionen

(keine weiteren Reduktionen von diesen aus möglich)

Bottom-Up mit Chart X

• Ausgabe– Als contituency trees leicht aus Chart ableitbar:

Zur Übersicht

Bottom-Up mit Chart XI

Ausgabe 2Auch möglich als dependency trees:• Beginn: Zeile mit komplettem Resultat wird Root• Unterscheidung: dominant ist fettgedruckt (vgl.

Produktionsregeln; auch Working table)• Ersetzung eines Knotens durch seinen dominanten

Teil (untergeordneter Teil wird Subknoten)• Runter bis zu den lexikalischen Kategorien

Zur Übersicht

Bottom-Up mit Chart XII

Beispiel Bildung eines dependency trees(14:S)(12:Vi (1:Nu) )( 5:Vi (1:Nu) (9:PP) )( 2:Vt (1:Nu) (4:Nu) (9:PP) )( 2:Vt (1:Nu) (4:Nu) (7:Prep (8:Nu) ) )( 2:study (1:they) (4:fish) (7:in (8:cans) ) )

Zur Übersicht

Bottom-Up mit Chart XIII

Bewertung• Erzeugt nichts zweimal (Wiederverwendung)• Aber alle möglichen Kombinationen (Overhead)• Gegenüber geteilten Produktionen : eingängiger

Algorithmus• Zwei mögliche Darstellungsarten (nettes Feature)

Zur Übersicht

Page 10: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

10

Rekursive Übergangsnetzwerke (RTN)

• Interpretierender Parser• Erstellt Consituency Trees• Erstellung von RTNs aus einer Menge

von kf Produktionsregeln spezifiziert die Grammatik

Zur Übersicht

RTN II

• Man nehme:– Menge von kf Produktionsregeln (keine Links-

Rekursion)– Lexikon– Eingabetabelle (wie in TD mit Backtracking)– Menge von RTNs (erstellt aus kfG)– Arbeitstabelle– Backtrackingmechanismus

Zur Übersicht

RTN III

• Beispiel: RTNs für G1

S 1 2/eNP VP

VP 3 5/evt NP 4

vi

PP

ε

NP 6 8/edet adj 7 n

εε

PP 9 10/eprep NP

Zur Übersicht

RTN IV

Vorgehen• Beginnend mit S• ….intuitiv ….intuitiv• Wenn am Pfeil eine lexikalische Kategorie steht

Scanner…bei nicht passen Backtracking• Wenn am Pfeil der initiale Zustand eines anderen Netzwerkes

steht Abarbeitung dieses Netzwerkes einfügen • Erfolgreiches Ende, wenn Arbeitstabelle (Stackartig!) wieder

leer ist + komplette Eingabe gelesen…intuitiv…intuitiv

Zur Übersicht

RTN V

• Bewertung– Nutzt dieselben Prinzipien wie TD mit BT– …und ist deshalb auch nicht besser !

Zur Übersicht

Erweiterte Übergangsnetzwerke (Augmented Transition Networks)

• ATN

–ErkennungGewöhnlich TD, Pattern orientiert

–Verhältnis Grammatik-ParserProzeduraler P., keine Trennung

Zur Übersicht

Page 11: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

11

ATN II

Wie in RTN:- Knoten, Übergänge („Arcs“), rekursive Subnetzaufrufe- Erweiterung der Übergänge durch

- Vorbedingungen- Aktionen vor / nach einem Übergang

- Erweiterungen in Prog.-sprache (LISP)- Möglichkeit, Register zu erschaffen (sogar globale

Variablen möglich) Mächtigkeit einer Turing-Maschine (Generierung jeder aufzählbaren Sprache)

- Turing-Mächtigkeit ist Overkill, darum Selbstrestriktion für natürliche Sprachen

Zur Übersicht

ATN III

Sprachverarbeitung• Verschiedene Pfeilarten

CAT-Arc: Übergang weist lexikalische Kategorie auf 1. Übereinstimmung mit Kategorie aktuelles Wort, andernfalls

BT2. Spezifizierte Vorbedingungen bestehen, andernfalls BT3. Spezifizierte Aktionen ausführen4. Neuen Knoten betreten

Zur Übersicht

ATN IV

WRD-arcErwartet lexikalisches Element1. Identität zwischen erwartetem Element und

Eingabewort, andernfalls BT2. Tests3. Aktionen4. Nächsten Knoten betreten

Zur Übersicht

ATN V

• Einige weitere Übergangsarten– Push-Arc: Rekursiv Subnetz aufrufen– Pop-Arc: Aus Rekursion zurückkehren– Jump-Arc: Übergang ohne Erhöhung der

aktuellen Eingabeposition

Zur Übersicht

ATN VI

Erfolg des Algorithmus

Durch Erreichen des Eingabeendes garantiert !

Zur Übersicht

ATN VII

Beispiel eines ATN-Formalismus für NL-Parsing

Zur Übersicht

Page 12: Einführung Grammatik – Parser I · 2 Grammatik Spezifikation • Produktionsregeln – Möglichkeit, mit diesen alle wohlgeformten Sprachkonstrukte zu generieren – Start bei

12

ATN VIII

Ausschnitt von gleichem Auschnitt in prozeduraler Schreibweise

Zur Übersicht

ATN IX

Beispielgrammatik (Ausschnitt) ATN graphisch

Zur Übersicht

ATN X

• Bewertung– Da ATN für eine spezielle Grammatik erschaffen

sehr effizient– Backtracking vermeidbar: (geschickte

Registernutzung)– Sehr sorgfältige Programmierer benötigt

(sideeffects in Registern)

Aufgrund ihrer Mächtigkeit einziger Parser, der allesprachlichen Möglichkeiten verarbeiten könnte ! (z.B. Ellipsen)

Zur Übersicht

ENDE