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 2005 Dozent Simon Clematide Übungsbetreuung Daniela Landert Web

2 Programmiertechniken in der Computerlinguistik II Konzept-, Prädikats-, Operatoren- und Zeichenindex Legende: Ein Verweis wie meint die 13. Folie des 14. Kapitels. Inhaltsverzeichnis Sommersemester 2005 Organisatorisches... 1 Literaturhinweise Endliche Automaten Endliche Automaten Techniken Mengen-Prädikate Tokenizer Reguläre Mustererkennung Selektionsrestriktionen und (offene) Listen 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 Software-Entwicklung mit Prolog /2: :/2: ::/2: [^ ]: 4.4 [ ]: 4.4 ^: 4.6 $: 4.6 +: 4.8 *: 4.8 {n,m}: 4.10f. abolish/1: 9.7 Akzeptor: DEA 0.16f. append_dl/4: 6.9f. asserta/1: 9.4 assertz/1: 9.5 Bottom-Up Parsing: 8.3 Chart: als Graph: 10.4 als Tabelle: 10.5 clause/2: 9.8 DCG: Morphologie: 7.5f. Effizienz: Offene Listen: 5.6 Differenzlisten: 6.7f. Buchstabenbäume: 7.14f. First-Argument-Indexing: 16.1 Last-Call-Optimization: 17.1 Exception-Handling: 3.15f. foreach/2: Fundamentalregel: 11.21f. Gepunktete Regeln: 10.10f. GULP: Kanten: aktiv: inaktiv: 10.9 Kantensubsumption: 12.9; Left Corner Relation: 8.5 Link-Relation: 8.15 Look-Ahead: 3.8f. Merkmalstruktur: als Graph: 13.5 als Funktion: 13.6 offene Liste: 14.8 Termschemata: Parsing: TopDown mit WFST: Pfad: 13:4f. koreferent: 13.9 retract/1: 9.6 Rekursive Übergangsnetzwerke: 1.2f. Substitutionsoperator: 4.11 subsumes_chk/2: 12.9 Termsubsumption: 12.7 Tilgungsregeln: Left-Corner-Parser: 8.16f. Earley-Parser: Übung 8 Top Down Parsing: 8.4,12.15f. Transduktoren: 1.7f. Unifikation: Merkmalstrukturen: Vollformenlexikon: 7.3 WFST: 10.8f.

3 Aufbau der Lehrveranstaltung (14 DL) Übungen Computerlinguistische Anwendungen in PROLOG Elementare und weiterführende Verfahren zur Analyse von Zeichenketten, Wörtern, Phrasen, Sätzen Endliche Automaten, Tokenisierung, Morphologie, Lexikon, Syntaxanalyse, Merkmalstrukturen Weiterführendere und effiziente Programmiertechniken Mengen-Prädikate, Exception-Handling, Dynamische Prädikate, Differenzlisten, offene Listen, First-Argument-Indexing, Last-Call-Optimization Crashkurs zur regulären Mustererkennung Teilakzessprüfung PCL II (bzw. APS-Prüfung PCL II) schriftliche Prüfung, Fr , h im KOL-I-321 Programmieren lernt, wer sich selbst an den Computer setzt, Lösungen ausdenkt und ausprobiert! Übungsaufgaben normalerweise wöchentlich (Aufwand mindestens 2h pro Woche) 2 betreute Übungsdoppelstunden pro Woche Schriftliche Abgabe (mit kommentierter Rückgabe) (Programmtext bitte direkt als Mail, nicht als Datei angehängt!) Subject: Prologkurs Uebung 1 To: dlander@access.unizh.ch.z Besprechung des weiterführenden Übungsstoffes in der Stunde Abgabe von Musterlösungenh Organisatorisches 1 Organisatorisches 2 Lösen der Übungen & QUIZ Folien und Übungsblätter Offizielle Übungsstunde (Prolog unter Windows 95) PC-Schulungsraum, Rämistr.74, Raum RAI-J003 Dienstag 12-14h & Donnerstag 14-16h QUIZ (Verständnis-Tests) erstellen Alle Studierenden erstellen zu einem Thema ein QUIZ mit mindestens 3 Verständnis-Fragen. Tests werden in unserer webbasierten E-Learning-Umgebung CLab publiziert. Interface für das Erstellen der QUIZ siehe Vorlesungsleitseite Wie üblich werden für die besten Beiträge Awards verteilt... Die Folien und Übungsblätter sind im WWW verfügbar. Adresse: Format: PDF-Dateien für Adobe Acrobat Programm zum Lesen der PDF-Dateien (ab Adobe Acrobat Reader 4) Neueste Version ab WWW: Für Druckerscheue Kopiervorlage des Skripts in ersten Vorlesungen bzw. bei mir im Büro Übungs- und Lösungsblätter in Papierform Wer will, bitte in Liste eintragen und nächstens CHF 3. mitbringen Organisatorisches 3 Seite 1 Organisatorisches 4

4 Einstiegsliteratur I Einstiegsliteratur II Kombinierte Einführungen zu Prolog und NLP (Natural Language Processing) in Buchform Esther König/Roland Seiffert: Grundkurs PROLOG für Linguisten. Tübingen: Francke, 199 Seiten,1989. (UTB 1525). DM 25. [Dt. Einführung in Prolog und simpelstes NLP. Äusserst verständlich geschrieben! "Prolog für Dummies"] Clive Matthews: An Introduction to Natural Language Processing through Prolog. London: Longman, 306 Seiten, USD 34. [Gute engl. Prolog-Einführung und grundlegendendste NLP-Anwendungen. Empfehlenswert, und man lernt die engl. Fachtermini (mit Glossar)!] Wilhelm Weisweber: Prolog: Logische Programmierung in der Praxis: Thomson, 384 Seiten, DM ca [Sehr sorgfältige dt. Prolog- Einführung und wichtigen Syntax-Anwendungen. Etwas teuer!] Literaturhinweise 1 Frei im Web erhältlich Christof Rumpf: Grundkurs Prolog WS '04/05 [Dt. Vorlesungsunterlagen zu einer sehr guten Prolog-Einführung mit einfachen NLP- Anwendungen wie maschinelle Übersetzung] Stefan Müller: Prolog und Computerlinguistik: Teil I - Syntax (Z.T. Übersetzung aus einem engl. Skript). 183 Seiten. [Dt. Einführung in Syntaxanalyse mit fundierter Theorie und Prolog-Implementationen. Sehr gute Qualität, aber z.t. erst in PCL II sinnvoll!] Unser Zürcher CL-Glossar Literaturhinweise 2 Standardliteratur Prologliteratur Computerlinguistik mit Prolog Michael A. Covington: Natural Language Processing for Prolog Programmers. Prentice Hall, 350 Seiten, USD 66. [Sehr sorgfältig aufgebaute Programme! Ausgezeichneter Programmier- und Analysestil!] Gerald Gazdar/Chris Mellish: Natural Language Processing in PROLOG: An Introduction to Computational Linguistics. Addison-Wesley, 504 Seiten, [Gute Beispiele, etwas weniger verständlich geschrieben als Covington!] Kommentar Die Bücher behandeln unterschiedlichste Bereiche der Computerlinguistik (Syntax, Morphologie, Semantik, Pragmatik) und präsentieren die Ansätze, wie sie in den 80er-Jahren entwickelt wurden. Als Grundlage immer noch nützlich! Der Prolog-Klassiker in 4. Auflage W.F. Clocksin/C.S. Mellish: Programming in Prolog. Springer, 282 Seiten, USD 37. Eine formidable praktische Einführung (online und druckbar) P. Blackburn/J. Bos/K. Striegnitz: Learn Prolog Now! Last but not least: SICStus-Prolog Homepage Handbuch mit Prädikatsindex; konzisen, aber guten Beispielen! Mit Verweisen auf Infos, Bibliotheken, Programme usw. Literaturhinweise 3 Literaturhinweise 4 Seite 2

5 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 1 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 Seite 3 Endliche Automaten 4

6 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! Seite 4 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!

7 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 10 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 11 Seite 5 Endliche Automaten 12

8 Bestandteile Mengentheoretische Definition Bestandteile eines Endlichen Automaten Zustände States h i h a! ! a Alphabet Alphabet a 2 3 h h 1 2 h 3 2! 3 4 Übergänge Transitions 1 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 1 2 h 3 2! 3 4 Übergänge 1 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 13 Endliche Automaten 14 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 = {1, 2, 3, 4} Σ = {a, i, h,!} δ = { 1, h, 2, 2, a, 3, 3, h, 2, 3,!, 4 } s = 1 F = {4} start(1). delta(1, h, 2). delta(2, a, 3). delta(3, h, 2). delta(3,!, 4). h 1 2 final(4). 1 a 3 h 4 2 Startzustand 3 2! 3 4 Übergänge Endzustände Endliche Automaten 15 Seite 6 Endliche Automaten 16

9 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 17 Endliche Automaten 18 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 19 Seite 7 Endliche Automaten 20

10 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 1 2 Einzelnes Symbol des Alphabets: a a ε Repetition: (ab)+ b a 1 2 b Alternative: (a b) a ε Optionalität: (ab)? b a b Verkettung: ab a 1 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 1:1 übertragen! Unterschiedliche Umformungen sind oft möglich! h a! a h(ah)*a! h a! ha(ha)*! h a! ε h (ha)+! Endliche Automaten 21 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, 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, Seiten Programmierung einfacher computerlinguistischer Anwendungen mit EAs Wilhelm Weisweber: Prolog: Logische Programmierung in der Praxis: Thomson, Seiten Verarbeitung von EAs und Umwandlung von NEA zu minimalen DEA Reguläre Ausdrücke, Endliche Automaten und Prolog Endliche Automaten 23 Seite 8 Endliche Automaten 24

11 Endliche Automaten Techniken Rekursive Transitionsnetzwerke (RTN) Übersicht Rekursive Übergangsnetzwerke (RTN) RTN in Prolog Syntaxanalyse mit RTN Erweiterungen gegenüber EA S: NP 1 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 1 2 Vi Det 1 2 NP N 3 3 Gazdar/Mellish (1989: 59ff.) Matthews (1998: 141ff.) Pn Endliche Automaten Techniken 1 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, 1). start(np, 1). start(vp, 1). Endzustände final(s, 3). final(np, 3). final(vp, 3). Die Übergänge delta(s, 1, net(np), 2). delta(s, 2, net(vp), 3). delta(vp, 1, vi, 3). delta(vp, 1, vt, 2). delta(vp, 2, net(np), 3). delta(np, 1, pn, 3). delta(np, 1, 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 Seite 9 Endliche Automaten Techniken 4

12 RTN in Prolog III Erweiterungen von RTNs Abarbeitung Fall 1: 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( 1 2 numerus(n)): NP( kasus(k), numerus(n)): NP( kasus(nom), numerus(n)) Det( kasus(k), numerus(n)) 1 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 Seite 10 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

13 Transduktor in Prolog I Transduktor in Prolog II start(1). h:h a:i!:? h:h delta(1, h, h, 2). delta(2, a, i, 3). delta(3, h, h, 2). delta(3,!,?, 4). final(4). h:h 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 10 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(l1, _), init(l1, L2). L1 = [h,a,'!'] L2 = [h,i,'?']; L1 = [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(1, In, Out). lachen(1, [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 11 Seite 11 Endliche Automaten Techniken 12

14 Mengenprädikate findall/3 Lösungslisten finden Übersicht Lösungsmengen als Daten Alle Lösungen für ein Ziel erhalten (all solutions) findall/3 Ohne Backtracking und Variablenbindung Mit Backtracking auf ungebundene Variablen bagof/3 Lösungsliste kann Duplikate enthalten setof/3 Lösungsliste ist Menge Explizites Binden von Variablen durch Existenzquantor ^/2 Anwendungen von Mengenprädikaten word(cat, n). word(ring, n). word(do, v). word(ring, v). Das eingebaute Prädikat findall/3?- findall(word, word(word, Cat), Words). Words = [cat,ring,do,ring]? ; no berechnet alle Lösungen eines Ziels. Finde alle Wörter, egal von welcher Kategorie. liefert gewünschte Teile daraus als Elemente einer Liste zurück. Die Reihenfolge der Elemente entspricht der Reihenfolge, in der die Lösungen gefunden werden. ist wichtig, wenn alle Lösungen als Ganzes weiter verarbeitet werden sollen. Mengenprädikate 1 Mengenprädikate 2 findall/3 findall/3 Kontrollverhalten?- findall(word/cat, (word(word,cat), word(word,cat2), Cat \== Cat2), Ambig). Ambig = [ring/n,ring/v]? ; no Finde alle kategoriell ambigen Wörter mit ihren möglichen Kategorien. findall(term, Ziel, Liste) Term wird für jede Lösung von Ziel zu Liste hinzugefügt Ziel Ziel, das zu beweisen ist Liste enthält für jede Lösung von Ziel die entsprechende Instanz von Term?- findall(x, fail, Resultat). Resultat = []? ; no Kontrollverhalten falls das Ziel einfach fehlschlägt, ist die Liste leer freie Variablen in Term und Ziel werden nie gebunden! findall/3 terminiert nur, wenn der Suchbaum von Ziel endlich ist findall/3 gelingt höchstens einmal findall/3 kann nur scheitern, wenn die Liste instantiiert aufgerufen wird!?- findall(cat, word(word, Cat), [n,v,a]). no Mengenprädikate 3 Seite 12 Mengenprädikate 4

15 bagof/3 Existenzquantor ^/2 word(cat, n). word(ring, n). word(do, v). word(ring, v).?- bagof(word, word(word,cat), Words). Cat = n, Words = [cat,ring]? ; Cat = v, Words = [do,ring]? ; no Finde für jede Kategorie alle Wörter. word(cat, n). word(ring, n). word(do, v). word(ring, v).?- bagof(word, Cat^word(Word,Cat), Words). Words = [cat,ring,do,ring]? ; no Finde alle Wörter, von welcher Kategorie auch immer. Das eingebaute Prädikat bagof(term, Ziel, Liste) funktioniert wie findall/3, aber alle freien Variablen in Ziel, die nicht in Term vorkommen, werden gebunden, und Liste jeweils für eine unterschiedliche Bindung berechnet. falls Ziel nicht erfüllt werden kann, scheitert bagof/3. Der Existenzquantor ^ bindet freie Variablen in Ziel. ^/2 erlaubt es, die Lösungen für alle möglichen Belegungen für die Variable auf der linken Seite des Operators zu berechnen. ^/2 ist ein rechts-assoziativer Operator?- bagof(w, C1^C2^(word(W,C1),word(W,C2),C1 \== C2), W). Mengenprädikate 5 Mengenprädikate 6 setof/3 sortierte Lösungsmenge Anwendungen von Mengenprädikaten word(cat, n). word(ring, n). word(do, v). word(ring, v). word(nice, a).?- setof(cat, Word^word(Word,Cat), Cats). Cats = [a,n,v]? ; no Das eingebaute Prädikat setof(term, Ziel, Liste) funktioniert wie bagof/3, aber die Liste enthält keine Duplikate. die Liste ist entsprechend der Standardordnung für Terme sortiert. Finde die Menge aller Kategorien von welchen Wörtern auch immer. setof(term, Ziel, Menge) :- bagof(term, Ziel, Liste), sort(liste, Menge). Mögliche Definition von setof/3 Mengenprädikate sprengen den Rahmen der Prädikatenlogik erster Stufe. erlauben Dinge zu berechnen, die uns bis anhin unmöglich waren. Wie viele Lösungen hat eine Anfrage? Verschiedene Lösungen einer Anfrage vergleichen. Beispiel: Welcher Anteil von Wörtern im Lexikon ist ambig? ambig(anteil) :- setof(w, Cat^word(W,Cat), Ws), length(ws, AnzahlWoerter), setof(a, C1^C2(word(A,C1),word(A,C2),C1 \== C2), As), length(as, AnzahlAmbige), Anteil is AnzahlAmbige / AnzahlWoerter. Mengenprädikate 7 Seite 13 Mengenprädikate 8

16 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 get_code/1 (bzw. get0/1) Auffangen von Exceptions mit catch/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_code(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 1 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 (1994: Anhang B) Aufruf des Tokenizers durch read_atomics/1 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 Seite 14 Tokenizer 4

17 Aufrufdiagramm des Tokenizers Zeichen klassifizieren mit char_type/3 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/1 read_char/2 char_type/3 Tokenizer 5 complete_line/3 complete_word/5 Aufrufdiagramm der Tokenizer Prädikate 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/1 und read_char/2 char_type(10, end, 10) :-!. % UNIX end of line mark char_type(13, end, 13) :-!. % Macintosh/DOS end of line mark char_type(-1, end, -1) :-!. % 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 =< 122,!. 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/1: 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) :- get_code(enteredchar), char_type(enteredchar, Type, Char). Tokenizer 7 Seite 15 Tokenizer 8

18 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 10 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 100 d 101 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 1. 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 11 Seite 16 Tokenizer 12

19 Schwierigere Fälle Satzgrenzen erkennen Welche Zeichen gehören zu welchem Token? Die Grille zirpt. Die Grille zirpt immer um 10. Die Grille zirpt immer am 10. 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 (1994) (mit zusammenfassendem Einstieg ins Problem) Tokenizer 13 Tokenizer 14 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/1 muss repeat/0 verwendet werden!?- naive_tokenize_file('gedicht.txt', Lines).! Existence error in get0/1! attempt to read past end of stream! goal: get0('$stream'( ),_76) Problem Dateiende darf nur einmal gelesen werden mit get_code/1! Bei einem weiteren Versuch wird eine exception ausgelöst!?- tell('leer.txt'),told. yes?- see('leer.txt'). yes?- get_code(c). C = -1 yes?- get_code(c).! Existence error in get0/2! attempt to read past end of stream! goal: get0('$stream'( ),_76) Tokenizer 15 Seite 17 Tokenizer 16

20 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/1 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 17 Tokenizer 18 Literaturhinweise I Literaturhinweise II Tokenizer Michael A. Covington (1994): Natural Language Processing for Prolog Programmers. Prentice Hall. Eine verbesserte Version mit etwas anderem Output findet sich unter bzw. Doku unter et.pdf 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 Satzgrenzenerkennung David D. Palmer/Marti A. Hearst (1994): 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/1 Tokenisieren mit andern Programmiersprachen Es kann sinnvoll sein, Prolog nur für strukturell komplexere Teile eines Programms einzusetzen und die Tokenisierung in einer Sprache zu realisieren, welche einfache und mächtige Stringbehandlung enthält. siehe Programmiersprachen Perl, Ruby Tokenizer 19 Seite 18 Tokenizer 20

21 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 1.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 1 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 Seite 19 Reguläre Mustererkennung 4

22 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 Seite 20 Reguläre Mustererkennung 8

23 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 10 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 $1/ modifiziert "das alte Haus" zu "Haus das" Beispiel "Satzendeerkennung" Einsetzen eines Leerzeichen vor Satzendpunkten s/(\. ["\(«'])/ $1/ modfiziert "Er log. "Soso!" zu "Er log. "Soso!" Minitutorat mit Beispielen und Übungen zum Trainieren Literatur Friedl, Jeffrey E. F. (1998): 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 11 Seite 21 Reguläre Mustererkennung 12

24 Semantische Restriktionen und Listen Selektionsrestriktionen * Übersicht Selektionsrestriktionen und Lesarten Hierarchische Strukturierung einfach vs. multiple Vererbung Selektionsbeschränkungen im Verb Offene Listen für Mindestanforderungen Selektionsbeschränkungen bei Substantiven Geschlossene Pfade im Hierarchiebaum Tradition Valenzwörterbuch Elektronische Thesaurusprojekte Relationale lexikalische Semantik im Stil von WordNet Selektionsbeschränkungen Tiere können quieken, Pflanzen und Gegenstände nicht: Tiere und Pflanzen können verdursten, nicht aber Gegenstände: Lesarten Die Katze quiekt. Die Katze verdurstet. Die Kokospalme verdurstet. Hans kocht. Die Suppe kocht. Mit Stern werden in der Linguistik ungrammatische oder unakzeptable Sätze/Konstruktionen markiert. *Die Kokospalme quiekt. *Die Linsensuppe quiekt. *Die Linsensuppe verdurstet. *Hans und die Suppe kochen. Semantische Restriktionen und (offene) Listen 1 Semantische Restriktionen und (offene) Listen 2 Hierarchische Selektionsrestriktionen Einfache vs. multiple Vererbung Es kann hilfreich sein, diese Beschränkungen hierarchisch zu definieren. gefrieren Gegenstand flüssig Suppe fest Lampe Entität Lebewesen Tier Katze quieken Pflanze Palme verdursten Einfachvererbung (simple inheritance) Ein Knoten ererbt von max. einem Elternteil die Eigenschaften baum-förmige Struktur einfache Implementierung Mehrfachvererbung (multiple inheritance) Ein Knoten ererbt Eigenschaften Lebewesen von mehreren Elternteilen netz-förmige Struktur schwierigere Implementierung Tier Pflanze Katze Koralle Palme Beispiel Mehrfachvererbung Semantische Restriktionen und (offene) Listen 3 Seite 22 Semantische Restriktionen und (offene) Listen 4

25 Einfache Vererbung in Prolog DCG mit Selektionsbeschränkungen Selektionsbeschränkungen mit einfacher Vererbung lassen sich in Prolog mit offenen Listen implementieren. Bei Verben werden die minimalen Beschränkungen spezifiziert v([entitaet,gegenstand,fluessig _]) --> [gefriert]. Jedem Nomen wird der Platz in der Hierarchie zugeordnet. n([entitaet,gegenstand,fluessig,suppe]) --> [linsensuppe]. Implementation mit einer Prolog-DCG: s --> np(sel), vp(sel). np(sel) --> det, n(sel). vp(sel) --> v(sel). det --> [die]. n([entitaet,lebewesen,tier,katze]) --> [katze]. n([entitaet,lebewesen,pflanze,palme]) --> [kokospalme]. n([entitaet,gegenstand,fest]) --> [schreibtischlampe]. n([entitaet,gegenstand,fluessig,suppe]) --> [linsensuppe]. gefrieren Entität Gegenstand Lebewesen flüssig fest Tier Pflanze v([entitaet,lebewesen _]) --> [verdurstet]. v([entitaet _]) --> [existiert]. v([entitaet,lebewesen,tier _]) --> [quiekt]. v([entitaet,gegenstand,fluessig _]) --> [gefriert]. Linsensuppe Suppe Lampe Katze Palme Semantische Restriktionen und (offene) Listen 5 Semantische Restriktionen und (offene) Listen 6 Tradition "Valenzwörterbuch" Thesaurusprojekte Objekt konkretes Individuum Lebewesen Individuum Sachverhalt Zustand Vorgang Entität abstraktes Individuum Regularität Substanz Stoff Institution Vereinfachter Auszug aus: H. Schumacher [Hrsg.]: Verben in Feldern. Valenzwörterbuch zur Syntax und Semantik deutscher Verben. Berlin: De Gruyter, WordNet ein elektronischer Thesaurus Eine relationale lexikalische Durchstrukturierung des Wortschatzes mit Ober-/Unter-/Synonymiebegriffen etc. in elektronisch zugänglicher Form wurde im "WordNet"-Projekt fürs Englische realisiert. Für Verben, Substantive, Adjektive und Adverbien Europäische Ableger Etwas Ähnliches für europäische Sprachen wurde im Projekt "EuroWordNet" gemacht, fürs Deutsch im "GermaNet". [EuroWordNet] [GermaNet] Semantische Restriktionen und (offene) Listen 7 Seite 23 Semantische Restriktionen und (offene) Listen 8

26 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 1 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], 1, f, [s]). n_stamm([z,e,i,t], 1, f, []). n_stamm([b,r,o,t], 1, n, []). n_stamm([p,a,u,s,e], 2, f, [n]). n_comp(kompositum, Flexion, Genus, Fuge) :- n_stamm(stamm1, _, _, Fuge1), append(stamm1, Fuge1, Teil1), n_stamm(stamm2, Flexion, Genus, Fuge), append(teil1, Stamm2, Kompositum). Listen verketten append([], L2, L2). append([x L1], L2, [X L3]) :- append(l1, 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 3 Seite 24 Komposition und Differenzlisten 4

27 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 11 2 Call: append([a,r,b,e,i,t,s],[a,r,b,e,i,t],[b,r,o,t,z,e,i,t]) 11 2 Call: append([a,r,b,e,i,t,s],[z,e,i,t],[b,r,o,t,z,e,i,t]) 11 2 Call: append([a,r,b,e,i,t,s],[b,r,o,t],[b,r,o,t,z,e,i,t]) 11 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 [1,2,3] als Differenz unterschiedlicher Listen [1,2,3] [1,2,3,4,5] [4,5] [1,2,3] [1,2,3 [bla]] [bla] [1,2,3] [1,2,3] [ ] Listen können leicht in Differenzlisten mit denselben Elementen umgewandelt werden: [1,2, ] [1,2, X] - X Allgemeinstes Schema [1,2,3] [1,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], 1, f, []). n_stamm_dl([z,e,i,t X]-X, 1, f, Y-Y). Komposition und Differenzlisten 7 Seite 25 Komposition und Differenzlisten 8

28 append_dl/3 Listen verketten mit Differenzlisten append_dl(a-b, B-C, A-C). A?- append_dl([1,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([1,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 10 n_stamm_dl/4 und n_comp_dl/4 Redundanz von append_dl/3 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, 1, f, [s Y]-Y). n_stamm_dl([z,e,i,t X]-X, 1, f, Y-Y). n_stamm_dl([b,r,o,t X]-X, 1, 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 11 Seite 26 Komposition und Differenzlisten 12

29 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 1 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 ~ Formen Aber: Leistungsfähigere Computersysteme ermöglichen Dinge, die vor wenigen Jahren nicht machbar waren! Seite 27 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

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

SelektionsbeschrŠnkungen Ð 1

SelektionsbeschrŠnkungen Ð 1 SelektionsbeschrŠnkungen bersicht verschiedene Arten von Verben der Begriff der Valenz Selektionsrestriktionen einfach hierarchisch Implementation mit Prolog-DCGs Zweck Verstehen der verwendeten Technik

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Theoretische Grundlagen der Informatik. Vorlesung am 02. November INSTITUT FÜR THEORETISCHE INFORMATIK

Theoretische Grundlagen der Informatik. Vorlesung am 02. November INSTITUT FÜR THEORETISCHE INFORMATIK Theoretische Grundlagen der Informatik Vorlesung am 2. November 27 2..27 Dorothea Wagner - Theoretische Grundlagen der Informatik KIT Die Forschungsuniversität in der Vorlesung am 2. November 27 Helmholtz-Gemeinschaft

Mehr

Reihenfolge von Klauseln

Reihenfolge von Klauseln Reihenfolge von Klauseln Bei der Programmierung in Prolog steht grundsätzlich die Repräsentation logischer Zusammenhänge im Vordergrund. Nichtsdestotrotz ist es unvermeidbar, die Mechanismen der Abarbeitung

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

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

Ü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

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen! Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit Sommersemester 2012 Prof. Dr. Nicole Schweikardt AG Theorie komplexer Systeme Goethe-Universität Frankfurt am Main Herzlich willkommen!

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

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

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

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

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

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

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

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

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

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

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

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

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie Gliederung 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie 2.1. 2.2. Reguläre Sprachen 2.3. Kontextfreie Sprachen 2/1, Folie 1 2015 Prof. Steffen

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

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

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

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

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

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

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

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

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

Literatur Reguläre Ausdrücke

Literatur Reguläre Ausdrücke Literatur Reguläre Ausdrücke [2-1] https://de.wikipedia.org/wiki/regul%c3%a4rer_ausdruck [2-2] http://openbook.rheinwerk-verlag.de/linux/linux_kap08_001.html http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_013_0

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

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

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

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

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

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko

Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der Informatik. SS 2016: Grossmann, Jenko Interdisziplinäre fachdidaktische Übung: Modelle für Sprachen in der SS 2016: Grossmann, Jenko Die Beschreibung orientiert sich am Begriffssystem der Beschreibung natürlicher Sprachen Sprache in der steht

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

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 1. Automaten und Sprachen 1.1 Endlicher Automat Einen endlichen Automaten stellen wir uns als Black Box vor, die sich aufgrund einer Folge von

Mehr

Binäre Suchbäume (binary search trees, kurz: bst)

Binäre Suchbäume (binary search trees, kurz: bst) Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.

Mehr

4. Die lexikalische Analyse

4. Die lexikalische Analyse zerlegt Folge von Zeichen in Eingabedatei in Folge von Symbolen (Token) Scanner-Sieber-Modul Token: Typ und Inhalt übliche Token-Typen: reservierte Wörter (if, while, for, ) Bezeichner (x, dauer, name,..)

Mehr

Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen

Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen Automaten und Formale Sprachen Endliche Automaten und Reguläre sprachen Ralf Möller Hamburg Univ. of Technology Literatur Gottfried Vossen, Kurt-Ulrich Witt: Grundkurs Theoretische Informatik, Vieweg Verlag

Mehr

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann.

Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden kann. Der Satz von Kleene Wir haben somit Folgendes bewiesen: Der Satz von Kleene Sei Σ ein endliches Alphabet. Eine Sprache L Σ ist genau dann regulär, wenn sie von einem regulären Ausdruck beschrieben werden

Mehr

Programmierkurs Python II

Programmierkurs Python II Programmierkurs Python II Michaela Regneri & Stefan Thater FR 4.7 Allgemeine Linguistik (Computerlinguistik) Universität des Saarlandes Sommersemester 2011 Prüfungsleistungen Klausur am Semesterende -

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

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

18.09.2010 / Software Freedom Day

18.09.2010 / Software Freedom Day 18.09.2010 / Software Freedom Day xkcd Fortsetzung... Grundlegendes Begriff: = regular expressions kurz: regex Funktion: definieren flexible Muster, mit denen in Texten gesucht (und ersetzt) werden kann.

Mehr

Theoretische Informatik. Reguläre Sprachen und Automaten

Theoretische Informatik. Reguläre Sprachen und Automaten Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante

Mehr

2.6 Verdeutlichung verwendeter Begriffe

2.6 Verdeutlichung verwendeter Begriffe 2.6 Verdeutlichung verwendeter Begriffe endlich/finit: die Mengen der Zustände und der Ein- bzw. Ausgabezeichen sind endlich synchron: die Ausgabezeichen erscheinen synchron mit dem Einlauf der Eingabezeichen

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 7. Foliensatz Wiebke Petersen Einführung CL 1 Morphologische Grundbegrie Wort / Lexem: abstrakte

Mehr

Praktische Informatik I

Praktische Informatik I Praktische Informatik I WS 2005/2005 Prof. Dr. Wolfgang Effelsberg Lehrstuhl für Praktische Informatik IV Universität Mannheim 1. Einführung 1-1 Inhaltsverzeichnis (1) 1. Einführung 1.1 Was ist Informatik?

Mehr

Algorithmen & Programmierung. Felder (2) Zeichenketten

Algorithmen & Programmierung. Felder (2) Zeichenketten Algorithmen & Programmierung Felder (2) Zeenketten Zeenketten Verarbeitung von Textdaten in C In C gibt es keinen vordefinierten Datentyp zur Verarbeitung von Textdaten. Es existiert ledigl ein Datentyp

Mehr

Aufgabentypen die in der Klausur vorkommen

Aufgabentypen die in der Klausur vorkommen Aufgabentypen die in der Klausur vorkommen können 1. Nennen Sie fünf wichtige Anwendungsgebiete der Computerlinguistik. 2. Für welches der drei Anwendungsgebiete Maschinelle Übersetzung, Rechtschreibkorrektur

Mehr

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Sprachen sind durch folgenden Aufbau gekennzeichnet: BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder

Mehr

/ Vortrag Unix-AG

/ Vortrag Unix-AG 16.6.2010 / Vortrag Unix-AG xkcd Fortsetzung... Grundlegendes 1 Begriff: = regular expressions kurz: regex Funktion: definieren flexible Muster, mit denen in Texten gesucht (und ersetzt) werden kann. Diese

Mehr

Endliche Automaten. Endliche Automaten J. Blömer 1/23

Endliche Automaten. Endliche Automaten J. Blömer 1/23 Endliche Automaten Endliche Automaten sind ein Kalkül zur Spezifikation von realen oder abstrakten Maschinen regieren auf äußere Ereignisse (=Eingaben) ändern ihren inneren Zustand produzieren gegebenenfalls

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

Kapitel 3: Reguläre Grammatiken und Endliche. Automaten

Kapitel 3: Reguläre Grammatiken und Endliche. Automaten Kapitel 3: Reguläre Grammatiken und Endliche Automaten Prof.-Dr. Peter Brezany Institut für Softwarewissenschaft Universität Wien, Liechtensteinstraße 22 090 Wien Tel. : 0/4277 38825 E-mail : brezany@par.univie.ac.at

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

Bestandteile von Prolog-Programmen. Syntax und Datenstrukturen. Legende Syntaxdiagramme. Lesen von Syntaxdiagrammen

Bestandteile von Prolog-Programmen. Syntax und Datenstrukturen. Legende Syntaxdiagramme. Lesen von Syntaxdiagrammen Syntax und Datenstrukturen Bestandteile von Prolog-Programmen Übersicht Woraus besteht ein Prolog-Programm? Syntaxdiagramme für Bildungsregeln Programm, Klausel, Anfrage, 3 Sorten von en atomare e, Variablen,

Mehr

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch

FORMALE SYSTEME. 3. Vorlesung: Endliche Automaten. TU Dresden, 17. Oktober Markus Krötzsch FORMALE SYSTEME 3. Vorlesung: Endliche Automaten Markus Krötzsch TU Dresden, 17. Oktober 2016 Rückblick Markus Krötzsch, 17. Oktober 2016 Formale Systeme Folie 2 von 31 Wiederholung Mit Grammatiken können

Mehr

1 Endliche deterministische Automaten. Informatik I: Einführung in die Programmierung 7. Automaten: Akzeptoren & Transduktoren. Vorweg...

1 Endliche deterministische Automaten. Informatik I: Einführung in die Programmierung 7. Automaten: Akzeptoren & Transduktoren. Vorweg... Informatik I: Einführung in die Programmierung 7. : Akzeptoren Albert-Ludwigs-Universität Freiburg Bernhard Nebel 30. Oktober 20 30. Oktober 20 3 / 30 Vorweg... Was steckt in dem Würfel? Vor kurzem war

Mehr

Automaten und formale Sprachen Klausurvorbereitung

Automaten und formale Sprachen Klausurvorbereitung Automaten und formale Sprachen Klausurvorbereitung Rami Swailem Mathematik Naturwissenschaften und Informatik FH-Gießen-Friedberg Inhaltsverzeichnis 1 Definitionen 2 2 Altklausur Jäger 2006 8 1 1 Definitionen

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

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

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven

WS06/07 Referentin: Katharina Blinova. Formale Sprachen. Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven WS06/07 Referentin: Katharina Blinova Formale Sprachen Hauptseminar Intelligente Systeme Dozent: Prof. Dr. J. Rolshoven 1. Allgemeines 2. Formale Sprachen 3. Formale Grammatiken 4. Chomsky-Hierarchie 5.

Mehr

Einführung in die Informatik

Einführung in die Informatik Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle 24. November 28 Einführung in die Informatik Übung 7 Allgemeines Für die Abgabe der

Mehr

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers ompiler; Übersetzungsprogramme Grundlagen der Programmierung 3 A ompiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Ein Übersetzer (ompiler) ist ein Programm, das ein Wort

Mehr

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 ETH Zürich Institut für Theoretische Informatik Prof. Dr. Angelika Steger Florian Meier, Ralph Keusch HS 2017 Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8 Lösungsvorschlag zu Aufgabe 1

Mehr

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung Informatik I: Einführung in die Programmierung 7. : Akzeptoren Albert-Ludwigs-Universität Freiburg Bernhard Nebel 3. November 2017 1 Motivierendes Formale Grundlagen Verhalten eines DEAs Teilstring-Erkennung

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

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

Software Engineering Ergänzung zur Vorlesung

Software Engineering Ergänzung zur Vorlesung Ergänzung zur Vorlesung Prof. Dr. Markus Müller-Olm WS 2008 2009 2.6.1 Endliche und reguläre Sprachen Endliche und reguläre Sprache: fundamental in vielen Bereichen der Informatik: theorie Formale Sprachen

Mehr

Fachseminar WS 2008/09

Fachseminar WS 2008/09 Fachseminar WS 2008/09 Fachgebiet: Compilerbau Thema: Lexikalische Analyse (Scanner) Referent: Ali Sediq Betreuer: Prof. Dr. Helmut Weber 1 Inhaltsverzeichnis Lexikalische Analyse 1.0 Grundprobleme der

Mehr