Programmiertechniken in der Computerlinguistik II

Größe: px
Ab Seite anzeigen:

Download "Programmiertechniken in der Computerlinguistik II"

Transkript

1 Programmiertechniken in der Computerlinguistik II Universität Zürich Institut für Computerlinguistik Sommersemester 2003 Dozent Simon Clematide Übungsbetreuung Marc Staudacher Web

2 Programmiertechniken in der Computerlinguistik II Konzept-, Prädikats-, Operatoren- und Zeichenindex Legende: Ein Verweis wie 4.3 meint die 3. Folie des 4. Kapitels. Inhaltsverzeichnis Sommersemester Organisatorisches Tokenizer Endliche Automaten Endliche Automaten Techniken Reguläre Mustererkennung Komposition und Differenzlisten Morphologie und Buchstabenbäume Left-Corner-Parsing Dynamische Prädikate Charts Earley-Parser Charts: Subsumption Merkmalstrukturen Merkmalstrukturen in PROLOG Grammatikentwicklung First-Argument-Indexing Last-Call-Optimization /2: 4.3 :/2: 4.3 ::/2: 4.4 [^ ]: 5.4 [ ]: 5.4 ^: 5.6 $: 5.6 +: 5.8 *: 5.8 {n,m}: 5.0f. abolish/: 9.7 Akzeptor: DEA 3.6f. append_dl/4: 6.9f. asserta/: 9.4 assertz/: 9.5 Bottom-Up Parsing: 8.3 Chart: als Graph: 0.4 als Tabelle: 0.5 clause/2: 9.8 DCG: Morphologie: 7.5f. Effizienz: Differenzlisten: 6.7f. Buchstabenbäume: 7.4f. First-Argument-Indexing: 6. Last-Call-Optimization: 7. Exception-Handling:.5f. foreach/2:. Fundamentalregel:.2f. Gepunktete Regeln: 0.0f. GULP: 4.3 Kanten: aktiv: 0.0 inaktiv: 0.9 Kantensubsumption: 2.9; 2. Left Corner Relation: 8.5 Link-Relation: 8.5 Look-Ahead:.8f. Merkmalstruktur: als Graph: 3.5 als Funktion: 3.6 offene Liste: 4.8 Termschemata: 4.0 Parsing: TopDown mit WFST: 0.4 Pfad: 3:4f. koreferent: 3.9 retract/: 9.6 Rekursive Übergangsnetzwerke: 4.2f. Substitutionsoperator: 5. subsumes_chk/2: 2.9 Termsubsumption: 2.7 Tilgungsregeln: Left-Corner-Parser: 8.6f. Earley-Parser: Übung 8 Top Down Parsing: 8.4,2.5f. Transduktoren: 4.7f. Unifikation: Merkmalstrukturen: 3.0 Vollformenlexikon: 7.3 WFST: 0.8f.

3 Aufbau der Lehrveranstaltung (2 DL) Übungen Computerlinguistische Anwendungen in PROLOG Elementare und weiterführende Verfahren zur Analyse von Zeichenketten, Wörtern, Phrasen, Sätzen Endliche Automaten, Morphologie, Lexikon, Syntaxanalyse, Merkmalstrukturen Weiterführendere und effiziente Programmiertechniken Exception-Handling, Dynamische Prädikate, Differenzlisten, offene Listen, First- Argument-Indexing, Last-Call-Optimization Teilakzessprüfung PCL II (bzw. APS-Prüfung PCL II) schriftliche Prüfung, Do , 3.5-4h im KOL-I-32 Organisatorisches Programmieren lernen ohne selbst am Computer zu arbeiten ist illusorisch! Übungsaufgaben normalerweise wöchentlich (Aufwand mindestens 2h pro Woche) 2 betreute Übungsdoppelstunden pro Woche zum Erarbeiten oder Besprechen Schriftliche Abgabe (mit kommentierter Rückgabe) (Programmtext bitte direkt als Mail, nicht als Datei angehängt!) Subject: Prologkurs Uebung To: staudacher@cl.unizh.ch.z Teilbesprechungen jeweils in der nächsten Stunde Abgabe von Musterlösungenh Organisatorisches 2 Lösen der Übungsaufgaben Folien und Übungsblätter Offizielle Übungsstunde (Prolog unter Windows 95) PC-Schulungsraum, Rämistr.74, Raum F 02 Montag 0-2h Dienstag 4-6h Weitere Übungsmöglichkeiten (Prolog unter MacOS X) In den IFI-Übungsräumen wird es möglich sein, Prolog zu benutzen, wenn die Räume nicht belegt sind! (normalerweise ab 20h bis 22h, sowie Mi/Do 0-2h; Zeiten sind angeschlagen vor Ort). Wichtig: UniAccess Login und Passwort verfügbar haben! IFI, Räume 27-G-25/28 Rämistr. 74, Raum D 07 Die Folien und Übungsblätter sind im WWW verfügbar. Adresse: Format: PDF-Dateien für Adobe Acrobat Programm zum Lesen der PDF-Dateien (Adobe Acrobat Reader 4; bei Version 3 z.t. Probleme beim Betrachten/Drucken) auf der SICStus-CD-ROM (jeweils Unterverzeichnis READER) Neueste Version ab WWW: Für alle ohne Drucker Kopiervorlage des Skripts befindet sich in IFI-Bibliothek beim CL-Gestell Übungs- und Lösungsblätter werden in Stunde verteilt. Wer will, bitte in Liste eintragen und nächstens CHF 2. mitbringen Organisatorisches 3 Organisatorisches 4

4 Tokenizer Motivation Übersicht Was sind Tokenizer? Der Tokenizer von Covington Aufrufdiagramm Definition und Arbeitsweise der einzelnen Prädikate Programmiertechnik Look-Ahead Wort- und Satzgrenzen erkennen Tokenisieren von Dateien Probleme mit Dateiende und get0/ Auffangen von Exceptions mit on_exception/3 Programmiertechnik Exception-Handling Bisher: Linguistische Datenverarbeitung mit Prolog-Termen Einlesen von Text einzelne ASCII-Zeichen Prolog-Terme einlesen Mangel?- phrase(s, [the,cat,sleeps]). yes?- get(x). : a X = 97? yes?- read(x). : [a,cat,sleeps]. X = [a,cat,sleeps] yes Prolog hat keine vorgefertigte Eingabe-Möglichkeit, wo einfach ein Satz wie "The cat sleeps" zur Verarbeitung eingetippt bzw. eingelesen werden kann. Tokenizer Tokenizer 2 Zweck und Funktion eines Tokenizers Ein einfacher Tokenizer Wie sollen Benutzende einen Satz eingeben? : These are words. [these, are, words,'.'] Praktisch für Benutzende Praktisch zum Programmieren Ein Tokenizer findet sich in Covington (994: Anhang B) Aufruf des Tokenizers durch read_atomics/ liest eine Zeile voll Buchstaben von der Standardeingabe ein gibt Liste der Atome der tokenisierten Zeile als Resultat zurück Grossbuchstaben werden in Kleinbuchstaben verwandelt Ein Tokenizer konsumiert als Eingabe eine Sequenz von Zeichen (Eingabestrom) gruppiert die Eingabezeichen zu sinnvollen Einheiten (Token) gewisse Eingabezeichen können dabei auch modifiziert werden produziert als Ausgabe die Sequenz der Token (Liste) Eingabe über Tastatur?- read_atomics(eingabe). : These are words. Eingabe = [these,are,words,'.']. Abschluss durch RETURN Tokenizer 3 Tokenizer 4

5 Aufrufdiagramm des Tokenizers Aufrufdiagramme (call graphs) Ein Prädikat ruft die Prädikate auf, zu denen ein Pfeil führt Eingebaute oder Standard-Prädikate werden meist weggelassen Rekursive Prädikate sind durch Schlaufen verbunden Haupt- Prädikat read_atomics/ read_char/2 char_type/3 Tokenizer 5 complete_line/3 complete_word/5 Aufrufdiagramm der Tokenizer Prädikate Zeichen klassifizieren mit char_type/3 Das Hilfsprädikat char_type/3 klassifiziert Zeichen end Zeilenende blank Leerzeichen alpha alphanumerische Zeichen, d.h. Buchstaben und Ziffern special übrige Zeichen Zudem liefert char_type/3 das Zeichen als Kleinbuchstaben zurück.?- char_type(65, Type, Char). Type = alpha, Char = 97 Tokenizer 6 65 A 66 B 96 ` 97 a 98 b ASCII-Codes char_type/3 read_atomics/ und read_char/2 char_type(0, end, 0) :-!. % UNIX end of line mark char_type(3, end, 3) :-!. % Macintosh/DOS end of line mark char_type(-, end, -) :-!. % get0 end of file code char_type(code, blank, 32) :- % blanks, other control codes Code =< 32,!. char_type(code, alpha, Code) :- % digits 48 =< Code, Code =< 57,!. char_type(code, alpha, Code) :- % lower-case letters 97 =< Code, Code =< 22,!. char_type(code, alpha, NewCode) :- % upper-case letters 65 =< Code, Code =< 90,!, NewCode is Code % translate to lower case char_type(code, special, Code). % anything else read_atomics/: Erstes Zeichen (look ahead) einlesen und dann den Rest verarbeiten lassen Die Vorausschau von einem Zeichen brauchts zum Entscheid, ob das aktuelle Zeichen das letzte eines Wort-Tokens ist. read_atomics(atomics) :- read_char(firstchar, FirstType), complete_line(firstchar, FirstType, Atomics). read_char/2: Ein Zeichen einlesen und klassifizieren read_char(char, Type) :- get0(enteredchar), char_type(enteredchar, Type, Char). Tokenizer 7 Tokenizer 8

6 complete_line/3 complete_line/3 besitzt folgende Argumente das look-ahead-zeichen: Integer dessen Typ (als Fallunterscheidung): Atom falls end: stoppen, da Zeile fertig eingelesen ist! falls blank: überspringen! falls alpha: Zeichen zum Wort-Token kompletieren! falls special: Zeichen zu eigenem Token machen! Ergebnisliste aus den einzelnen Tokens: Liste atomarer Terme complete_line/3 complete_line(_, end, []) :-!. complete_line(_, blank, Atomics) :-!, read_atomics(atomics). complete_line(char, special, [A Atomics]) :-!, name(a, [Char]), read_atomics(atomics). Rote oder grüne Cuts? Unter der Voraussetzung, dass das 2. Argument beim Aufruf von complete_line/3 immer instanziiert ist: grün!?- complete_line(97, alpha, Result). : bba, baba. Result = [abba, ',', baba, '.']. Beispiel-Anfrage 96 ` 97 a 98 b 99 c ASCII-Codes complete_line(firstchar, alpha, [A Atomics]) :- complete_word(firstchar, alpha, Word, NextChar, NextType), name(a, Word), complete_line(nextchar, NextType, Atomics). Tokenizer 9 Tokenizer 0 Spezifikation von complete_word/5 Implementation von complete_word/5 complete_word/5 besitzt folgende Argumente das look-ahead-zeichen dessen Typ 58 : 59 ; eine Liste, bestehend aus den ASCII-Codes 60 < der Zeichen, die zum gegenwärtigen Wort gehören dem nächstfolgenden Zeichen, das nicht zum Wort gehört, dessen Typ 96 ` 97 a 98 b 99 c 00 d 0 e ASCII-Codes?- complete_word(97, alpha, List, FollowChar, FollowType). : bba; List = [97, 98, 98, 97], FollowChar = 59, FollowType = special Rekursionsschritt Look-ahead ist alphanumerisch! FollowChar ist das zukünftige Look-ahead-Zeichen, das. Zeichen nach dem Wort! complete_word(firstchar, alpha, [FirstChar List], FollowChar, FollowType) :-!, % red Cut read_char(nextchar, NextType), complete_word(nextchar, NextType, List, FollowChar, FollowType). Abbruchbedingung Look-ahead ist nicht alphanumerisch! Es wird nichts mehr konsumiert, nur noch Wort-Zeichen-Liste abgeschlossen! Zukünftiger Look-Ahead wird auf aktuellen gesetzt! complete_word(firstchar, FirstType, [], FirstChar, FirstType). Tokenizer Tokenizer 2

7 Schwierigere Fälle Satzgrenzen erkennen Welche Zeichen gehören zu welchem Token? Die Grille zirpt. Die Grille zirpt immer um 0. Die Grille zirpt immer am 0. Okt. Scarlett O Hara sagte Schau mir in die Augen, Kleines und erhielt dafür ca. Fr I said don t Doppelklick Bezeichnet ein Punkt das Ende eines Satzes? It was due Friday by 5 p.m. Saturday would be too late. She has an appointment at 5 p.m. Saturday to get her car fixed. Lösungsansätze»Jeder Punkt ist ein Satzende!«8-45% Fehlerquote (Englisch) Abkürzungswörterbuch, Regeln mit regulären Ausdrücken < 2% Training anhand Korpus < 2% Lösungsansatz mit Neuronalem Netz Palmer/Hearst (994) (mit zusammenfassendem Einstieg ins Problem) Tokenizer 3 Tokenizer 4 Zeilenweises Tokenisieren von Dateien Ausnahmefall: Lesen über Dateiende Erste Idee Datei besteht aus Folge von Zeilen Einlesen aller Zeilen durch all-solution-prädikat Aber naive_tokenize_file(file, Lines) :- see(file), findall(line, (repeat,read_atomics(line)), Lines), seen. Wegen Determinismus von read_atomics/ muss repeat/0 verwendet werden!?- naive_tokenize_file('gedicht.txt', Lines).! Existence error in get0/! attempt to read past end of stream! goal: get0(_73) Problem Dateiende darf nur einmal gelesen werden mit get0/! Bei einem weiteren Versuch wird eine exception ausgelöst!?- tell('leer.txt'),told. yes?- see('leer.txt'). yes?- get0(c). C = - yes?- get0(c).! Existence error in get0/! attempt to read past end of stream! goal: get0(_73) Tokenizer 5 Tokenizer 6

8 Ausnahmefälle behandeln Zeilenweise Tokenisieren von Dateien Das Metaprädikat catch(goal,pattern,handler) kann Ausnahmefälle auffangen. catch/3 ruft Goal auf Falls Goal gelingt oder scheitert, macht catch/3 dasselbe. Falls beim Beweis von Goal eine Exception E ausgelöst wird, passiert folgendes: Falls E mit Pattern unifiziert werden kann, wird als neues Ziel Handler aufgerufen. Falls E nicht mit Pattern unifiziert werden kann, wird E weiter hochgegeben. exceptions können beliebige Terme sein! exception für das Lesen über das Dateiende (leicht systemabhängig): existence_error(_,_,_,_,past_end_of_stream) Idee Tokenizer soll scheitern, falls über Dateiende gelesen wird safe_read_atomics/ liest via Backtracking alle Zeilen safe_read_atomics(atomics) :- catch( (repeat, read_atomics(atomics)), % Goal existence_error(_,_,_,_,past_end_of_stream), % Pattern fail % Handler ). tokenize_file/2 liest alle Zeilen ein tokenize_file(file, Lines) :- see(file), findall(line, safe_read_atomics(line), Lines), seen. Tokenizer 7 Tokenizer 8 Literaturhinweise I Literaturhinweise II Tokenizer Michael A. Covington (994): Natural Language Processing for Prolog Programmers. Prentice Hall. Eine verbesserte Version mit etwas anderem Output findet sich unter Palmer, David D. (2000): Tokenisation and Sentence Segmentation. In: Handbook of natural language processing, edited by R. Dale, H. Moisl and H. Somers. New York. S. -35 Satzgrenzenerkennung David D. Palmer/Marti A. Hearst (994): Adaptive Sentence Boundary Disambiguation. In: Proceedings of the ANLP 94, Stuttgart. Programmieren mit Exceptions SICStus Prolog Handbuch: Dokumentation zu den folgenden Prädikaten für das Auffangen und Auslösen von Ausnahmen: catch/3 throw/ Tokenizer 9 Tokenizer 20

9 Endliche Automaten (EA) Motivation Übersicht Endliche Automaten als Berechnungsmodell Beispiel-Automat: Der Lachautomat Verabeiten von Eingabeketten Akzeptieren von Eingabeketten Mengentheoretische Formalisierung Endliche Automaten in Prolog Nicht-Deterministische Endliche Automaten Sprachen von Endlichen Automaten Reguläre Ausdrücke Literatur Endliche Automaten (Finite-State Automata) sind mathematisch wohl-definiert und theoretisch aufgearbeitet Informatik: Grundlage der Berechenbarkeitstheorie Linguistik: Sind Teile der menschlichen Sprache mit Endlichen Automaten beschreibbar? Struktur von Wörtern, Sätzen, Dialogen leicht implementierbar und effizient ausführbar auf Computer in unterschiedlichsten Gebieten anwendbar Sprachverarbeitung: Tokenizer, Morphologie, Lexikon, Informationsextraktion, Phrasenerkennung, (Partielle) syntaktische Analyse Eigentliches Revival der sog. finite state methods in NLP feststellbar! Informatik: Compilertechnik, Kommunikationsprotokolle, Prozessmodellierung, abstrakte Maschinenmodelle! Endliche Automaten Endliche Automaten 2 Beispiel: Ein Lachautomat Eingabe des Automaten Graphische Repräsentation Zustandsübergangdiagramm (transition diagram) h a! h Der Lachautomat erhält eine Zeichenkette als Eingabe: h a! h Was macht der Automat damit? h a h a! Endliche Automaten 3 Endliche Automaten 4

10 Beginn der Verarbeitung Ein einzelner Verarbeitungsschritt Zu Beginn der Automat ist im Startzustand er schaut auf das erste Zeichen der Eingabe Der Automat nimmt jenen Übergang, der vom aktuellen Zustand ausgeht und mit jenem Zeichen in der Eingabekette beschriftet ist, auf das der Automat gerade schaut. h a! h h a h a! h a! h h a h a! Endliche Automaten 5 Endliche Automaten 6 Ein einzelner Verarbeitungsschritt h a! h Beim Nehmen eines Übergangs springt der Automat in einen neuen Zustand und schaut auf das nächste Zeichen in der Eingabekette h a! h Endliche Automaten 7 h a h a! h a h a! Abarbeiten der Eingabe Der Automat konsumiert so Zeichen um Zeichen. h a! h h a! Endliche Automaten 8 h a h a! h h a h a! h a! h h a h a!

11 Abarbeiten der Eingabe Ende der Verarbeitung I Der Automat konsumiert Zeichen um Zeichen, bis auch das letzte Zeichen der Eingabe konsumiert wurde. h a! h h a h a! h a! h h a h a! Wenn die Eingabe vollständig konsumiert ist, gibt es zwei Möglichkeiten der aktuelle Zustand ist ein Endzustand 4 Automat hat die Eingabe akzeptiert der aktuelle Zustand ist kein Endzustand Automat hat die Eingabe nicht akzeptiert Ein Automat kann mehrere Endzustände besitzen! 3 Endliche Automaten 9 Endliche Automaten 0 Ende der Verarbeitung II Akzeptoren Kommt der Automat nicht weiter, weil kein Übergang zum aktuellen Eingabezeichen passt, ist die Eingabe ebenfalls nicht akzeptiert. Der Lachautomat ist ein Akzeptor. Eingabe: Zeichenkette Ausgabe:»akzeptiert«oder»nicht akzeptiert«h a! h h a i! ha! haha! hahaha! hahahaha! Ausgabe: Ja hi! aha! ah! hahah! ha Ausgabe: Nein h a! h Endliche Automaten Endliche Automaten 2

12 Bestandteile Mengentheoretische Definition Bestandteile eines Endlichen Automaten Zustände States h i h a! 2 3 4! a Alphabet Alphabet a 2 3 h h 2 h 3 2! 3 4 Übergänge Transitions Startzustand Start State 4 Endzustände Final States Ein Endlicher Automat ist ein Fünf-Tupel S, Σ, δ, s, F Zustände h i! a Alphabet a 2 3 h 2 h 3 2! 3 4 Übergänge Startzustand endliche, nicht leere Menge von Zuständen S Eingabe-Alphabet Σ partielle Übergangsfunktion δ: (S Σ ) S Startzustand s S Menge von Endzuständen F S 4 Endzustände Endliche Automaten 3 Endliche Automaten 4 Mengentheoretischer Lachautomat EA-Akzeptor in Prolog I h a! Die Struktur h a! h h Dieser Automat sei ein 5-Tupel S, Σ, δ, s, F mit S = {, 2, 3, 4} Σ = {a, i, h,!} δ = {, h, 2, 2, a, 3, 3, h, 2, 3,!, 4 } s = F = {4} start(). delta(, h, 2). delta(2, a, 3). delta(3, h, 2). delta(3,!, 4). h 2 final(4). a 3 h 4 2 Startzustand 3 2! 3 4 Übergänge Endzustände Endliche Automaten 5 Endliche Automaten 6

13 EA-Akzeptor in Prolog II Die Abarbeitung Initialisierung init(string) :- start(startstate), accept(string, StartState). Abarbeitung der Eingabekette accept([], State) :- final(state). accept([char Chars], State) :- delta(state, Char, NextState), accept(chars, NextState). h a! h (Deterministische) Endliche Automaten Deterministische Endliche Automaten (DEA) Deterministic Finite-State Automata (DFA) Von einem Zustand gehen nur Übergänge mit verschiedenen Beschriftungen aus. Jeder Übergang konsumiert ein Zeichen der Eingabekette. Es kommt immer höchstens ein Übergang in Frage. h a! h Endliche Automaten 7 Endliche Automaten 8 Nicht-deterministische Endliche Automaten Sprache Endlicher Automaten Nicht-deterministische Endliche Automaten (NEA) Non-deterministic Finite-State Automata (NFA) Mehrere gleich beschriftete Übergänge von einem Zustand möglich ε-übergänge (epsilon) möglich, bei denen kein Eingabesymbol konsumiert wird Mehrere Übergänge können gewählt werden. Trotzdem: Jeder NEA kann in einen DEA konvertiert werden! Definition: Sprache eines Endlichen Automaten Die Menge aller Eingabeketten, die von einem Endlichen Automaten A akzeptiert werden, heisst Sprache des Automaten A, meist geschrieben als L( A ). L(Lachautomat) = {ha!, haha!, hahaha!, hahahaha!, } h a! h a! a h a! ε h Die Sprachen Endlicher Automaten können unendlich viele Elemente enthalten! Endliche Automaten 9 Endliche Automaten 20

14 Endliche Automaten und Reguläre Ausdrücke Lachen als Regulärer Ausdruck Die Sprachen, welche mit Endlichen Automaten erkannt werden können, heissen Regulären Sprachen. Reguläre Sprachen können auch durch Reguläre Ausdrücke beschrieben werden: a 2 Einzelnes Symbol des Alphabets: a a 2 3 ε Repetition: (ab)+ b a 2 b Alternative: (a b) a 2 3 ε Optionalität: (ab)? b a b 2 3 Verkettung: ab a 2 ε Optionale Repetition: (ab)* b 3 Die Sprache, welche unser Lachautomat akzeptiert, kann als Regulärer Ausdruck spezifiziert werden. Achtung: Gewisse Diagramme lassen sich nicht : übertragen! Unterschiedliche Umformungen sind oft möglich! h a! a h(ah)*a! h a! ha(ha)*! h a! ε h (ha)+! Endliche Automaten 2 Endliche Automaten 22 Endliche Automaten Generatoren Literaturhinweise Aus Regulären Ausdrücken lassen sich automatisch Endliche Automaten generieren, die die Sprache akzeptieren, welche die Regulären Ausdrücke beschreiben! In der Computerlinguistik oft verwendet, insbesondere für morphologische Verarbeitung Anwendungen in sogenannten lex-werkzeugen, die für lexikalische Analyse beim Kompilieren von Programmiersprachen verwendet werden Anwendung beim Verabeiten von Suchmustern (pattern matching), die als Reguläre Ausdrücke angegeben werden. Z.B. in den Programmiersprachen Perl, JavaScript, Java, grep-tools von UNIX, Suche in MS Word usw. Mathematische Grundlagen der Linguistik Barbara H. Partee/Alice ter Meulen/Robert E. Wall: Mathematical Methods in Linguistics. Dordrecht: Kluwer Academic Publishers, 990. Ausführliche, gut verständliche Einführung in Mengenlehre, Logik, Algebra, Lambda- Kalkül, Automatentheorie. Empfehlenswert. Verarbeitung Endlicher Automaten in Prolog Gerald Gazdar/Chris Mellis: Natural Language Processing in PROLOG: An Introduction to Computational Linguistics. Wokingham: Addison-Wesley, 989. Seiten 2-59 Programmierung einfacher computerlinguistischer Anwendungen mit EAs Wilhelm Weisweber: Prolog: Logische Programmierung in der Praxis: Thomson, 997. Seiten Verarbeitung von EAs und Umwandlung von NEA zu minimalen DEA Reguläre Ausdrücke, Endliche Automaten und Prolog Endliche Automaten 23 Endliche Automaten 24

15 Endliche Automaten Techniken Rekursive Transitionsnetzwerke (RTN) Übersicht Rekursive Übergangsnetzwerke (RTN) RTN in Prolog Syntaxanalyse mit RTN Erweiterungen gegenüber EA S: NP 2 VP 3 Erweiterungen von RTNs Vom Akzeptor zum Transducer Beispiel: Lachautomat-Transduktor Implementation von Transduktoren in Prolog Lesen oder Schreiben? Kompilieren oder Interpretieren? Kanten sind lexikalische Kategorien! Det, N, Pn, Vt, Vi Kanten sind selbst Automaten! Literatur: Phrasen: S, VP, NP VP: NP: Vt 2 Vi Det 2 NP N 3 3 Gazdar/Mellish (989: 59ff.) Matthews (998: 4ff.) Pn Endliche Automaten Techniken Endliche Automaten Techniken 2 RTNs in Prolog I RTN in Prolog II Lexikon Startzustände word(the, det). word(man, n). word(dog, n). word(peter, pn). word(smokes, vi). word(sees, vt). start(s, ). start(np, ). start(vp, ). Endzustände final(s, 3). final(np, 3). final(vp, 3). Die Übergänge delta(s,, net(np), 2). delta(s, 2, net(vp), 3). delta(vp,, vi, 3). delta(vp,, vt, 2). delta(vp, 2, net(np), 3). delta(np,, pn, 3). delta(np,, det, 2). delta(np, 2, n, 3). Initialisierung Eine Zeichenkette gilt von einem Netzwerk als akzeptiert, falls ausgehend vom Startzustand des Netzwerks die ganze Zeichenkette abgearbeitet werden kann. init(string, StartNet) :- init(string, StartNet, []). Jedes Netzwerk konsumiert soviel von der Eingabekette, wie es ausgehend von seinem Startzustand akzeptiert. init(string, Net, RestString) :- start(net, StartState), accept(string, Net, StartState, RestString). Endliche Automaten Techniken 3 Endliche Automaten Techniken 4

16 RTN in Prolog III Erweiterungen von RTNs Abarbeitung Fall : Lexikalischer Übergang konsumiert Wort! accept([word String], Net, State, RestString) :- word(word, Cat), delta(net, State, Cat, NextState), accept(string, Net, NextState, RestString). Fall 2: Hineinspringen in Subnetzwerk ohne Zeichenkonsum! accept(string, Net, State, RestString) :- delta(net, State, net(subnet), NextState), init(string, SubNet, RestStringSubNet), accept(reststringsubnet, Net, NextState, RestString). Fall 3: Abbruchbedingung: Endzustand des Netzwerks erreicht! accept(string, Net, State, String) :- final(net, State). Komplexe Kanten Komplexe lexikalische Kategorien spezifizieren die üblichen morphosyntaktischen Beschränkungen Komplexe Automatenbezeichungen erlauben kantenübergreifende Kongruenzbeziehungen Allerdings: Die Welt der EA haben wir damit zugunsten mächtigerer Ausdrucksmittel verlassen. Aber: Warum sollen wir uns künstlich beschränken? S( 2 numerus(n)): NP( kasus(k), numerus(n)): NP( kasus(nom), numerus(n)) Det( kasus(k), numerus(n)) 2 VP(numerus(N)) 3 N( kasus(k), numerus(n)) Pn( kasus(k), numerus(n)) 3 Endliche Automaten Techniken 5 Endliche Automaten Techniken 6 Endliche Automaten vs. Transduktoren Lach-Transduktor Akzeptierende EAs: Einfach, aber eingeschränkt nützlich! Einfache akzeptierende Endliche Automaten sind ein gutes Modell, aber für die Praxis oft zu eingeschränkt! Wer mehr wissen will als nur "ja" oder "nein", muss den Formalismus aufbrechen (siehe RTN). Transducer: Einfach, und erst noch nützlich! Endliche Automaten, die zusätzlich zum Lesen auch noch Schreiben können, werden oft als Transduktoren (transducer) bezeichnet. Transduktoren können die beim Verarbeiten durchlaufenen Schritte nach Aussen kommunizieren ohne den Formalismus aufzubrechen! Endliche Automaten Techniken 7 Scanner-Interpretation mit Lese- und Schreibband h:h a:i!:? h a h a! h:h Endliche Automaten Techniken 8 h i h i Leseband Schreibband

17 Transduktor in Prolog I Transduktor in Prolog II start(). h:h a:i!:? h:h delta(, h, h, 2). delta(2, a, i, 3). delta(3, h, h, 2). delta(3,!,?, 4). final(4). h:h 2 a:i 3 h:h 4 2 Startzustand!:? Übergänge Endzustände Transduktor Initialisierung init(input, Output) :- start(startstate), transduce(input, Output, StartState). h:h a:i!:? Abarbeitung transduce([], [], State) :- final(state). transduce([inchar InChars], [OutChar OutChars], State) :- delta(state, InChar, OutChar, NextState), transduce(inchars, OutChars, NextState). h:h Endliche Automaten Techniken 9 Endliche Automaten Techniken 0 Lesen oder Schreiben? Interpretieren oder kompilieren? Wir können in beide Richtungen schreiben bzw. lesen.?- init([h,a,'!'], R). R = [h,i,'?']; no?- init(r, [h,i,'?']). R = [h,a,'!']; no Wir können die Ein- und Ausgabesprache aufzählen lassen. Es gibt soviele Lösungen, wie die Sprache Elemente hat?- length(l, _), init(l, L2). L = [h,a,'!'] L2 = [h,i,'?']; L = [h,a,h,a,'!'] L2 = [h,i,h,i,'?'];... Automaten müssen nicht zwangsweise interpretiert werden! Automaten-Struktur und Abarbeitung lassen sich zu einem effizienteren, aber spezifischeren Programm verquicken! lachen(+ausgangszustand,?input,?output) lachen(in, Out) :- lachen(, In, Out). lachen(, [h RestIn], [h RestOut]) :- lachen(2, RestIn, RestOut). lachen(2, [a RestIn], [i RestOut]) :- lachen(3, RestIn, RestOut). lachen(3, [h RestIn], [h RestOut]) :- lachen(2, RestIn, RestOut). lachen(3, [!], [?]). Endliche Automaten Techniken Endliche Automaten Techniken 2

18 Reguläre Mustererkennung Mustererkennung Übersicht Suche von Zeichenketten mittels regulärer Ausdrücke Eine Anwendung von Endlicher Automaten Technik Reguläre Suchmuster: Zeichenketten Zeichenklassen Verankerungen Optionalität Disjunktion, Gruppierung Wiederholungen Suchstrategien: Eifrig und gierig! Ersetzen mit Regulären Ausdrücken Mustererkennung (pattern matching) in Zeichenketten In Textverarbeitungsprogrammen und vielen Programmiersprachen Hier: Mustererkennung wie es in Perl oder JavaScript.2 zur Verfügung steht Leider gibt es von Programm zu Programm kleinere und grössere Unterschiede in der konkreten Syntax. Die Prinzipen selbst sind allerdings stabil. Zeilenweise Mustererkennen Z.B. grep-tool: Zeige alle Zeilen, in denen ein Muster vorkommt Hier: Zeige das gefundene Muster in einer Zeichenkette Einmaliges vs. mehrfaches Erkennen Hier: Nur sogenannter first match Erweiterungen mit Ersetzen Mehrfaches Ersetzen bringt zusätzliche Schwierigkeiten Reguläre Mustererkennung Reguläre Mustererkennung 2 Zeichenketten Zeichenklassen Wörtliche Zeichen Zeichenketten (mit relevanter Gross-/Kleinschreibung) /Peter Pan/ matcht "Aber Peter Pan sagte:" /die/ matcht "Die Radieschen schmecken." Zeichen mit Sonderbedeutung Die Zeichen.?()[]{}*+ ^$\ müssen mit \ geschützt werden. Dem schützenden Steuerzeichen (escape char) zusammen mit dem geschützten Zeichen sagt man escape sequence. /z\.b\. nicht\?/ matcht "Wer mag das z.b. nicht?" Zeichen für Sonderzeichen Tabulator (\t), Zeilenvorschub (\n ), Wagenrücklauf (\r) /\ttabulatoren\t/ matcht "Viele Tabulatoren " Zeichenauswahl Zwischen eckigen Klammern stehen alternative Zeichen. /[dd]ie/ matcht "Die Birne" oder "das Radieschen" /[ ] h/ matcht "Das dauert 2 h." oder "Das dauert 3 h." Zeichenausschluss Das Dach in[^chars] schliesst alle nachfolgenden Zeichen aus. /[^aeiou][^aeiou]/ matcht "abba" Zeichenbereiche Der Bindestrich erlaubt Bereiche von nachfolgenden Zeichenkodes. /Kapitel [0-9]/ matcht "Kapitel 4.2" /[A-Z][A-Z][A-Z]/ matcht "laut BBC wurde" Reguläre Mustererkennung 3 Reguläre Mustererkennung 4

19 Vorgefertigte Zeichenklassen Verankerungen Wildcards: Vorgefertigte Zeichenklassen Der Punkt steht für ein einzelnes Zeichen ausser \n. /... / matcht "Aber der Frosch sprach" \d steht für eine Ziffer von 0 bis 9 /CH\-\d\d\d\d/ matcht "CH-8580 Amriswil" \s steht für Layoutzeichen (Leerzeichen, Zeilenende, Tabulatoren) /,\s/ matcht "Er kommt, ich weiss es." \w steht für ein alphanumerisches Zeichen oder Unterstrich Orientiert sich an Bezeichnern in Programmiersprachen wie C oder Perl /\w\w\w\w/ matcht "Was, 99$ kostet das?" Grosse Wildcards sind ausgeschlossene kleine: \D = [^\d], \S = [^\s], \W =[^\w] Verankerungen: Positionieren von Suchmustern Mit dem Dach suchen wir am Anfang der Zeichenkette /^die/ matcht "die Radieschen" Mit dem Dollar suchen wir am Ende der Zeichenkette /die$/ matcht "die Parodie" Mit \b suchen wir an einer Wortgrenze /\bdies\b/ matcht "Den Radieschen ist der 'dies academicus' egal." Als Wortgrenze zählen nebst allen Zeichen, die \W matchen noch Anfang und Ende von Zeichenketten. Mit \B suchen wir nicht an einer Wortgrenze. Praktisch: /\B...\b/ matcht Suffixe, /\b...\b/ matcht Präfixe Die Verankerungen selbst matchen keine Zeichen! Reguläre Mustererkennung 5 Reguläre Mustererkennung 6 Optionalität, Gruppierung, Disjunktion Wiederholungen Optionale Zeichen Das Fragezeichen macht das vorausgehende Zeichen optional: /Microsofts?/ matcht "Microsoft verschenkt Programme." Optionale Muster Dank Klammerung lassen sich reguläre Muster optional setzen: /(Bill )?Gates/ matcht "Gates als Wohltäter" Disjunktion Der senkrechte Strich ist ein Infixoperator, der alternative Ausdrücke trennt mit niedrigste Präzedenz. /das die/ matcht "Gates verärgert die Aktionäre." /, (die das der)/ matcht "Das Programm, das niemand kauft." +: Mindestens einmal repetieren Zeichen repetieren /\d+/ matcht "Er feiert den 25. Geburtstag." Um Muster zu repetieren, braucht es Klammern: /([Hh]a)+!/ matcht "Er: Hahahaha!" *: Beliebig oft wiederholen Beliebig heisst null oder mehr Mal... /x*/ matcht "" oder "xxx" /the*/ matcht "theee" /Ha(ha)*!/ matcht "Hahaha!" Achtung: Was matcht /h*/ in "d.h."? Reguläre Mustererkennung 7 Reguläre Mustererkennung 8

20 Matching-Strategien Wiederholungen II Matching ist mehrdeutig /h*/ matcht nicht bloss "d.h.", sondern noch ε vor und nach allen Buchstaben! D.H. "εd.h.", "dε.h.", "d.εh.", "d.hε.", "d.h.ε" Strategie I: Sei eifrig! (eager) Matche die am weitesten links stehende Zeichenkette! /h*/ matcht zuerst "εd.h." Matching ist mehrdeutig /a!*/ passt nicht bloss auf "ha!!!", sondern auch auf "ha!!!", "ha!!!" und "ha!!!" Strategie II: Sei gierig! (greedy) Matche soviele Zeichen wie möglich mit einem Ausdruck! /a!*/ matcht "ha!!!" {n}: Genau n Mal wiederholen! /\d{2}(-\d{3}){2}/ matcht "Immatrikulationsnummer " {min,max}: Mindestens min Mal und höchstens max Mal wiederholen /ha{3,6}!/ matcht "haaaa!", aber nicht "haa!" oder "haaaaaaa!" {n,}: Mindestens n Mal wiederholen! Beispiel: Suche Sätze, die mindestens 3 Komma enthalten! /(.*,.*){3,}/ Beispiel: Suche Sätze, die genau 3 Komma enthalten! /([^,]*,[^,]*){3}/ Reguläre Mustererkennung 9 Reguläre Mustererkennung 0 Ersetzen mit Regulären Ausdrücken Literatur Oft soll die gefundene Zeichenkette ersetzt werden. Ersetzungsoperator: s/suchmuster/ersetzungstext/ s/z\.?b\./zum Beispiel/ Oft sollen nur bestimmte Teile der gefundenen Zeichenkette modifiziert werden. Geklammerte Ausdrücke im Suchmuster stehen im Ersetzungstext als nummerierte Register ($n) zur Verfügung n-tes Register enthält Ausdruck mit n-ter öffnender Klammer (von links nach rechts) s/(\w+) \w+ (\w+)/$2 $/ modifiziert "das alte Haus" zu "Haus das" Beispiel "Satzendeerkennung" Einsetzen eines Leerzeichen vor Satzendpunkten s/(\. ["\(«'])/ $/ modfiziert "Er log. "Soso!" zu "Er log. "Soso!" Minitutorat mit Beispielen und Übungen zum Trainieren Literatur Friedl, Jeffrey E. F. (998): Reguläre Ausdrücke. "Bibel der Regulären Ausdrücke": Widmet sich umfassend dem Umgang mit Regulären Ausdrücken in verschiedenen UNIX-Tools und Perl. Jurafsky, D., Martin, J. (2000): Speech and Language Processing: An Introduction to Natural Language Processing. S Verständliche Einführung mit einigen praktischen Beispielen. Handbücher zur Programmiersprache PERL Hilfe zu MS Word Reguläre Mustererkennung Reguläre Mustererkennung 2

21 Komposition und Differenzlisten Komposition als Verkettung Übersicht Morphologie: Fallbeispiel Komposition Komposition als Listenverkettung Stämme und ihre Information Komposition und Vererbung von Information Effizienzprobleme mit append/3 Differenzlisten Offene Listen + Zugriff auf Restliste Verkettung von Differenzlisten: append_dl/3 Implizites Verketten durch Variablenbindung Differenzlisten sind wichtigste Datenstruktur in Prolog für effiziente Verarbeitung sequentieller Daten! arbeit+s+zeit Kompositionsanalyse Simple Idee zur Bildung und Analyse von Komposita Listen von Buchstabenatomen repräsentieren Einfache Worte Allfällige Fugen (z.b. s, en, n) Komposition ist Listenverkettung, sowohl für Analyse wie Synthese [a,r,b,e,i,t]+[s]+[z,e,i,t] Repräsentation in PROLOG?- append([b,r,o,t], N, [b,r,o,t,z,e,i,t]). N = [z,e,i,t]?- append([b,r,o,t], [z,e,i,t], K). K = [b,r,o,t,z,e,i,t] Komposition und Differenzlisten Komposition und Differenzlisten 2 n_stamm/4 und n_comp/4 append/3 Nominalstämme: n_stamm/4 i. Zeichenfolge ii. Flexionsklasse iii. Genus iv. Fugenforderung Nominalkomposita: n_comp/4 i. Zeichenfolge ii. Flexionsklasse des Kompositum iii. Genus des Kompositum iv. Fugenforderung des Kompositum n_stamm([a,r,b,e,i,t],, f, [s]). n_stamm([z,e,i,t],, f, []). n_stamm([b,r,o,t],, n, []). n_stamm([p,a,u,s,e], 2, f, [n]). n_comp(kompositum, Flexion, Genus, Fuge) :- n_stamm(stamm, _, _, Fuge), append(stamm, Fuge, Teil), n_stamm(stamm2, Flexion, Genus, Fuge), append(teil, Stamm2, Kompositum). Komposition und Differenzlisten 3 Listen verketten append([], L2, L2). append([x L], L2, [X L3]) :- append(l, L2, L3). Die Laufzeit ist proportional zur Länge der ersten Liste. rekursives Abarbeiten der ersten Liste für jedes Element der ersten Liste ein rekursiver Aufruf Komposition und Differenzlisten 4

22 Effizienzüberlegungen Verbesserungsmöglichkeiten Verwendung von append/3 führt zu grosser Ineffizienz um Fugenelement anzuhängen, muss das Erstglied vollständig dekomponiert werden 3 2 Call: append([a,r,b,e,i,t],[s],_522)? 9 8 Exit: append([],[s],[s])? 3 2 Exit: append([a,r,b,e,i,t],[s],[a,r,b,e,i,t,s])? bevor falsches Erstglied bemerkt wird, werden alle Zweitglieder ausprobiert 2 Call: append([a,r,b,e,i,t,s],[a,r,b,e,i,t],[b,r,o,t,z,e,i,t]) 2 Call: append([a,r,b,e,i,t,s],[z,e,i,t],[b,r,o,t,z,e,i,t]) 2 Call: append([a,r,b,e,i,t,s],[b,r,o,t],[b,r,o,t,z,e,i,t]) 2 Call: append([a,r,b,e,i,t,s],[p,a,u,s,e],[b,r,o,t,z,e,i,t]) es werden blind alle Kombinationen versucht, bis allenfalls die passende Struktur erscheint Komposition und Differenzlisten 5 Wie optimieren? Fallunterscheidung, falls Fugenelement "leer" ist Effizienteres append/3 mit Akkumulatortechnik verwenden Nur minime Verbesserung! Falsche Erstglieder sofort erkennen und nicht noch Zweitglied mutieren Bessere Datenstruktur wählen, die Listenverkettung zulässt, ohne dass eine Liste immer vollständig auseinander zu nehmen ist Erstaunlicherweise gibt es eine Prolog-Datenstruktur, mit der die letzten 2 Punkte verbessert werden können: Differenzlisten Komposition und Differenzlisten 6 Differenzlisten Differenzlisten II Die Liste [,2,3] als Differenz unterschiedlicher Listen [,2,3] [,2,3,4,5] [4,5] [,2,3] [,2,3 [bla]] [bla] [,2,3] [,2,3] [ ] Listen können leicht in Differenzlisten mit denselben Elementen umgewandelt werden: [,2, ] [,2, X] - X Allgemeinstes Schema [,2,3] [,2,3 X] - X Offene Liste Differenzoperator Rest-Variable (durch Unifikation Zugriff auf Inneres der Offenen Liste) [] X - X n_stamm([z,e,i,t],, f, []). n_stamm_dl([z,e,i,t X]-X,, f, Y- Y) Komposition und Differenzlisten 7 Komposition und Differenzlisten 8

23 append_dl/3 Listen verketten mit Differenzlisten append_dl(a-b, B-C, A-C). A?- append_dl([,2 X]-X, [4,5]-[], Z). Anwendung von append_dl/3 n_comp_dl(a-d, Flexion, Genus, Fuge-E) :- n_stamm_dl(a-b, _, _, B-C), append_dl(a-b, B-C, A-C), n_stamm_dl(c-d, Flexion, Genus, Fuge-E), append_dl(a-c, C-D, A-D).?- n_comp_dl([a,r,b,e,i,t,s,z,e,i,t]-[], Flex, Gen, Fuge-E). B A B A C B C Laufzeit ist konstant C keine Rekursion, sondern simple Term-Unifikation?- append_dl([,2 X]-X, [4,5 Y]-Y, Z). A B A C B C A D C D A B C D Komposition und Differenzlisten 9 Komposition und Differenzlisten 0 n_stamm_dl/4 und n_comp_dl/4 Redundanz von append_dl/4 Nominalstämme Zeichenfolge als Differenzliste Fugenforderung als Differenzliste Nominalkomposita: n_comp_dl/4 i. Zeichenfolge als Differenzliste ii. Flexionsklasse iii. Genus iv. Fugenforderung als Differenzliste n_stamm_dl([a,r,b,e,i,t X]-X,, f, [s Y]-Y). n_stamm_dl([z,e,i,t X]-X,, f, Y-Y). n_stamm_dl([b,r,o,t X]-X,, n, Y-Y). n_stamm_dl([p,a,u,s,e X]-X, 2, f, [n Y]-Y). n_comp_dl(a-d, Flexion, Genus, Fuge-E) :- n_stamm_dl(a-b, _, _, B-C), append_dl(a-b, B-C, A-C), n_stamm_dl(c-d, Flexion, Genus, Fuge-E), append_dl(a-c, C-D, A-D). Die beiden Aufrufe von append_dl sind redundant, da alle Variablen schon vorher identisch instantiiert sind. n_comp_dl(a-d, Flexion, Genus, Fuge-E) :- n_stamm_dl(a-b, _, _, B-C), append_dl(a-b, B-C, A-C), n_stamm_dl(c-d, Flexion, Genus, Fuge-E), append_dl(a-c, C-D, A-D). Deshalb kurz und elegant: n_comp_dl(a-d, Flexion, Genus, Fuge-E) :- n_stamm_dl(a-b, _, _, B-C), n_stamm_dl(c-d, Flexion, Genus, Fuge-E). Komposition und Differenzlisten Komposition und Differenzlisten 2

24 Morphologie und Buchstabenbäume Motivation Übersicht Vollformen Morphologie als Wortgrammatik Simple DCG als Wortgrammatik: Stämme und Endungen, Flexionsklassen Schnittstelle zwischen Syntax/Morphologie Grenzen einfacher konkatenativer Morphologie Überlegungen zur Effizienz Tries: Buchstabenbäume Datenstruktur Buchstabenbäume (tries) find_word/3: Wörter finden im Buchstabenbaum find_morph/4: Wortteile finden im Buchstabenbaum Stammbäume und Suffixbäume Konkatenative Morphologie mit Buchstabenbäumen Womit befasst sich die Morphologie? Wortstruktur und Wortbildung! Flexion trenn+en, trenn+e, trenn+test, trenn+ten, ge+trenn+t, trenn+end, Komposition Fruchtbarkeit+s+gott, Fruchtbarkeit+s+göttinnen+verehrung+s+zeremonie+n+meister, Derivation Frucht, frucht+en, frucht+bar, un+frucht+bar, Un+frucht+bar+keit, Wie viele Wörter gibt es? der viermillioneneinhunderttausendundzweite Schluck das In-der-Schlange-Stehen Morphologie und Buchstabenbäume Morphologie und Buchstabenbäume 2 Vollformen-Lexikon Morphologie als "Wortgrammatik" Vollformen-Lexikon als Prolog-Datenbank für jede Wortform alle möglichen Funktionen angeben lexikalisch, morphosyntaktisch, semantisch, pragmatisch, Nachteile immer unvollständig wegen produktiven Wortbildungen je nach Sprache aufwändiger für flexionsarmes Englisch machbar Morphologie und Buchstabenbäume 3 lex(kind, n, nom, sg, 'KIND'). lex(kindes, n, gen, sg, 'KIND'). lex(kinde, n, dat, sg, 'KIND'). lex(kind, n, dat, sg, 'KIND'). lex(kind, n, akk, sg, 'KIND'). lex(kinder, n, nom, pl, 'KIND'). lex(kinder, n, gen, pl, 'KIND'). lex(kindern, n, dat, pl, 'KIND'). lex(kinder, n, akk, pl, 'KIND'). Flexionsformen von»kind«für flexionsreicheres Deutsch schon anspruchsvoller (pro Substantiv <8 Formen) für Finnisch problematisch: Finnische Verben haben ~2 000 Formen Aber: Leistungsfähigere Computersysteme ermöglichen Dinge, die vor wenigen Jahren nicht machbar waren! Satzgrammatik = Wörter + syntaktische Kategorien + Verknüpfungsregeln Wortgrammatik = Morpheme + morphologische Kategorien + Verknüpfungsregeln Det der Stamm Stamm Affix Kind er S NP VP N V Hund bellt N Affix Stamm lied er Beide "Grammatiken" können im DCG-Formalismus notiert werden Morphologie und Buchstabenbäume 4

25 DCG: Trennen von Stamm und Endung Das Auftrennen bzw. Zusammenfügen von Stamm und Endung als DCG-Regeln: Flexionsklassen Innerhalb eines Genus können unterschiedliche Flexionsklassen (-paradigmen) auftreten. n_morph(kas, Gen,Num) --> n_stamm(gen), n_endung(kas, Num). Verknüpfungsregel n_stamm(s) --> "kind". n_stamm(s) --> "lied". n_stamm(s) --> "bild". Nominalstämme n_endung(nom, sg) --> "". n_endung(gen, sg) --> "es". n_endung(dat, sg) --> "". n_endung(dat, sg) --> "e". n_endung(akk, sg) --> "". n_endung(nom, pl) --> "er". n_endung(gen, pl) --> "er". n_endung(dat, pl) --> "ern". n_endung(akk, pl) --> "er". Nominalendungen n_morph(kas, Gen, Num) --> n_stamm(klasse, Gen), n_endung(klasse, Kas, Num). Verknüpfungsregel n_endung(, nom, sg) --> "". n_endung(, gen, sg) --> "es". n_endung(, dat, sg) --> "". n_endung(, dat, sg) --> "e". n_endung(, akk, sg) --> "". n_endung(, nom, pl) --> "er". n_endung(, gen, pl) --> "er". n_endung(, dat, pl) --> "ern". n_endung(, akk, pl) --> "er". n_stamm(, s) --> "kind". n_stamm(, s) --> "lied". n_stamm(, s) --> "bild". Nominalstämme n_stamm(2, s) --> "brot". n_endung(2, nom, sg) --> "". n_endung(2, gen, sg) --> "es". n_endung(2, dat, sg) --> "". n_endung(2, dat, sg) --> "e". n_endung(2, akk, sg) --> "". n_endung(2, nom, pl) --> "e". n_endung(2, gen, pl) --> "e". n_endung(2, dat, pl) --> "en". n_endung(2, akk, pl) --> "e". Nominalendungen Klasse Nr. Nominalendungen Klasse Nr. 2 Morphologie und Buchstabenbäume 5 Morphologie und Buchstabenbäume 6 Morpheme oder Buchstabenlisten? DCG-Schnittstelle Syntax/Morphologie n_stamm(, s) --> "kind". n_stamm(, s) --> [07,05,0,00]. n_stamm(, s) --> [07],[05],[0],[00]. Morpheme + Kompositionsregeln? Zwischen zwei " eingeschlossene Zeichenketten stehen für die Liste der Zeichenkodes. Morpheme sind eigentlich Buchstabenlisten.?- Kette = "kind". Kette = [07,05,0,00] Beim morphologischen Parsen müssen wir gleichzeitig noch Morphemgrenzen erkennen Vgl.Unterlagen zu "Einund Ausgabe" im WS Schnittstelle zwischen Syntax und Morphologie Syntax arbeitet mit Atomen Morphologie arbeitet mit Zeichenkodelisten brotes "brotes" Umwandlung mit atom_codes/2 (iso) bzw. atom_chars/2 Überführen von Atome zu Listen aus Zeichenkodes und zurück.?- atom_chars(brotes, Buchstaben). Buchstaben = [98,4,,6,0,5]?- atom_chars(wort, [98,4,,6,0,5]). Wort = brotes Morphologie und Buchstabenbäume 7 Morphologie und Buchstabenbäume 8

26 DCG-Schnittstelle Syntax/Morphologie Grenzen konkatenativer Morphologie np(kas, Gen, Num) --> det(kas, Gen, Num), n(kas, Gen, Num). det(nom, s, sg) --> [das]. det(nom, s, pl) --> [die]. n(kas, Gen, Num) --> [Wort], { atom_chars(wort, Buchstaben), phrase(n_morph(kas, Gen, Num), Buchstaben) }. Anfragen Vgl.Unterlagen zu "DCGs" im Wintersemester?- phrase(np(kasus, Gen, Numerus), [die, brote]). Kasus = nom, Gen = s, Numerus = pl?- phrase(np(kasus, Gen, Numerus), [die, broter]). no Umlautung im Plural Stammänderungen stellen simple konkatenative Ansätze vor konzeptuelle Probleme! Ausweg: Stammmorpheme werden als lexikalische Allomorphe eines Lemmas aufgefasst, die unterschiedliche Numeri ausdrücken können. n_stamm(klasse, Genus, Numerus, Lemma) n_stamm(, s, sg, 'HAUS') --> "haus". n_stamm(, s, pl, 'HAUS') --> "häus". n_stamm(, s, _, 'BILD') --> "bild". n_stamm(2, s, _, 'BROT') --> "brot". Nominalstämme N(?) Stamm(sg) Suffix(pl) haus er hauser* N(pl) Stamm(pl) Suffix(pl) häus er häuser Morphologie und Buchstabenbäume 9 Morphologie und Buchstabenbäume 0 Erweiterte Schnittstelle Effizienz Komplexe morphologische Kategorien transportieren die gewünschte Information nach Aussen gleichen Kongruenz ab n_morph(kas, Gen, Num, Lemma) --> n_stamm(klasse, Gen, Num, Lemma), n_endung(klasse, Kas, Num). Verknüpfungsregel n(kas, Gen, Num, Lemma) --> [Wort], { atom_chars(wort, Buchstaben), phrase(n_morph(kas, Gen, Num, Lemma), Buchstaben) }.?- phrase(n(kas,gen,num,lem), [häuser]). Kas = nom, Gen = s, Num = pl, Lem = 'HAUS' ; Kas = gen, Gen = s, Num = pl, Lem = 'HAUS' ; Kas = akk, Gen = s, Num = pl, Lem = 'HAUS' ; no Wie effizient ist diese morphologische Analyse? Buchstaben-Morphologie mit dem Standard-DCG-Parser n_stamm(, s) --> "kind". n_stamm(, s, A, B) :- 'C'(A, 07, C), 'C'(C, 05, D), 'C'(D, 0, E), 'C'(E, 00, B).?- phrase(n_stamm(k, G), "kiste"). 2 2 Call: n_stamm(k,g,[k,i,s,t,e],[]) 3 3 Call: 'C'([k,i,s,t,e],k,R) 3 3 Exit: 'C'([[k,i,s,t,e],k,[i,s,t,e]) 4 3 Call: 'C'([i,s,t,e],i,R2) 4 3 Exit: 'C'([i,s,t,e],i,[s,t,e]) 5 3 Call: 'C'([s,t,e],n,R3) 5 3 Fail: 'C'([s,t,e],n,R3) 2 2 Fail: n_stamm(k,g,[k,i,s,t,e],[]) no Geschönter Trace Morphologie und Buchstabenbäume Morphologie und Buchstabenbäume 2

27 Effizienz im Grossen Kompakte Lexika: Letter Trees/Tries Verhalten bei grossen Stammlexika Was passiert bei der Analyse von "kiste", wenn es tausende Einträge von "aal", "kinn" bis "zinn" gibt? Überlegungen zum Aufrufverhalten Bei ausschöpfender Suche eines Stammes S wird jede Stammklausel (n_stamm/4) einmal aufgerufen. 'C'/3 wird für jede Stammklausel einmal aufgerufen. Für jeden Buchstaben von jedem Präfix, den Stämme mit S gemeinsam haben, wird 'C'/3 einmal aufgerufen. Das Programm verhält sich einiges ineffizienter als es sein müsste! Morphologie und Buchstabenbäume 3 Lexikon als Buchstabenbäume Eine effiziente Methode, Lexikas kompakt zu speichern und buchstabenweise auf die Einträge zuzugreifen, sind Buchstabenbäume (engl. letter tries von letter retrieval) Buchstabenbäume bestehen aus einer Wurzel mit Ästen, an denen ein Buchstabe und/oder Lexikoneinträge hängen, wobei von den Buchstaben wieder Äste abzweigen können. Äste von Buchstabenbäumen sind meist alphabetisch sortiert angeordnet. Morphologie und Buchstabenbäume 4 Ein englischer Buchstabenbaum Letter Tree als Prolog-Term Legende Ein Buchstabenbaum ist rekursiv aus Listen gebaut. Ein Baum ist eine Liste von Ästen. Wurzel b h Ein Ast ist entweder ein Lexikoneintrag oder eine Liste der Form [Buchstabe Baum]. b Buchstabe bark Eintrag a r k bark e l p help e hope o p hop ltree([ [b, [a, [r, [k, lex(bark)]]]], [h, [e, [l, [p, lex(help)]]], [o, [p, lex(hop), [e, lex(hope)]]]] ]). Das Entfernen des Buchstabens aus einem Ast ergibt einen Baum! Richtige Lexikoneinträge müssten natürlich alle nötigen Informationen beinhalten Morphologie und Buchstabenbäume 5 Morphologie und Buchstabenbäume 6

28 Einfache Suche: find_word/3 Beispiel: Rekursionsschritte find_word/3: ein simples Zugriffsprädikat find_word(buchstabenliste, Baum, Eintrag) findet den zur Buchstabenliste L passenden Eintrag E im Baum T Rekursionsschritt Solange L nicht leer ist, finde einen passenden Teilbaum mit dem Anfangsbuchstaben von L und suche darin rekursiv nach dem Rest von L.?- ltree(t), find_word([h,o,p], T, lex(i)).. Suche [h,o,p] in 2. Suche [o,p] in [ [b, [a, [r, [k, lex(bark)]]]], [h, [e, [l, [p, lex(help)]]], [o, [p, lex(hop), [e, lex(hope)]]]]] [ [e, [l, [p, lex(help)]]], [o, [p, lex(hop), [e, lex(hope)]]]] find_word([char Chars], Tree, LexEntry) :- member([char Subtree], Tree), find_word(chars, Subtree, LexEntry). 3. Suche [p] in 4. Suche [ ] in [ [p, lex(hop), [e, lex(hope)]]] [ lex(hop), [e, lex(hope)]] Morphologie und Buchstabenbäume 7 Morphologie und Buchstabenbäume 8 Einfache Suche: find_word/3 Ein deutscher Stammbaum Abbruchbedingung Ein Stammlexikon Wenn L leer ist, suche einen Lexikoneintrag in diesem Ast. find_word([], Tree, LexEntry) :- member(lexentry, Tree). Damit Lexikoneinträge nicht mit Ästen verwechselt werden, müssen sie einen andern Hauptfunktor haben als den Listenkonstruktor '.'/2. Die Lexikoninformation kann beliebig komplex werden b i l d lex( ) h ä a u u s s lex( ) lex( )?- find_word([], [lex(hop),[e,lex(hope)]], lex(i)). I = hop ; no n_stamm_ltree([[b,[i,[l,[d, n_stamm(,s,_,'bild')]]]], [h,[a,[u,[s, n_stamm(,s,sg,'haus')]]], [ä,[u,[s, n_stamm(,s,pl,'haus')]]]]]). Morphologie und Buchstabenbäume 9 Morphologie und Buchstabenbäume 20

29 Suche von Stämmen Ein deutscher Suffixbaum Um Stämme in Wörtern zu finden, darf nicht die ganze Buchstabenliste konsumiert werden. Was übrig bleibt, wird als Restliste zurückgegeben. find_morph([char Chars], Tree, LexEntry, Rest) :- member([char Subtree], Tree), find_morph(chars, Subtree, LexEntry, Rest). find_morph(rest, Tree, LexEntry, Rest) :- member(lexentry, Tree).?- n_stamm_ltree(_t), find_morph([h,ä,u,s,e,r],_t,n_stamm(k,gen,num,l), R). Kla =, Gen = s, Num = pl, L = 'HAUS', R = [e,r]? ; no Flexionssuffixe können ebenfalls als Buchstabenbaum dargestellt werden. sind in eigenen Klassen: n_endlung_ltree(flexionsklasse, Suffixtree) Leere Morpheme erscheinen direkt auf der Wurzelebene. n_endung_ltree(, [n_endung(nom,sg), n_endung(dat,sg), n_endung(akk,sg), [e,n_endung(dat,sg), [r, n_endung(nom, pl), n_endung(gen,pl), n_endung(akk,pl), [n, n_endung(dat,pl)]], [s, n_endung(gen,sg)]]]). Morphologie und Buchstabenbäume 2 Morphologie und Buchstabenbäume 22 Morphologische Analyse mit Bäumen Ausblick und Literaturhinweis Konkatenative morphologische Analyse kann effizient mit Buchstabenbäumen durchgeführt werden. Zusätzliche Effizienz ist möglich, wenn alphabetische Sortierung bei der Suche berücksichtigt wird. n_morph(word, Kas, Gen, Num, Lem) :- n_stamm_ltree(t), find_morph(word, T, n_stamm(kla,gen,num,lem), Suffix), n_endung_ltree(kla, T2), find_morph(suffix, T2, n_endung(kas, Num), []).?- n_morph([h,ä,u,s,e,r], Gen, Kas, Num, Lem). Gen = nom, Kas = s, Lem = 'HAUS', Num = pl? ; Gen = gen, Kas = s, Lem = 'HAUS', Num = pl? ; Gen = akk, Kas = s, Lem = 'HAUS', Num = pl? ; no Das Konstruieren von Buchstabenbäumen ist eine etwas mühsame Arbeit. überlässt man am besten einem Programm, das aus lexikalischen Fakten die entsprechenden Bäume erzeugt. n_stamm(bild,,s,_,'bild'). n_stamm(haus,,s,sg,'haus'). n_stamm(häus,,s,pl,'haus'). n_stamm_ltree( [[b,[i,[l,[d, n_stamm(,s,_,'bild')]]]], [h,[a,[u,[s, n_stamm(,s,sg,'haus')]]], [ä,[u,[s, n_stamm(,s,pl,'haus')]]]]]). Literatur zu Morphologie und Buchstabenbäumen Covington, M. (994): Seiten 263ff. Morphologie und Buchstabenbäume 23 Morphologie und Buchstabenbäume 24

30 Left-Corner-Parsing Motivation Übersicht Parsen von kontextfreien Grammatiken Parsing-Strategien Bottom-Up: datengesteuert Top-Down: hypothesengesteuert Left-Corner-Relation (Linke Ecken von Grammatikregeln) Left-Corner-Parsing-Algorithmus Vorteile gegenüber Bottom-Up und Top-Down Problemregeln Left-Corner-Parsing mit Links Left-Corner-Links berechnen Links als transitive und reflexive Hülle der Left-Corner-Relation Parsen: Left Corner Reine Parsing-Strategien Top-Down (links-rechts) Probleme mit links-rekursiven Grammatikregeln (direkt oder indirekt) Bottom-Up (links-rechts) Probleme mit Tilgungsregeln X ε Gemischte Strategie Top-Down und Bottom-Up Wechsel bei Left-Corner (linker Ecke) der rechten Regelseite NP NP CONJ NP Left Corner S NP VP LHS RHS Parsen: Left Corner 2 Strategie des Bottom-Up-Parsing Vgl. Folien "Shift-Reduce-Parser" Strategie des Top-Down-Parsing Vgl. Folien "DCG" im WS Stack _ a Det Det man Det N NP NP sleeps NP V NP VP Wortsequenz a man sleeps man sleeps man sleeps sleeps sleeps sleeps _ S NP VP NP Det N VP V 2Det a 5 NP 9 4 N 3man S Det a N man V sleeps 8 VP 7 V 6sleeps Ziele S NP VP Det N VP a N VP N VP man VP VP V sleeps Wortsequenz a man sleeps a man sleeps a man sleeps a man sleeps man sleeps man sleeps sleeps sleeps sleeps S NP VP NP Det N VP V 3Det 4 a 2 NP 5 N 6man S Det a N man V sleeps 7 VP 8 V 9sleeps S _ datengesteuert hypothesengesteuert Parsen: Left Corner 3 Parsen: Left Corner 4

31 Left-Corner-Relation Left-Corner im Baum Left Corner S NP VP LHS RHS Syntaktische Left-Corner-Relation in jeden Teilbaum Man zeichne Das Grammatiksymbol LC ist linke Ecke (left corner) des Grammatiksymbols LHS, gdw. gilt, es gibt eine Grammatikregel LHS LC Det NP N S VP V S NP VP NP Det N VP V Det a N man V sleeps left_corner(np, s). left_corner(det, np). left_corner(v, vp). S NP VP NP Det N VP V Det ε a man sleeps Parsen: Left Corner 5 Parsen: Left Corner 6 Left-Corner-Algorithmus Strategie des Left-Corner-Parsing Eine Konstituente C left-corner-parsen heisst:. Nimm ein Wort von der Eingabe und bestimme seine Kategorie LC 2. Vervollständige LC zu C. a. Abbruchbedingung: Stoppe, falls LC = C ist (Achtung: Hier ist die Bezeichnung LC ein "falscher Freund". Diese Klausel akzeptiert gerade alle Nicht-Left-Corner-Knoten!) b. Rekursionsschritt i. Finde eine Syntaxregel LHS LC Sisters ii. Left-corner-parse alle Schwester-Kategorien Sisters von LC iii. Vervollständige LHS zu C Vorgehen beim Left-Corner-Parsing Um S zu parsen, nimm "a" (); es ist ein Det (2). Um Det zu S zu vervollständigen, verwende NP-Regel (3) NP Det N und parse N. Um N zu parsen, nimm "man" (4); es ist ein N (5). N vervollständigt direkt zu N. Um NP zu S zu vervollständigen, verwende S-Regel (6) S NP VP und parse VP. Um VP zu parsen, nimm "sleeps" (7), es ist ein V (8). Um V zu VP zu vervollständigen, verwende VP-Regel (9) VP V und parse nichts mehr (keine Schwestern). VP vervollständigt direkt zu VP. S vervollständigt direkt zu S. daten- und hypothesengesteuert S NP VP NP Det N VP V 2Det a 3 NP 6 5 N 4man S Det a N man V sleeps 9 VP 8 V 7sleeps Parsen: Left Corner 7 Parsen: Left Corner 8

Motivation. Morphologie und Buchstabenbäume. Vollformen-Lexikon. Morphologie als "Wortgrammatik"

Motivation. Morphologie und Buchstabenbäume. Vollformen-Lexikon. Morphologie als Wortgrammatik Morphologie und Buchstabenbäume Motivation Übersicht Vollformen Morphologie als Wortgrammatik Simple DCG als Wortgrammatik: Stämme und Endungen, Flexionsklassen Schnittstelle zwischen Syntax/Morphologie

Mehr

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

Tokenizer. Motivation. Ein einfacher Tokenizer. Zweck und Funktion eines Tokenizers. These are words. Eingabe = [these,are,words,'.']. Tokenizer Motivation Übersicht Was sind Tokenizer? Der Tokenizer von Covington Aufrufdiagramm Definition und Arbeitsweise der einzelnen Prädikate Programmiertechnik Look-Ahead Wort- und Satzgrenzen erkennen

Mehr

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

Tokenizer. Motivation. Zweck und Funktion eines Tokenizers. Ein einfacher Tokenizer. : These are words. [these, are, words,'.'] These are words. Tokenizer Motivation bersicht Was sind Tokenizer? Der Tokenizer von Covington Aufrufdiagramm Definition und Arbeitsweise der einzelnen PrŠdikate Wort- und Satzgrenzen erkennen Tokenisieren von Dateien

Mehr

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

Morphologie. bersicht. Ziel. Grundbegriffe Vollformen-Lexikon Morphologische Analyse mit DCGs Morphologie bersicht Ziel Grundbegriffe Vollformen-Lexikon Morphologische Analyse mit DCGs Trennen in Stamm und Endung Flexionsklassen Schnittstelle zwischen Syntax und Semantik Verstehen des Problems

Mehr

Programmiertechniken in der Computerlinguistik II

Programmiertechniken in der Computerlinguistik II Programmiertechniken in der Computerlinguistik II Universität Zürich Institut für Computerlinguistik Sommersemester 2005 Dozent Simon Clematide siclemat@cl.unizh.ch Übungsbetreuung Daniela Landert dlandert@access.unizh.ch

Mehr

Charts. Motivation. Grundfrage. Chart als Graph

Charts. Motivation. Grundfrage. Chart als Graph Charts Motivation Übersicht Chart bzw. Well-Formed Substring Table (WFST) Als azyklischer Graph, Tabelle und Relation Kantenbeschriftungen Kategorien: WFST Regeln: Passive Charts Regelhyposen: Aktive Charts

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

Operationen auf endlichen Akzeptoren und Transduktoren

Operationen auf endlichen Akzeptoren und Transduktoren Operationen auf endlichen Akzeptoren und Transduktoren Kursfolien Karin Haenelt Karin Haenelt 2006, Operationen auf Akzeptoren und Transduktoren, 08.07.2006 ( 1 05.04.2004) 1 Notationskonventionen L reguläre

Mehr

Einführung in unifikationsbasierte Grammatikformalismen

Einführung in unifikationsbasierte Grammatikformalismen Universität Potsdam Institut für Linguistik Computerlinguistik Einführung in unifikationsbasierte Grammatikformalismen Thomas Hanneforth head: VP form: finite subj: pers: 3 num: pl Merkmalsstrukturen:

Mehr

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

Syntax und Parsing. OS Einblicke in die Computerlinguistik. Philipp Rabe, 13IN-M OS Einblicke in die Computerlinguistik basierend auf Computerlinguistik und Sprachtechnologie, 3. Auflage, Spektrum, Heidelberg 2010 22. Mai 2014 Ausgangssituation Tokenisierung und Wortarten-Tagging vollendet

Mehr

Lexikalische Analyse, Tokenizer, Scanner

Lexikalische Analyse, Tokenizer, Scanner Lexikalische Analyse, Tokenizer, Scanner Frühe Phase des Übersetzers Aufgabenteilung: Scanner (lokale) Zeichen (Symbol-)Analyse Parser Syntax-Analyse Aufgabe des Scanners: Erkennung von: Zahlen, Bezeichner,

Mehr

Operationen auf endlichen Automaten und Transduktoren

Operationen auf endlichen Automaten und Transduktoren Operationen auf endlichen Automaten und Transduktoren Kursfolien Karin Haenelt 1 Notationskonventionen L reguläre Sprache A endlicher Automat DEA deterministischer endlicher Automat NEA nichtdeterministischer

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Thomas Behr. 17. November 2011

Thomas Behr. 17. November 2011 in in Fakultät für Mathematik und Informatik Datenbanksysteme für neue Anwendungen FernUniversität in Hagen 17. November 2011 c 2011 FernUniversität in Hagen Outline in 1 2 3 4 5 6 - Was ist das? in über

Mehr

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

Arbeitsweise des vorgestellten Tokenizers verstehen nicht: Auswendiglernen dieses Prolog-Programms. Wissen, dass das Problem nicht ganz trivial ist Tokenizer bersicht Ziel Was macht ein Tokenizer? Zeichen klassifizieren Trivial-Version fÿr unseren Prolog-Tokenizer Zeichen-Klassifikation in Unicode Arbeitsweise des vorgestellten Tokenizers Schwierigere

Mehr

Abstrakte Syntax von Prolog (1)

Abstrakte Syntax von Prolog (1) 3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die

Mehr

Eine Erweiterung der kontextfreien Grammatiken: PATR-II

Eine Erweiterung der kontextfreien Grammatiken: PATR-II Eine Erweiterung der kontextfreien Grammatiken: PATR-II Das ursprüngliche Problem war: Wie kann man strukturelle Information (Phrasenstruktur) von anderen grammatischen Informationen (wie Kongruenz, Rektion

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Teil 111. Chart-Parsing

Teil 111. Chart-Parsing Teil 111 Chart-Parsing 102 Die im ersten Teil des Buches behandelten einfachen Parsingalgorithmen sind, anders als die meisten vor allem im Compilerbau verwendeten Algorithmen (z.b. die LLoder LR-Parsingalgorithmen),

Mehr

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

Informatik III. Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung Informatik III Christian Schindelhauer Wintersemester 2006/07 8. Vorlesung 17.11.2006 schindel@informatik.uni-freiburg.de 1 Prinzip des Kellerautomats Push-Down-Automaton (PDA) Ein Kellerautomat vereinigt

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2013 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2013 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Reguläre Ausdrücke Wozu

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Finite State Transducers und Morphologie Laura Kallmeyer Heinrich-Heine-Universität Düsseldorf Summer 2016 1 / 18 Morphologische Grundbegriffe (1) Wort / Lexem: abstrakte

Mehr

Die mathematische Seite

Die mathematische Seite Kellerautomaten In der ersten Vorlesung haben wir den endlichen Automaten kennengelernt. Mit diesem werden wir uns in der zweiten Vorlesung noch etwas eingängiger beschäftigen und bspw. Ansätze zur Konstruktion

Mehr

Konstruieren der SLR Parsing Tabelle

Konstruieren der SLR Parsing Tabelle Konstruieren der SLR Parsing Tabelle Kontextfreie Grammatik (CFG) Notation 1. Diese Symbole sind Terminals: (a) Kleinbuchstaben vom Anfang des Alphabets wie a, b, c. (b) Operator Symbole wie +,, usw. (c)

Mehr

Empfehlenswerte Referenzen

Empfehlenswerte Referenzen Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein

Mehr

Finite-State Technology

Finite-State Technology Finite-State Technology Teil III: Automaten 1 Wiederholung Formale Grammatiken sind entweder axiomatische Systeme mit Ableitungsregeln oder Automaten. Beide beschreiben formale Sprachen. Formale Sprachen

Mehr

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer,

Reguläre Sprachen. R. Stiebe: Theoretische Informatik für ING-IF und Lehrer, Reguläre Sprachen Reguläre Sprachen (Typ-3-Sprachen) haben große Bedeutung in Textverarbeitung und Programmierung (z.b. lexikalische Analyse) besitzen für viele Entscheidungsprobleme effiziente Algorithmen

Mehr

Reguläre Sprachen und endliche Automaten

Reguläre Sprachen und endliche Automaten Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented

Mehr

Automatisches Verstehen gesprochener Sprache

Automatisches Verstehen gesprochener Sprache Automatisches Verstehen gesprochener Sprache 6. Syntaxanalyse Martin Hacker Bernd Ludwig Günther Görz Professur für Künstliche Intelligenz Department Informatik Friedrich-Alexander-Universität Erlangen-Nürnberg

Mehr

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Kapitel 5: Syntaxdiagramme und Grammatikregeln 5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen M. Jakob Gymnasium Pegnitz 10. Dezember 2014 Inhaltsverzeichnis Allgemeine Einführung Aufbau formaler Sprachen Notationsformen formaler Sprachen Backus-Naur-Formen Erkennen formaler Sprachen Implementierung

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Kontextfreie Sprachen und Pushdown-Automaten Dozentin: Wiebke Petersen WS 2004/2005 Wiebke Petersen Formale Komplexität natürlicher Sprachen WS 03/04 Wiederholung c

Mehr

Einführung in die Computerlinguistik

Einführung in die Computerlinguistik Einführung in die Computerlinguistik Merkmalstrukturen und Unifikation Dozentin: Wiebke Petersen WS 2004/2005 Wiebke Petersen Formale Komplexität natürlicher Sprachen WS 03/04 Universität Potsdam Institut

Mehr

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)

Mehr

Berechenbarkeitstheorie 1. Vorlesung

Berechenbarkeitstheorie 1. Vorlesung Berechenbarkeitstheorie Dr. Institut für Mathematische Logik und Grundlagenforschung WWU Münster WS 15/16 Alle Folien unter Creative Commons Attribution-NonCommercial 3.0 Unported Lizenz. Zentrale Themen

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

Inhalt Kapitel 11: Formale Syntax und Semantik Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte

Mehr

5.2 Endliche Automaten

5.2 Endliche Automaten 114 5.2 Endliche Automaten Endliche Automaten sind Turingmaschinen, die nur endlichen Speicher besitzen. Wie wir bereits im Zusammenhang mit Turingmaschinen gesehen haben, kann endlicher Speicher durch

Mehr

Anwenundg regulärer Sprachen und endlicher Automaten

Anwenundg regulärer Sprachen und endlicher Automaten Proseminar Theoretische Informatik Dozent: Prof. Helmut Alt Anwenundg regulärer Sprachen und endlicher Automaten Madlen Thaleiser 30. Oktober 2012 Reguläre Sprachen Regulärer Ausdruck definiert über einem

Mehr

Vorlesung Logische Programmierung Übung 8

Vorlesung Logische Programmierung Übung 8 Institut für Informatik Wintersemester 2003/2004 Universität Zürich Vorlesung Logische Programmierung Übung 8 Dr. Norbert E. Fuchs Stefan Höfler Projekt 2. Teil: Tokeniser Das unten angehängte Programm

Mehr

Finite-State-Morphologie in XLE. Grammatikentwicklung, SS 2010

Finite-State-Morphologie in XLE. Grammatikentwicklung, SS 2010 Finite-State-Morphologie in XLE Grammatikentwicklung, SS 2010 1 / 20 Worum es heute geht: Nutzen von Finite-State-Morphologien... und wie man sie in XLE einbaut 2 / 20 Lexikon in XLE Bis jetzt: so genanntes

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at Zusammenfassung der letzten LVA Definition Eine Grammatik G ist ein Quadrupel

Mehr

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln, Theorie der Informatik 9. März 24 7. Reguläre Sprachen I Theorie der Informatik 7. Reguläre Sprachen I Malte Helmert Gabriele Röger Universität Basel 9. März 24 7. Reguläre Grammatiken 7.2 DFAs 7.3 NFAs

Mehr

DisMod-Repetitorium Tag 4

DisMod-Repetitorium Tag 4 DisMod-Repetitorium Tag 4 Endliche Automaten, Reguläre Sprachen und Kontextfreie Grammatiken 22. März 2018 1 Endliche Automaten Definition DFA Auswertungen Äquivalenzrelationen Verschmelzungsrelation und

Mehr

Kontextfreie Grammatiken

Kontextfreie Grammatiken Kontextfreie Grammatiken Vorlesung Computerlinguistische Techniken Alexander Koller 16. Oktober 2015 Übersicht Worum geht es in dieser Vorlesung? Übungen und Abschlussprojekt Kontextfreie Grammatiken Computerlinguistische

Mehr

Induktive Definition

Induktive Definition Rechenregeln A B = B A A (B C) = (A B) C A (B C) = (A B) C A (B C) = A B A C (B C) A = B A C A {ε} A = A A {ε} = A (A {ε}) = A (A ) = A A A = A + A A = A + A + {ε} = A Beispiel. Real-Zahlen = {0,..., 9}

Mehr

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln,

1 Σ endliches Terminalalphabet, 2 V endliche Menge von Variablen (mit V Σ = ), 3 P (V (Σ ΣV )) {(S, ε)} endliche Menge von Regeln, Theorie der Informatik 8. März 25 8. Reguläre Sprachen I Theorie der Informatik 8. Reguläre Sprachen I 8. Reguläre Grammatiken Malte Helmert Gabriele Röger 8.2 DFAs Universität Basel 8. März 25 8.3 NFAs

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik

1. Übungsblatt 6.0 VU Theoretische Informatik und Logik . Übungsblatt 6. VU Theoretische Informatik und Logik 25. September 23 Aufgabe Sind folgende Aussagen korrekt? Begründen Sie jeweils Ihre Antwort. a) Für jede Sprache L gilt: L < L (wobei A die Anzahl

Mehr

Formale Sprachen und Automaten

Formale Sprachen und Automaten Formale Sprachen und Automaten Kapitel 3: Regular Expressions Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Kapitel 3 Regular

Mehr

Automaten und Formale Sprachen SoSe 2013 in Trier

Automaten und Formale Sprachen SoSe 2013 in Trier Automaten und Formale Sprachen SoSe 2013 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 2. Juni 2013 1 Automaten und Formale Sprachen Gesamtübersicht Organisatorisches Einführung Endliche

Mehr

Einführung in die Computerlinguistik: Morphologie und Automaten I

Einführung in die Computerlinguistik: Morphologie und Automaten I Einführung in die Computerlinguistik: Morphologie und Automaten I WS 2013/2014 Manfred Pinkal Morphologie Morphologie ist der Teilbereich der Linguistik, der sich mit der internen Struktur von Wörtern

Mehr

Der Earley-Algorithmus

Der Earley-Algorithmus Der Earley-Algorithmus Kursfolien Karin Haenelt 25.03.02 1 25.03.02 2 Inhalt Funktion des Earley-Algorithmus Begriffe Erkenner/Parser Kontextfreie Grammatik Ein Beispiel Funktionen des Algorithmus Funktionsweise

Mehr

Übungen zur Vorlesung Modellierung WS 2003/2004 Blatt 11 Musterlösungen

Übungen zur Vorlesung Modellierung WS 2003/2004 Blatt 11 Musterlösungen Dr. Theo Lettmann Paderborn, den 9. Januar 24 Abgabe 9. Januar 24 Übungen zur Vorlesung Modellierung WS 23/24 Blatt Musterlösungen AUFGABE 7 : Es sei der folgende partielle deterministische endliche Automat

Mehr

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer.

Proseminar TI: Kellerautomaten. 1 Motivation. 2 Einführung. Vortrag: Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer. Proseminar TI: Kellerautomaten Vortrag: 10.11.2015 Von Sebastian Oltmanns und Dorian Wachsmann. Dozent: Wolfgang Mulzer. 1 Motivation Wir kennen bereits die Chomsky-Hierarchie. Sie klassiziert formale

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Vorlesung von Prof. Dr. Sven Rahmann im Sommersemester 2008 Kapitel 4 Reguläre Ausdrücke Webseite zur Vorlesung http://ls11-www.cs.tu-dortmund.de/people/rahmann/teaching/ss2008/algorithmenaufsequenzen

Mehr

Der Earley-Algorithmus

Der Earley-Algorithmus Der Earley-Algorithmus Kursfolien Karin Haenelt 25.03.02 1 25.03.02 2 Inhalt Funktion des Earley-Algorithmus Begriffe Erkenner/Parser Kontextfreie Grammatik Ein Beispiel Funktionen des Algorithmus Funktionsweise

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 17 Einstieg in die Informatik mit Java String Tokenizer Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick Tokenizer 2 StringTokenizer 3 Verwendung von String.split

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Einführung in die Computerlinguistik Morphologie (1): morphembasierte Morphologie mit Transduktoren

Einführung in die Computerlinguistik Morphologie (1): morphembasierte Morphologie mit Transduktoren Einführung in die Computerlinguistik Morphologie (1): morphembasierte Morphologie mit Transduktoren Dozentin: Wiebke Petersen 14.6.2010 Wiebke Petersen Einführung CL SoSe 2010 1 Morphologische Grundbegrie

Mehr

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I

Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Vorlesung Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I Bernhard Beckert Institut für Informatik Sommersemester 2007 B. Beckert Grundlagen d. Theoretischen Informatik:

Mehr

Einführung in die Computerlinguistik Morphologie (1): morphembasierte Morphologie mit Transduktoren

Einführung in die Computerlinguistik Morphologie (1): morphembasierte Morphologie mit Transduktoren Einführung in die Computerlinguistik Morphologie (1): morphembasierte Morphologie mit Transduktoren Dozentin: Wiebke Petersen 14.6.2010 Wiebke Petersen Einführung CL SoSe 2010 1 Morphologische Grundbegrie

Mehr

Teil 4: Rekursion und Listen

Teil 4: Rekursion und Listen Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,

Mehr

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

Informatik III. Christian Schindelhauer Wintersemester 2006/07 7. Vorlesung Informatik III Christian Schindelhauer Wintersemester 2006/07 7. Vorlesung 16.11.2006 schindel@informatik.uni-freiburg.de 1 Informatik III 7. Vorlesung - 2 Informatik III 7. Vorlesung - 3 Informatik III

Mehr

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung!

1. Klausur zur Vorlesung Informatik III Wintersemester 2003/2004. Mit Lösung! Universität Karlsruhe Theoretische Informatik Fakultät für Informatik WS 23/4 ILKD Prof. Dr. D. Wagner 2. Februar 24. Klausur zur Vorlesung Informatik III Wintersemester 23/24 Mit Lösung! Beachten Sie:

Mehr

Reguläre Ausdrücke. Michael Jäger. 4. April 2017

Reguläre Ausdrücke. Michael Jäger. 4. April 2017 Reguläre Ausdrücke Michael Jäger 4. April 2017 Zeichenketten und Sprachen Ein Alphabet ist eine endliche Menge von Symbolen. Beispiele: 1. Σ 1 = {0, 1} 2. Σ 2 = {a, b, c, d, e, f, g, h, i, j, k, l, m,

Mehr

Rekursive Listenverarbeitung

Rekursive Listenverarbeitung Rekursive Listenverarbeitung Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive

Mehr

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

Shift-Reduce-Parsing: Ein einfaches Bottom-Up-Verfahren Keller Shift- und Reduce-Schritte Vorgehen des Parsers Implementation in Prolog Probleme 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

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Übung am 3..2 INSTITUT FÜR THEORETISCHE KIT 7..2 Universität des Andrea Landes Schumm Baden-Württemberg - Theoretische und Grundlagen der Informatik INSTITUT FÜR

Mehr

7 Endliche Automaten. 7.1 Deterministische endliche Automaten

7 Endliche Automaten. 7.1 Deterministische endliche Automaten 7 Endliche Automaten 7.1 Deterministische endliche Automaten 7.2 Nichtdeterministische endliche Automaten 7.3 Endliche Automaten mit g-übergängen Endliche Automaten 1 7.1 Deterministische endliche Automaten

Mehr

Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung

Theoretische Informatik und Logik Übungsblatt 1 (2016S) Lösung Theoretische Informatik und Logik Übungsblatt (26S) en Aufgabe. Sei L = {w#w r w {, } }. Geben Sie eine deterministische Turingmaschine M an, welche die Sprache L akzeptiert. Wählen Sie mindestens einen

Mehr

Formale Sprachen. Reguläre Sprachen. Rudolf FREUND, Marian KOGLER

Formale Sprachen. Reguläre Sprachen. Rudolf FREUND, Marian KOGLER Formale Sprachen Reguläre Sprachen Rudolf FREUND, Marian KOGLER Endliche Automaten - Kleene STEPHEN KLEENE (99-994) 956: Representation of events in nerve nets and finite automata. In: C.E. Shannon und

Mehr

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse

Compilerbau Syntaxanalyse 68. LR(1)-Syntaxanalyse Compilerbau Syntaxanalyse 68 LR(1)-Syntaxanalyse Bei der LL(1)-Syntaxanalyse wird allein aufgrund des nächsten Tokens die zu verwendende Produktion ermittelt. Bei der LR(1)-Syntaxanalyse braucht diese

Mehr

Das Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles

Das Programm ist deterministisch: es gibt für jedes Ziel höchstens eine Klausel, die zur erfolgreichen Ableitung des Zieles Green Cuts Klauseln zum Mischen zweier geordneten Listen: merge ( [X Xs ], [Y Ys ], [X Zs ] ) : X < Y, merge ( Xs, [ Y Ys ], Zs ). (1) merge ( [X Xs ], [Y Ys ], [ X,Y Zs ] ) : X =:= Y, merge (Xs, Ys, Zs

Mehr

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung Theoretische Informatik Rainer Schrader Zentrum für Angewandte Informatik Köln 14. Juli 2009 1 / 40 2 / 40 Beispiele: Aus den bisher gemachten Überlegungen ergibt sich: aus der Chomsky-Hierarchie bleiben

Mehr

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23 1/23 Formale Methoden 1 Gerhard Jäger Gerhard.Jaeger@uni-bielefeld.de Uni Bielefeld, WS 2007/2008 9. Januar 2008 2/23 Automaten (informell) gedachte Maschine/abstraktes Modell einer Maschine verhält sich

Mehr

Endliche Automaten. Grundlagen: Alphabet, Zeichenreihe, Sprache. Karin Haenelt

Endliche Automaten. Grundlagen: Alphabet, Zeichenreihe, Sprache. Karin Haenelt Endliche Automaten Grundlagen: Alphabet, Zeichenreihe, Sprache Karin Haenelt 1 Alphabet, Zeichenreihe und Sprache Alphabet unzerlegbare Einzelzeichen Verwendung: als Eingabe- und Ausgabezeichen eines endlichen

Mehr

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren? Attribut-Werte-Paare Eine Eigenschaft kann beschrieben werden durch ein Paar [a,w]. Dabei bezeichnet a das Attribut und w den konkreten Wert aus dem Wertebereich W a des Attributs. Die Eigenschaften eines

Mehr

Einführung in PERL 2 Reguläre Ausdrücke

Einführung in PERL 2 Reguläre Ausdrücke Einführung in PERL 2 Reguläre Ausdrücke BASIEREND AUF FOLIEN VON DR. H. ZINSMEISTER und dem Buch `Einführung in Perl (Lama Buch) von RL Schwartz&T Phoenix sowie hwp://de.sel[tml.org/perl/sprache/regexpr.htm

Mehr

Natürlichsprachliche Systeme I Materialien zur Vorlesung

Natürlichsprachliche Systeme I Materialien zur Vorlesung Natürlichsprachliche Systeme I Materialien zur Vorlesung D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg WS 2010/11, 19. Oktober 2010,

Mehr

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt).

Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt). 3 Erste Programme 3.1 Übungsaufgabe Verwenden Sie für jede Aufgabe die C++ IDE von Eclipse (pro Aufgabe ein Projekt). 3.1.1 Aufgabe 1 Schreiben Sie ein C++ Programm, das einen String einliest und testet,

Mehr

Einführung in die Computerlinguistik Morphologie (morphembasiert mit Transduktoren)

Einführung in die Computerlinguistik Morphologie (morphembasiert mit Transduktoren) Einführung in die Computerlinguistik Morphologie (morphembasiert mit Transduktoren) Dozentin: Wiebke Petersen 8.12.2009 Wiebke Petersen Einführung CL (WiSe 09/10) 1 Morphologische Grundbegrie Wort / Lexem:

Mehr

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen

Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken eignen sich besonders zur Modellierung beliebig tief geschachtelter,

Mehr

Reguläre Ausdrücke. Karin Haenelt

Reguläre Ausdrücke. Karin Haenelt Reguläre Ausdrücke Karin Haenelt 25.04.2010 1 Inhalt Einführung Definitionen Kleene-Theorem Schreibweisen regulärer Ausdrücke Eigenschaften regulärer Sprachen 2 Was sind reguläre Ausdrücke? Reguläre Ausdrücke

Mehr

Übung Praktische Informatik I

Übung Praktische Informatik I Übung Praktische Informatik I HWS 2008/2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 24.10.08 6-1 Heutige große Übung Hinweise

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Sommersemester 2017 20.04.2017 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt Organisatorisches Literatur Motivation und Inhalt Kurzer

Mehr

Satz (Abschluß unter der Stern-Operation)

Satz (Abschluß unter der Stern-Operation) Satz (Abschluß unter der Stern-Operation) Wenn L eine reguläre Sprache ist, dann ist auch L regulär. Beweis: Es gibt einen NFA M = (Z, Σ, S, δ, S, E) mit L(M) = L. Wir bauen aus diesem NFA nun wie folgt

Mehr

Einführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung EBNF Thomas R. Gross Department Informatik ETH Zürich Übersicht Es gibt vier elementare Ausdrucksmöglichkeiten in EBNF Sie lernen EBNF Beschreibungen zu lesen

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Parsen Thomas Wehr Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Inhalt Theoretische Grundlagen Grammatiken im Allgemeinen Die Chomsky-Hierarchie Die Chomsky-Normalform

Mehr

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme

3. Vorlesung: Endliche Automaten Markus Kr otzsch Lehrstuhl Wissensbasierte Systeme Wiederholung Mit Grammatiken können wir Sprachen beschreiben und sie grob in Typen unterteilen: FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch Lehrstuhl Wissensbasierte Systeme Formale

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen der Theoretischen Informatik Grundlagen der Theoretischen Informatik Turingmaschinen und rekursiv aufzählbare Sprachen (II) 2.07.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Übersicht 1. Motivation 2. Terminologie

Mehr

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

Mehr

THIA - Übungsblatt 2.

THIA - Übungsblatt 2. THIA - Übungsblatt 2. Aufgabe 12 (Eine einfache Sprache). Endliche Ziffernfolgen, die mit einer 0 beginnen, auf die mindestens eine weitere Ziffer folgt, wobei nur die Ziffern 0,..., 7 vorkommen, sollen

Mehr

Proseminar UNIX Tools. Ferdinand Beyer

Proseminar UNIX Tools. Ferdinand Beyer Reguläre Ausdrücke Proseminar UNIX Tools Ferdinand Beyer Technische Universität München 08.11.2005 Ferdinand Beyer (TUM) Reguläre Ausdrücke 08.11.2005 1 / 39 Gliederung Allgemeines 1 Allgemeines 2 Notation

Mehr

Endliche Automaten. Minimierung. Karin Haenelt. Karin Haenelt, 2004, FSA-Minimierung, ( )

Endliche Automaten. Minimierung. Karin Haenelt. Karin Haenelt, 2004, FSA-Minimierung, ( ) Endliche Automaten Minimierung Karin Haenelt 1 Inhalt Vorteile eines Minimalautomaten Fälle für die Minimierung Minimierungsalgorithmus für deterministische endliche Automaten (mit totaler Übergangsfunktion)

Mehr

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen

Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen

Mehr