Tomita-Parser

Tomita-Parser

Ein Tomita-Parser (nach Masaru Tomita) ist ein Parsverfahren für kontextfreie Grammatiken, das eine Verallgemeinerung des LR(k)-Verfahrens ist. Das Verfahren wird deshalb auch GLR(k)-Verfahren (für Generalized LR(k)) genannt.

Ausgangspunkt des Tomita-Parsers ist der Tabellenerstellungsvorgang des LR(k)-Verfahrens. Bei Grammatiken, die nicht die LR(k)-Eigenschaft haben (u.a., aber nicht nur, ambige Grammatiken), führt dieser Vorgang zu Mehrfacheinträgen, sog. Konflikten:

  • Shift-Reduce-Konflikt: es besteht die Möglichkeit, das nächste Eingabesymbol auf den Stapel des Parsers zu legen oder eine erkannte rechte Seite einer Produktionsregel durch die linke Regelseite zu ersetzen.
  • Reduce-Reduce-Konflikt: es gibt mindestens zwei Produktionsregeln, mit deren Hilfe eine Reduktion erfolgen kann.

Der Algorithmus des Tomita-Parsers verfolgt diese Konflikte pseudo-parallel weiter. Als Datenstruktur wird ein sog. Graphstapel (graph structured stack) - ein gerichteter azyklischer Graph - verwendet, der alle bereits vollzogenen Parsoperationen repräsentiert.

Inhaltsverzeichnis

Graphstapel

Die verwendete Repräsentation der Parsergebnisse geschieht – ähnlich wie beim Chart-Parser - mittels eines gerichteten azyklischen Graphen.

Abb 1.: Graphstack für den Satz sie beobachtet den Einbrecher mit dem Fernglas

Abb. 1 zeigt einen solchen Graphen nach Beendigung des Parsvorgangs für den Beispielsatz „sie beobachtet den Einbrecher mit dem Fernglas“.

Die dabei verwendete, ambige Grammatik ist:

  1. SDP VP
  2. VPVbar
  3. VPVP PP
  4. VbarVtrans DP
  5. DPDet NP
  6. DPPron
  7. NPNbar
  8. NbarN
  9. NbarNbar PP
  10. PPP DP

Für den Beispielsatz erlaubt sie zwei verschiedene syntaktische Analysen. Aufgrund dieser Ambiguität hat sie nicht die LR(k)-Eigenschaft, führt also zu Mehrfacheinträgen in der Parstabelle.

Jeder Graphknoten hat einen eindeutigen Knotennamen (dieser beginnt mit „n“). Die roten Knoten enthalten Elemente aus dem Vokabular der Grammatik, also einerseits Nichtterminalsymbole und andererseits Wörter (Terminalsymbole). Die blauen Knoten dagegen enthalten Zustandsnummern der LR-Parstabelle. Man kann schön sehen, wie im Knoten n21 zwei bis dahin verschiedene Analysen bei der Integration der Präposition „mit“ wieder zusammenlaufen. Die nachfolgende Präpositionalphrase „mit dem Fernglas“ wird also nur einmal analysiert.

Parsalgorithmus

Wie beim LR(k)-Verfahren besteht der Parsprozess aus eine Reihe von tabellengesteuerten Shift- bzw. Reduktionsschritten. Beim Shift-Schritt wird ein Wort aus der Eingabe entfernt und auf den Stapel gelegt. Bei einem Reduktionsschritt wird die rechte Seite (γ) einer Produktionsregel A → γ, die in umgekehrter Reihenfolge auf dem Stapel liegt, durch die linke Regelseite (A) ersetzt. Im Unterschied zum LR(k)-Verfahren wird der reduzierte Teil jedoch nicht aus dem Stapel gelöscht, sondern bleibt erhalten. Dies bedeutet, dass der Stapel monoton wächst.

Der Vorgang wird durch die GLR(k)-Tabelle gesteuert. Zu jedem Zeitpunkt befindet sich der Parser in einem definierten Zustand (vgl. Kellerautomat). Mit diesem Zustand und dem/den nächsten Symbol(en) der Eingabe wird die GLR(k)-Tabelle konsultiert und die nächsten Operationen (shift, reduce, accept, error) und der Folgezustand bestimmt. Im Fall von Mehrfacheinträgen (Konflikten) werden diese quasi parallel verfolgt. Nachfolgende Shift-Operationen können diese parallelen Verarbeitungsstränge jedoch wieder synchronisieren; dies ist wichtig für die Zeitkomplexität des Verfahrens.

Beziehung zu anderen Parsverfahren

Der Tomita-Parser ist ein vorkompilierter Chart-Parser.

Literatur

  • Dick Grune, Jacobs, Ceriel J.H: Parsing Techniques. Springer Science+Business Media 2008, ISBN 978-0-387-20248-8
  • Masaru Tomita: LR parsers for natural languages. In: Coling 1984: 10th International Conference on Computational Linguistics. 1984, S. 354–357.
  • Masaru Tomita: An efficient context-free parsing algorithm for natural languages. In: International Joint Conference on Artificial Intelligence. 1985, S. 756–764.

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Tomita — bezeichnet: eine Stadt in der Präfektur Aichi: Tomita (Aichi) (heute: Nagoya) ein Dorf in der Präfektur Fukushima: Tomita (Fukushima) (heute: Kōriyama) ein Dorf in der Präfektur Tochigi: Tomita (Tochigi) (heute: Ashikaga) ein Lehen: Tomita (Han)… …   Deutsch Wikipedia

  • Chart-Parser — Ein Chart Parser, auch Chartparser geschrieben, ist ein Parser für kontextfreie Grammatiken, der sich Teilanalysen (Teilkonstituenten) in einer Tabelle (Chart) merkt. Diese Zwischenspeicherung und Wiederverwendung von Teilanalysen verbessert die… …   Deutsch Wikipedia

  • GLR parser — In computer science, a GLR parser ( Generalized Left to right Rightmost derivation parser ) is an extension of an LR parser algorithm to handle nondeterministic and ambiguous grammars. First described in a 1986 paper by Masaru Tomita, it has also …   Wikipedia

  • Masaru Tomita — Born December 28, 1957 (1957 12 28) (age 53) Nationality Japan …   Wikipedia

  • Chart Parsing — Ein Chartparser ist ein Parser für kontextfreie Grammatiken, der sich Teilanalysen (Teilkonstituenten) in einer Tabelle (Chart) merkt. Diese Zwischenspeicherung und Wiederverwendung von Teilanalysen verbessert die Effizienz erheblich und macht… …   Deutsch Wikipedia

  • GNU Bison — Maintainer Akim Demaille, Joel E. Denny, Paul Eggert Entwickler GNU Projekt Aktuelle Version 2.5 (14. Mai 2011) Betriebssystem Unix ähnliche …   Deutsch Wikipedia

  • GLR — steht für: Central Mountain Air, kanadische Fluggesellschaft (ICAO Code) Gaylord (Michigan) in den Vereinigten Staaten (IATA Code des Flughafens) Generalized LR(k), ein Parseverfahren für kontextfreie Grammatiken; siehe Tomita Parser Greater… …   Deutsch Wikipedia

  • Memoization — Not to be confused with Memorization. In computing, memoization is an optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously processed inputs.… …   Wikipedia

  • Top-down parsing — is a strategy of analyzing unknown data relationships by hypothesizing general parse tree structures and then considering whether the known fundamental structures are compatible with the hypothesis. It occurs in the analysis of both natural… …   Wikipedia

  • List of algorithms — The following is a list of the algorithms described in Wikipedia. See also the list of data structures, list of algorithm general topics and list of terms relating to algorithms and data structures.If you intend to describe a new algorithm,… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”