1 / 96

KONTEXTFREIE GRAMMATIK

Theoretische Informatik: Formale Sprachen/ A utomaten. KONTEXTFREIE GRAMMATIK. Planung. Kontextfreie Grammatik & context free art KFG  formale Sprachen & Automaten Endliche Automaten und regular expressions Kellerautomaten & die Erfindung des Stack Turing Maschinen & Berechenbarkeit.

chelsey
Download Presentation

KONTEXTFREIE GRAMMATIK

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Theoretische Informatik: Formale Sprachen/Automaten KONTEXTFREIE GRAMMATIK

  2. Planung • Kontextfreie Grammatik & context free art • KFG  formale Sprachen & Automaten • Endliche Automaten und regular expressions • Kellerautomaten & die Erfindung des Stack • Turing Maschinen & Berechenbarkeit

  3. Das Theorem derInfinite Monkeys: Wenn unendlich viele Affen unendlich lange zufällig auf einer Schreibmaschine herumtippt, dann wird fast sicher irgendwann Shakespeares Hamlet dabei herauskommen.

  4. Das Theorem derInfinite Monkeys: Wahrscheinlichkeit dafür, dass die ersten n Buchstaben richtig sind: 2: 20: alle: ≈ -∞

  5. Das Programm AFFE_0.1 Mit welchen Strategien könnte man bewirken, dass ein Computer grammatikalisch wohlgeformte Texte generiert?

  6. AFFE_1.0 Startsymbol Ersetzungsregeln (transitions) S  Af Af Hoppla! | Geh! | Autsch! | Nicht! Terminals (Endsymbole) Ableitungs- baum: S Af Hoppla!, Geh!, Autsch!, Nicht!

  7. AFFE_1.1 S  Af S  N V Af Hoppla! | Geh! | Autsch! | Nicht! N Anna | Fred | Supermann | Er V lebt | isst | rennt Ableitungs- bäume: S S V Af N Hoppla!, Geh!, Autsch!, Nicht! Anna, Fred, Supermann, Er lebt,isst, rennt

  8. AFFE_1.2 S  Af S  N Vitr S  N Vtr N Af Hoppla! | Geh! | Autsch! | Nicht! N Anna | Fred | Supermann | Er Vitrlebt | isst | rennt Vtrmag | sieht | trifft Ableitungsbäume?

  9. AFFE_1.3 S  Af S  Nnom Vitr S  Nnom Vtr_akk Nakk Af Hoppla! | Geh! | Autsch! | Nicht! NnomAnna | Fred | Supermann | Er NakkAnna | Fred | Supermann | Ihn Vitrlebt | isst | rennt Vtr_akkmag | sieht | trifft Ableitungsbäume?

  10. Rekursion (0) Der Hund rennt. (1) Der schwarze Hund rennt. (2) Der schwarze böse Hund rennt. (3) Der schwarze böse grosse Hund rennt. (4) ... (0) Anna rennt. (1) Anna, die Fred mag, rennt. (2) Anna, die Fred, der Supermann sieht, mag, rennt. (0) Anna rennt. (1) Anna rennt und Fred isst. (2) Anna rennt und Fred isst aber Supermann lebt.

  11. AFFE_2.0 S  N Vitr S  N Vitr Konj S //hier ist die Rekursion S  . //hier ist das Stoppsymbol N Anna | Fred | Supermann | Er Vitrlebt | isst | rennt Konj und | aber | weil Ableitungsbäume?

  12. Context-Free Art (CFA) entdecken • Ressourcen (in CFA Material) • EinführungsTutorial.cfdh (deutsch) • Beispiel1(-8).cfdg (selbst experimentieren!!!) • Weitere Beispiele im CFA Applet unter „Examples“ oder unter „Help“ • http://www.contextfreeart.org/ (documentation, gallery, forum) • CFnutshell.pdf

  13. AFFE_1.3 + AFFE_2.0 = AFFE_3.0  soll all diese Sätze generieren können!

  14. AFFE_3.0 S Nnom VP | Nnom VPKonj S VP  Nnom Vitr | Nnom Vtr Nakk NnomAnna | Fred | Supermann | Er NakkAnna | Fred | Supermann | Ihn Vitrlebt | isst | rennt | lebt Vtrmag | sieht | trifft Konj und | aber | weil | denn Ableitungsbäume?

  15. Theoretische Informatik: Formale Sprachen/Automaten DIE CHOMSKY HIERARCHIE

  16. Überblick • Contextfree Art Basar • Übung zum kontextfreien Krähen (a – c) • Abschluss der Exkursion in die Linguistik • KFGs und Formale Sprachen • Gesamtüberblick • Einordnung und Abgrenzung von KFGs • Üben

  17. Kontextfreie Grammatiken • Aus einem endlichen Vokabular können mit einer KFG (durch Rekursion) eine potentiell unendliche Anzahl „grammatischer“ Sätze gebildet werden (dieses „unendlich“ ist übrigens kleiner als das mit der Affentaktik erzielte) • Wenn wir viel Aufwand in ein grosses Vokabular und komplizierte Produktionsregeln stecken (für die ganzen Kongruenzen) ... ... könnten wir so die Syntax der Deutschen Sprache erfassen?

  18. Sind natürliche Sprachen kontextfrei? • Es gab jahrzehntelange Diskussionen über die Frage, ob KFGs im Prinzip für natürliche Sprachen mächtig genug sind • Die Frage konnte erst 1985 endgültig (negativ) beantwortet werden. Zwei Sprachen waren gefunden worden, die nachweisbar den Rahmen von KFGs sprengen: Zürichdeutsch und Bambara P.S: Bambara ist eine Mande-Sprache, die in Mali in Westafrika gesprochen wird. Sie zählt gemeinsam mit Dioula und Malinke zum Dialektkontinuum des Manding. Quelle: Wikipedia

  19. Die meisten Sprachen (z.B. Standard-Deutsch)... • erlauben Zentraleinbettungen Jan sagt, dass wir Hansein Haus anstreichen helfen • aber keine Cross-Serial-Dependencies • * Jan sagt, dass wir Hansein Haus helfen anstreichen * * Quellen: http://www.brawer.ch/prolog/sprachenhierarchie.pdf W. J. Savitch, E. Bach, W. Marsh [eds.]: The Formal Complexityof Natural Language. Studies in LinguisticsandPhilosophy, vol. 33. 1987.

  20. Zürichdeutsch ... • erlaubt Zentraleinbettungen De Jan säit, dass mer em Hanses Huus aastriiche hälfed • und Cross-Serial-Dependencies • De Jan säit, dass mer em Hanses Huus hälfed aastriiche Quellen: http://www.brawer.ch/prolog/sprachenhierarchie.pdf W. J. Savitch, E. Bach, W. Marsh [eds.]: The Formal Complexityof Natural Language. Studies in LinguisticsandPhilosophy, vol. 33. 1987.

  21. Kontextsensitive Grammatik • Eine Kontextfreie Grammatik (KFG) kann nicht gleichzeitig beiden Arten von Verschachtelung abbilden, dazu braucht es eine Kontextsensitive Grammatik (KSG) • Eine KSF funktioniert genau wie eine KFG. Zusätzlich erlaubt sie aber auch Ersetzungsregeln, die auf der linken Seite mehr als ein Symbol haben z.B.:Np Vp Np S Vp

  22. Was ist eigentlich eine Grammatik?Schulgrammatik | Kontextfreie Grammatik | Grammatik im Gehirn • geht es um Produktion oder Rezeption? • beispielhaft oder funktional? • deskriptiv oder präskriptiv/normativ? • empirisch oder abstrakt? • angeboren oder erlernt? • kann man Syntax und Semantik trennen? • (und was ist mit Morphologie?)

  23. Noam Chomskys Ansatz • Vorteil: • Linguistik wird funktional (exakt) • Probleme: • Kompetenz/Performanz Unterscheidung  Chomskys Theorie ist nicht empirisch falsifizierbar • Semantik? • Lernbarkeit? • KFG reicht nicht, KSG ist zu mächtig, und es gibt andere Arten, Syntax zu formalisieren

  24. Formale Sprachen und Automaten Endlicher Automat Linear beschränkte Turingmaschine Allgemeine (Phrasenstruktur-)Grammatik Kontextsensitive Grammatik Kontextfreie Grammatik Wie gehören diese Begriffe zusammen? Turingmaschine Reguläre Grammatik Kellerautomat www.herr-rau.de/wordpress/2009/01/formale-sprachen-teil-1-die-chomsky-hierarchie.htm

  25. Chomsky Hierarchie: L(0) ∈L(1) ∈L(2) ∈L(3) rekursiv aufzählbare Sprachen (Typ 0) kontextsensitive Sprachen (Typ 1) allgemeine Grammatik kontext-sensitive G. kontextfreie Sprachen (Typ 2) kontext-freie G. reguläre Sprachen (Typ 3) allgemeine Turingmaschine lineare TM reguläre Grammatik endlicher Automat Keller-automat

  26. post_rau_fragen.docx (Partnerarbeit) • Wie heisst ein Ausdruck, den eine Formale Sprache hervorbringt oder prüft? • Worin unterscheiden sich Sprache, Grammatik und Automat? • Was ist das Verhältnis zwischen regular expressions und endlichen Automaten? • Welche Übergänge eines endlichen Automaten zeichnet Herr Rau mit Bleistift? • Wie lange braucht ein endlicher Automat, um das Wortproblem zu beantworten? • Für welche Arten von Ausdrücken reicht eine reguläre Sprache nicht aus? • Was genau bedeutet kontext-sensitiv? • Warum heissen Sprachen vom Typ 0 semi-entscheidbar? • Warum sind Typ 1 Sprachen entscheidbar? • Worin unterscheiden sich die verschiedenen Sprachtypen in Bezug auf die Produktionsregeln? • Können sie jetzt die beiden verbleibenden Fragen (d & e) im Aufgabenblatt zum kontextfreien Krähen beantworten? • Warum beschäftigt sich die Informatik mit formalen Sprachen?

  27. Theoretische Informatik: Formale Sprachen/Automaten ENDLICHE AUTOMATEN

  28. Überblick Formale Sprachen Äquivalenzbeziehung, jede Grammatikart kann in einen entsprechenden Automaten umgewandelt werden (und umgekehrt) kann auch als RegEx formuliert werden, wenn Akzeptor Hierarchische (Einschluss-)Beziehung Sprachen werden zunehmend allgemeiner und mächtiger, aber auch komplizierter und ressourcenhungriger

  29. Formale Definition reguläre Sprache L(3) = {T, N, S, E, P} L: Language (in Klammern steht oft der Typ) T: endliche Menge der Terminalsymbole N: endliche Menge der nicht-Terminalen Symbole S: Startsymbol; S ∈N (E: Endsymbol; E ∈T) P: endl. M. von Produktionsregeln; P ⊆ N  T[N] L(Typ) definiert eine (meist unendliche) Menge von Worten dieser Sprache und ermöglicht es in endlicher Zeit zu berechnen, ob ein gegebenes Wort zu dieser Sprache gehört ( = Wortproblem)

  30. Formale Definition endlicher Automat M = {Q, Σ, S, E, δ} M: Maschine, Automat Q: endliche Menge von Zuständen Σ: Alphabet, endliche Menge von Zeichen S: Startzustand des Automaten; s ∈Q E: endliche Menge von Endzuständen; s ∈Q δ: endl. M. von Übergangsrelationen; δ ⊆ Q × Σ × Q Für jeden Automaten M gibt es eine äquivalente Sprache L und umgekehrt. Akzeptierende Endliche Automaten, bzw. reguläre Sprachen, können auch als regular expressions formuliert werden

  31. Formales: Grammatiken • Produktionsregeln(Ersetzungsregeln, transitions): xy (x :: y, x := y, x = y) • Markierung von Terminalen: ‘x‘ (“x“, <x>) • Vereinfachungen auf der rechten Seite: x|y bedeutet x ODER y [x] bedeutet optional (0 oder 1 x) {x} bedeutet 0, 1 oder n x

  32. Formales: Endlicher Automat als Zustandsdiagramm/Übergangsgraph Kreise = Zustände Doppelkreis = Stoppzustand, wird erreicht durch Eingabe ε Startzustand („es kann nur Einen geben!“) Pfeile = Übergänge; Label = Eingabe, die diesen Übergang bedingt

  33. Formales: Regular expressions • Minimalsyntax (alles weitere lässt sich hieraus ableiten): | bedeutet ODER * bedeutet 0 bis n mal (das vorhergehende Zeichen) () Gruppierung ε leeres Zeichen • Beispiele: a|b* steht für {ε, a, b, bb, bbb, ...} (a|b)* steht für {ε, a, b, aa, ab, ba, bb, aaa, ...} ab*(c|ε) steht für {a, ac, ab, abc, abb, abbc, ...}

  34. Was tut diese reguläre Sprache? Zustandsdiagramm: Grammatik: Regular Expression: (b|ab*a)* S  ‘b‘ S | ‘a‘ X | ‘b‘ X  ‘b‘ X | Y Y  ‘a‘ | ‘a‘ S Lösungshilfe: a durch 1 ersetzen, und b durch 0

  35. Exorciser (s. Link im Wiki) Löse jeweils 2-3 der einfachen Aufgaben zu: • Automatenkonstruktion • RegEx  Endlicher Automat • Endlicher Automat  RegEx

  36. Endliche Automaten überall

  37. Definiere, mit dem jeweils praktischsten Formalismus ... • Die (reguläre) Sprache aller gültigen E-Mail-Adressen in den TLDs ch, de und com • Einen Automaten, der Tickets für CHF 1.50 verkauft und Münzen zu 1 und ½ Franken, sowie 20 und 10 Rappen annimmt • Die Funktionen der max. zwei Knöpfe (d)einer digitalen Armband- oder Stoppuhr

  38. Noch ein Beispiel: • T = { ’h’, ’a’, ’l’, ’e’, ’u’, ’j’} • N = { FROHLOCKE, HA, LE, LU, JA } • S = FROHLOCKE • P = { Frohlocke  HA ’l’ LE LU JA HA ’h’’a’ {HA} LE ’l’’e’ {LE} LU ’l’’u’ {’u’} JA ’j’’a’} Sprachtyp ?

  39. Frohlocke Frohlocke  HA ’l’ LE LU JA HA ’h’’a’ {HA} LE ’l’’e’ {LE} LU ’l’’u’ {’u’} JA ’j’’a’ • Leite 3 gültige Worte ab und überprüfe sie auf www.pns-berlin.de/fortbildungen/tisep06/frohlocke/frohlocke.html • Schreibe die Produktionsregeln für die Sprache „Frohlocke“ so um, dass sie den Anforderungen an eine reguläre Sprache entsprechen • Formuliere die Sprache „Frohlocke“ als Zustandsdiagramm eines Endlichen Automaten • Formuliere die Sprache „Frohlocke“ als RegExp

  40. Frohlocke-Automat Das ist die umständliche Version, mit Silben als Zeichen (z.B. ‘ha‘, ‘le‘, ...) wird es etwas einfacher

  41. Programmieren • jUnit-Tests (test-driven development) • GUI-Programming (basics) • Datenstrukturen (stack) • evtl. Interfaces

  42. Exkurs Software Development

  43. Linear Development (Wasserfallmodell)

  44. Iterative Development (Spiralmodell) Deployment Initial Idea Iteration

  45. Test Driven Development Deployment Initial Idea

  46. jUnit-Tests in NetBeans

  47. Test Driven Programming Anforderungen an das Programm identifizieren und ... Fehler reproduzieren und ... • Warum? • man weiss immer genau, was das nächste Ziel ist, und wann man es erreicht • man ist gezwungen, diese Nahziele präzise festzulegen • man bemerkt, wenn etwas nicht mehr funktioniert, das schon ging • man spart sich eine Menge Testen „von Hand“ ... als jUnit-Tests formulieren Code schreiben oder umschreiben und STÄNDIG TESTEN Alle Tests grün Bugs gefunden

  48. Zusammenfassung: • Als Erstes: Anforderungen als Tests formulieren • Tests für alle nicht trivialen Methoden (besonders boundary cases!) • Tests nacheinander (einzeln) abarbeiten • Nach jeder nicht-trivialen Änderung testen • Bei nicht-trivialen Problemen/Bugs: Test schreiben zum Nachweis, dann erst korrigieren • Erst wenn alle Tests grün sind über die nächsten Schritte nachdenken  als Tests formulieren

  49. Der Haleluja-Automat (Vorlage im WIKI) • Test-Klassen anschauen und verstehen • evtl. Zusatzinfo zu jUnit-Tests im Netz suchen • Methoden der beiden Parser-Klassen implementieren, bis alle Tests grün sind • ggf. weitere Tests hinzufügen • GUI-Funktionalität implementieren • es fehlt nur eine Methode, s. TODO & comment • Selbständig erweitern oder mich fragen

  50. Theoretische Informatik: Formale Sprachen/Automaten KELLERAUTOMATEN

More Related