Flaches Parsing mit endlichen Automaten Referat und Implementierung Jutta Jäger 24.06.2002 Übersicht Einführung Vorhandene Systeme/Ansätze Implementierung Partielles oder Flaches Parsing Anwendungsbereiche z.B. Information Retrieval oder Information Extraction Implementierung durch endliche Automaten bzw. Reguläre Ausdrücke statt kontextfreier Grammatiken Eigenschaften Keine Baumstrukturen, sondern inkrementelles Erkennen von Teilstrukturen Keine Rekursion Eigenschaften Robust Schnell Leichtes Entwerfen und Anpassen des Parsers Keine 100%ige Abdeckung Reguläre Ausdrücke Symbole Konkatenation Vereinigung Sternbildung usw. a ab a|b a* Weitere Operatoren Rechter und linker Kontext A => L _ R Left-to right, longest match mark up A @ B ... C Perl: andere Notation Vorgehensweisen Tokenizierung POS-Tagging Mehrere einfache Finite State Transducer werden aufeinander bezogen Von einfachen Strukturen (NPs oder NounGroups) zu syntaktischen Rollen (z.B. Subjekt) Abney – Finite State Cascades Phrasen auf einem höheren Level werden durch Phrasen aus einem niedrigeren Level zusammengesetzt Es werden keine Tags in den Text gesetzt, sondern die erkannten Sequenzen des Inputs werden durch ein Label ersetzt Philosophie Easy-first parsing Islands of certainty Containment of ambiguity Grefenstette – Finite State Filters Noun- und Verb-Groups HeadNouns werden markiert Syntaktische Funktionen werden herausgefiltert Implementierung fürs Deutsche Perl 2 Ansätze: Parsre.pl Subj_filter.pl Ansatz 1 (Parsre.pl) Freier, nicht tokenisierter oder getaggter Text NP-Detector Reguläre Ausdrücke beschreiben einfache NPs Alles, was matcht, wird ausgegeben (Filter) Reguläre Ausdrücke Geschlossene Wortartenklassen aus dem Negra-Korpus => vorkompilierte Pattern z.B. $ART = qr/das|dem|den|der|des|die|einem|einen |einer|eines|eine|ein/; Regulärer Ausdruck für NP Vereinfacht: ($ART | $PPOSAT)? ($ADJE (\, | ([\n ] $KON)) ? )* $SUBST Evaluierung Ersten 100 Sätze aus Negra-Korpus Im Korpus getaggte NPs: 349 Durch den regulären Ausdruck erkannte: 395 Ansatz 2 – Mark up Nutzen der POS-Tags Regulärer Ausdruck für NPs NP-Tags werden eingefügt PP-Tags werden eingefügt Diskontinuität Mit Mark-up kann man diskontinuierliche Konstituenten (z.B. Prädikate) nicht erfassen, da Einfügen von Klammern oder Tags unmöglich Im Deutschen sind viele Prädikate diskontinuierlich, z.B. Passivkonstruktionen, Perfekt, Verbzusatz Lösung: Filter (?) Ansatz 2 – Filter (Subj_filter.pl) Erste NP vor einem finiten Verb => Subjekt ABER: Im Deutschen sind verschiedene Satzbaupläne möglich, z.B. Adverb – finites Verb – NP (=SUBJ) Kongruenzprüfung nötig Regulärer Ausdruck für Subjekt und Prädikat NP (=SUBJ) (NP|PP|ADV)* VVFIN (=PRÄD) ODER NP (=SUBJ) (NP|PP|ADV)* VAFIN (=PRÄD) (NP|PP|ADV)* (ADJD|VVPP) (=PRÄD) unvollständig, da Testcharakter Diskontinuität II Perl bietet Möglichkeit, Teile einer RegEx zu speichern Keine Möglichkeit, komplexe Teilausdrücke zu negieren, etwa [^(ADJD|VVPP) ], um auf diese Art Konstituenten zu „überspringen“, also: positive und fast zwangsläufig unvollständige Aufzählung Evaluierung NP/PP-Erkennung im Negra-Korpus getaggte NPs und PPs 349 davon PPs 144 durch die Transducer getaggte NPs 321 davon PPs 120 Resümee Verschachtelte Strukturen sind durch einen Regulären Ausdruck nicht zu beschreiben z.B. eine PP innerhalb einer NP [NP die [PP vom Baum ] gefallene Katze] diskontinuierliche Konstituenten sind problematisch, Verben bzw. Prädikate sind im Deutschen sehr häufig diskontinuierlich Für das Herausfiltern von „Chunks“ sehr geeignet, aber kein komplettes Parsen Links & Literatur Steven Abney, Partial Parsing via Finite State Cascades http://citeseer.nj.nec.com/abney96partial.html Gregory Grefenstette, Light Parsing as Finite State Filtering http://citeseer.nj.nec.com/grefenstette96light.html Negra-Korpus http://www.coli.uni-sb.de/sfb378/negra-corpus/ Xerox-Seite http://www.xrce.xerox.com/competencies/contentanalysis/fsCompiler/home.en.html