Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Inhalt KI – automatische Sprachverarbeitung ...................................................................................... 2 Kompetenzen, die am Ende erreicht sein müssen ................................................... 2 Anleitung – Wie gehe ich mit einem Skript um? ....................................................... 3 Materialien zum Skript ............................................................................................................... 7 Projekt automatische Sprachübersetzung ................................................................................. 9 Mit oder ohne Skript weitermachen .................................................................................... 11 Modul 1 Bearbeitung von Listen in Scheme: first und rest ...................................................... 12 Elektronisches Wörterbuch .................................................................................................. 12 Zusatz Was genau bedeutet first (eigentlich car genannt) und rest (eigentlich cdr genannt)? ............................................................................................................................. 14 Modul 2 Funktionen selber schreiben ..................................................................................... 16 Modul 3 Rekursion .................................................................................................................... 18 Modul 4 Ein einfacher Wort und Satzübersetzer...................................................................... 20 Mängel eines Wort-zu-Wort-Übersetzers ............................................................................ 21 Zusatz Modul 5 Funktionen als Parameter.............................................................................. 23 Modul 6 Grammatik ................................................................................................................ 24 Modul 7 Grammatikprüfer (Parser) ......................................................................................... 25 Zusatz Modul 8 Grammatik-Prüfung und Übersetzung (Parser) ............................................. 30 Zusatz Modul 9 Ein abschließendes Projekt ............................................................................ 32 Zusatz Projekt: U-Bahn-Planer ................................................................................................. 32 Monika Seiffert / überarbeitet A. Kück Seite 1 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 KI – automatische Sprachverarbeitung Ziele: 1. Mit Scheme als funktionaler Programmiersprache rekursive Funktionen programmieren können. 2. Einen einfachen Übersetzer mit Grammatikprüfung in Scheme implementieren können. 3. Probleme und Grenzen der KI speziell der Sprachübersetzung kennen und beurteilen können. Kompetenzen, die am Ende erreicht sein müssen Fülle folgenden Fragebogen zu Beginn des Themas und am Ende einmal aus: Kompetenzen, die du nun erreicht haben solltest Ich kenne grundlegende Konstrukte in Scheme und kann sie in einfachen Funktionen anwenden: - first/rest - cons - append - cond - Ergebnisraum Ich kann einfache Funktionen in Scheme selbst schreiben Ich verstehe, wie Rekursion funktioniert. Ich kann rekursive Funktionen in Scheme implementieren Ich kann gegebene Problemstellungen in formalisierter Umgangssprache zusammenfassen und dann in Scheme implementieren Ich kann einen Wortübersetzer in Scheme implementieren Ich kann einen einfachen Satzübersetzer in Scheme implementieren. Ich kenne formale Grammatiken und kenne ihren Einsatzzweck in der Informatik. Ich verstehe den Unterschied zwischen natürlich sprachlichen Grammatiken und formalen Grammatiken. Ich kann zu gegebenen Grammatiken Suchbäume aufbauen. Ich kann zu gegebenen Suchbäumen die passende formale Grammatik aufbauen. Ich kann mit Hilfe eines Suchbaumes oder einer gegebenen Grammatik feststellen, on ein gegebener Satz entsprechend der gegebenen Grammatik korrekt ist. Ich kann Sätze mit Hilfe eines vorgegebenen Parsers auf grammatikalische Korrektheit prüfen. Ich kann einen vorgegebenen Parser entsprechend einer neuen Grammatik erweitern bzw. anpassen. Zusatz Ich kann zusätzlich zur Grammatikprüfung den Satz auch übersetzen Monika Seiffert / überarbeitet A. Kück + 0 - Seite 2 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Anleitung – Wie gehe ich mit einem Skript um? Im Folgenden wird genau beschrieben, wie du mit einem Skript arbeiten kannst und worauf du dabei achten musst. Du kannst dir dies zusätzlich – oder stattdessen – auch in einem Video erklären lassen: Schaue dir dazu auf www.youtube.com/alexkueck11 das Video mit dem Namen „Aufbau eines Skriptes“ an. Um dir das Thema „KI-automatische Sprachverarbeitung “ zu erarbeiten, kannst du grundsätzlich zwei verschiedene Wege gehen: Weg A – Du bearbeitest eigenständig die Projektaufgabe. Dazu kannst du dir aus den Materialien raussuchen, was du gebrauchen kannst oder dir auch ganz eigene erklärende Materialien suchen. Weg B – Du gehst die einzelnen Module Schritt für Schritt durch und erarbeitest dir so nach und nach die einzelnen Module (hier lernst du sozusagen Stück für Stück, wie die Projektaufgabe gelöst werden kann. Die Projektaufgabe wurde daher auch in „kleine Häppchen“ aufgeteilt und am Ende von jedem Modul wird ein Stück der Projektaufgabe gelöst). Mit beiden Wegen kannst du die geforderten Kompetenzen erwerben. Wenn du schon einiges über die funktionale Programmierung weist und gerne an etwas knobelst, kannst du Weg A wählen. Behalte dabei aber immer auch im Auge, was du am Ende der Einheit können musst. Wenn du in diesem Bereich aber noch unsicher bist und das Thema lieber Schritt für Schritt erklärt bekommen möchtest, um es zu begreifen, wähle zunächst lieber Weg B. Auch hier löst du die Projektaufgabe, aber eben Schritt für Schritt und es wird dir vorgegeben, wie der Lösungsweg aussehen kann. Wenn du einen der beiden Wege eingeschlagen hast, bedeutet das allerdings nicht, dass du darauf festgelegt bist! Natürlich kannst du vom Projekt auch wieder auf die Module umsteigen, zum Beispiel, wenn du bei einer Sache nicht weiterkommst. Ebenso kannst du auch zur Projektaufgabe wechseln, wenn du nach ein paar Modulen merkst, dass du jetzt schon gut im Thema drin bist, und versuchen möchtest, eigenständig weiter zu knobeln. Lege dir eine Mappe an, in der du alle Lösungen und (Zwischen-) Ergebnisse zu den Aufgaben bzw. dem Projektvorhaben festhältst. Wichtig: Du kannst deine Ergebnisse immer zwischendurch mit dem Lehrer abgleichen, um zu sehen, ob du auf dem richtigen Weg bist. Gerade wenn du an dem Projekt arbeitest (aber auch wenn du mit dem Skript eigenverantwortlich durch das Thema gehst), ist es wichtig, dass du festhältst, wie du vorgegangen bist. Das tust du bitte in einem Blog oder einer Mappe. Dort hältst du fest, in welche Probleme du gelaufen bist und wie du sie gelöst hast – und vor allem, was du dadurch gelernt hast. Monika Seiffert / überarbeitet A. Kück Seite 3 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Wichtige Ergebnisse, Erkenntnisse, Merksätze oder Lösungsstrategien gehören hier ebenfalls hin. Am besten ist es, wenn du das in deinen eigenen Worten oder auch durch eine Skizze ausdrücken kannst. Selbst wenn das dann nicht ganz richtig ist, ist es besser so, als etwas Fertiges abzuschreiben. Der Lehrer kann so drauf schauen und dir helfen, wenn du etwas noch nicht vollständig verstanden hast. Problemlösestrategien stehen bei diesem Projekt im Vordergrund nicht die Inhalte! Wenn du nicht genau weißt, was du aufschreiben sollst, lasse es dir vom Lehrer erläutern. Vorgefertigte Bögen, wo du Hilfestellung zu den Inhalten bekommst, kannst du beim Lehrer abholen. Weg A – Bearbeitung der Projektaufgabe: Wie du die Projektaufgabe löst, bleibt dir und deiner Kreativität ganz allein überlassen. Du kannst selbst im Internet recherchieren und nachsehen, ob es dort Erklärungen oder Videos gibt, die dir weiterhelfen. Du kannst aber auch die in diesem Skript angegebenen Materialien weiter hinten verwenden – denn sie passen zu der Projektaufgabe. Ein Anhaltspunkt, um dich mit dem Thema auseinanderzusetzen, sind die Begriffe, die bei den zu erreichenden Kompetenzen am Anfang der Beschreibung angegeben sind. Damit könntest du z.B. anfangen. Wenn du die Begriffe verstehst und was für Ideen damit verknüpft sind, bist du meistens schon voll mit dem Thema beschäftigt. Vielleicht hast du ja auch schon für dich einen Weg gefunden, wie du an neue Projekte herangehst, dann solltest du diesen Weg hier auch gehen. Wichtig ist unbedingt, dass du im Auge behältst, was du am Ende der Einheit können musst. Die Projektaufgaben sind so formuliert, dass du am Ende alles, was gefordert ist, auch kannst. Aber es gibt ja viele Lösungswege und vielleicht kannst du am Ende das ein oder andere noch nicht so gut. Dann frage bitte nach zusätzlichen Übungsaufgaben zu dem jeweiligen Thema oder Begriff - bis du das Gefühl hast, es gut genug anwenden zu können. Weg B – Bearbeitung der Module Gehe die Module Schritt für Schritt durch. Um die in jedem Modul angegebenen Aufgaben bearbeiten zu können, musst du vorher lernen, wie das geht. Nicht der Lehrer erklärt dir das, du entscheidest, auf welchem Weg du die Informationen haben möchtest und musst sie dann selbst so für dich zusammenstellen, dass du die Aufgaben lösen kannst. In der Regel kannst du wählen zwischen einem erklärenden Text, Webseiten, auf denen du passende Informationen findest oder erklärenden Videos. Diese kannst du dir so oft ansehen, wie du es brauchst und magst. Wenn du dennoch weitere Erklärungen benötigst, notiere dir deine Fragen und wende dich damit an deinen Lehrer oder suche im Internet selbst nach weiteren erklärende Texten oder Videos. Der Lehrer ist da, um dich in deinem Lernen zu unterstützen, aber du musst aktiv werden und nachfragen, wenn etwas unklar ist. Es ist wichtig, dass du alle neuen Begriffe, die du nicht kennst, klärst und richtig verstehst. Du musst sie in eigenen Worten beschreiben oder sie in einer Skizze darstellen können. Monika Seiffert / überarbeitet A. Kück Seite 4 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Gehe bei jedem der Kapitel wie folgt vor: 1. Zu Beginn jedes Kapitels findest du Verweise auf Materialien, die dir helfen sollen, das Thema zu verstehen, damit du später die dazugehörigen Aufgaben lösen kannst. Das können zum Beispiel sein: - erklärende Videos, - Infotexte (parallel zu den Videos), - Seiten in einem Schulbuch und - Texte in Zeitschriften oder auch - Internetseiten 2. Eventuell brauchst du trotz der Materialien eine zusätzliche Erklärung, dann frage beim Lehrer nach. Eventuell haben andere ja auch diese Frage, dann kannst du auch einen kurzen Lehrvortag dazu bekommen oder ein zusätzliches erklärendes Video. 3. Die Videos und Dateien, auf die in diesem Skript verwiesen werden, findest du a. auf dem YouTube-Kanal: youtube.com/alexkueck11 Die Videos beginnen alle mit „Ki-„ 4. Falls du in den Materialien auf unbekannte Begriffe stößt, notiere diese. Das können auch einfache Worte sein. Versuche sie mithilfe der weiteren Materialien oder durch eigene Recherchen zu klären. 5. Wenn du das Thema verstanden hast und alle darin enthaltenen Fachbegriffe in deinen eigenen Worten oder mittels einer Skizze erklären kannst, gehst du weiter zu den Aufgaben: - Die Aufgaben fordern dich auf, das Gelernte nun anzuwenden. - Gehe die Aufgabe, die im Skript angegeben sind der Reihe nach durch (die Aufgaben sind logisch aufeinander aufgebaut, daher der Reihe nach durchgehen). - Wenn du eine Aufgabe nicht bearbeiten kannst, gehe noch einmal über die Materialien oder schaue dir das erklärende Video erneut an. Vielleicht hast du einen neuen Begriff oder eine neue Idee noch nicht ganz verstanden – dann hole das nun nach. - Wenn das nichts hilft, frage bei Mitschülern oder dem Lehrer nach. Lass dir aber nicht die ganze Aufgabe lösen. Wichtig ist, dass du eigenständig an einer Lösung arbeitest – auch wenn sie am Ende vielleicht nicht ganz richtig ist. - Wenn du an deiner Lösung zweifelst, schaue in den Musterlösungen nach (falls vorhanden) oder frage den Lehrer, ob er sich deine Ergebnisse auch zwischendurch anschauen kann. Falls du bei einer Aufgabe doch noch Schwierigkeiten hast, schaue dir noch einmal die erklärenden Materialien an. Wichtig ist, dass du selbst an den Lösungen arbeitest und nicht andere das mache Monika Seiffert / überarbeitet A. Kück Seite 5 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 lässt. 6. Wenn Aufgaben, die mit einem Zusatz gekennzeichnet sind, brauchst du nicht bearbeiten. Diese Aufgaben sind schwieriger und gehen über das hinaus, was du als Minimum erreichen musst, um das Skript erfolgreich abzuschließen. Für eine abschließende Note im Einser- oder Zweier-Bereich solltest du aber zumindest einige dieser Zusatzaufgaben bearbeiten. 7. Es wird zwischendurch Tests geben, diese werden rechtzeitig angegeben. Auch welche Kompetenzen in den Tests angefragt werden. Wichtig: Wichtig ist, dass du bei der Arbeit mit dem Skript selbst aktiv wirst und deinen eigenen Lernprozess überwachst: Liege ich noch gut in der Zeit? Habe ich alles verstanden/begriffen oderbrauche ich noch Hilfe oder zusätzliche Erklärungen? Wie kann ich Zusammenhänge besser verstehen/begreifen, die noch unklar sind? Wer kann mir bei der Bearbeitung der Aufgaben helfen? Du musst selbst entscheiden, wo du dir weitere Informationen/hilfen holen möchtest und von dir aus auf deinen Lehrer oder Mitschüler zugehen, um Fragen zu stellen, damit du die Themen und Begriffe besser verstehst und am Ende die geforderten Zielkompetenzen erreichst! Es wird am Ende eine Klausur geben, die du bestehst, wenn du alle Aufgaben bearbeitet und verstanden/begriffen hast und die Kompetenzen erreicht hast. Monika Seiffert / überarbeitet A. Kück Seite 6 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Materialien zum Skript Videos Die Videos sind alle auf dem YouTube-Kanal „alexkueck11“ zu finden und fangen fast alle mit “KI – ” an. „KI- Scheme Editor“ - http://youtu.be/CJnPlzK694M „KI - Konstanten“ - http://youtu.be/0KOybwo0iVI „KI - Scheme – First-Rest“ - http://youtu.be/UJD14Erbq2M „KI- Scheme – Listen I“ – http://youtu.be/TeGOhvoSdc4 „KI- Scheme – Listen II“ – http://youtu.be/hCqdeVBo1LE „KI - Scheme – Funktionen selber schreiben I“ - http://youtu.be/oOVD1-XK5b4 „KI - Scheme – Funktionen selber schreiben II“ - http://youtu.be/o-I24QJCQnc „KI - Rekursion – die Treppe“ - http://youtu.be/jHwfpSM9jvo “KI – Rekursion I mit Aufgabe ” - http://youtu.be/5ekHE0r9bUA “KI – Rekursion II mit Aufgabe” - http://youtu.be/G7Nr8Pbe6bk “KI - Scheme - Rekursion am Beispiel” - http://youtu.be/azFBpZo_UAw „KI-Scheme - Hilfen zu Funktionen - Potenzieren“- http://youtu.be/A4pJ9g7eAqg „KI - Grammatiken“ - http://youtu.be/vMBnrkZHN5k „KI - Grammatiken – Parsebaum einfach“ - http://youtu.be/I3mukYnES5o „KI - Grammatiken - Suchbaum Tiefensuche“ – http://youtu.be/TAtRFgyjYzA „KI - Grammatiken - Suchbaum Breitensuche“ - http://youtu.be/dCk9L90mwW0 Texte Skript KI und Scheme -Text Editor und Lexikon Skript KI und Scheme -Text first-rest-als Liste Skript KI und Scheme -Text Einschub I Grundlagen in Scheme Skript KI und Scheme -Text Funktionen selber schreiben Skript KI und Scheme -Text Rekursion Skript KI und Scheme -Grammatiken Skript KI und Scheme -Grammatik Prüfung Skript KI und Scheme -Grammatik Prüfung und Übersetzung Parser Skript KI und Scheme -Parser breitensucheparserschülerversion.ss Parser alternativ.doc parser mit übersetzung ohne genus parser mit übersetzung.ss ubahnfahrplanmitzeiten.rkt Monika Seiffert / überarbeitet A. Kück Seite 7 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Lösungen Skript automatische Sprachübersetzung ohne Text Lsg parserneualex parserneualex incl übersetzung neu Monika Seiffert / überarbeitet A. Kück Seite 8 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Projekt automatische Sprachübersetzung Voraufgabe Bitte fülle die zugehörige Kompetenzübersicht vor dem Beginn des Skriptes einmal aus Projekt-Aufgabe: Einen automatischen Übersetzer zu Programmieren (mit einer funktionalen Programmiersprache – hier Scheme), der folgendes kann: 1. Version: einfache Wort-zu-Wort-Übersetzung 1. Einen einfachen Wortübersetzer schaffen, der Worte von einer Sprache in eine andere übersetzt. 2. Einen einfachen Satzübersetzer schaffen, der einen Satz wortweise ohne Bezug auf eine Grammatik übersetzt. 2. Version: mit Grammatik und Grammatikprüfung - deutsche Sätze anhand einer vorgegebenen Grammatik auf deren grammatikalische Richtigkeit überprüfen. - eine Wortweise Übersetzung liefern, wenn der ursprüngliche Satz grammatikalisch korrekt ist. - Zumindest Ansätze sollten möglich sein, einen Satz nicht nur wortweise zu übersetzen, sondern auch auf die richtige Grammatik zu achten (z.B. richtige Artikelwahl, richtiger Fall, richtige Konjugation, etc.) - von Deutsch in eine andere Sprache übersetzen (und umgekehrt). Konkrete Aufgabe: 1. Mache dich zunächst mit dem Projekt vertraut. 2. Scheme ist eine funktionale Programmiersprache – dies ist eine für dich bisher unbekannte Art zu programmieren, da Funktionen ineinander verschachtelt werden, anstatt sie wie bisher bekannt, hintereinander weg zu schreiben. Du solltest dich also ganz grundsätzlich mit der neuen Programmiersprache auseinander setzen. 3. Implementieren den geforderten Wort- und Satzübersetzer in Scheme. 4. Verbessere die Übersetzung, indem du Grammatiken mit einbeziehst. Dazu beschäftige dich zunächst mit formalen Grammatiken. Stelle ein einfaches Regelwerk einer formalen Grammatik auf, um einige wenige Sätze korrekt zu erkennen (hier geht es zunächst um das Parsen von gegebenen Sätzen, das heißt zu erkennen, ob ein gegebener Satz anhand einer gegebenen Grammatik korrekt zusammengestellt ist oder nicht). Stelle ein dazu passendes Regelwerk einer formalen Grammatik auf. Erweitere es in seiner Funktionalität, indem du zusätzliche Regeln einfügst und somit den zu testenden Sprachumfang erweiterst. 5. Es wird dir ein einfacher Parser vorgegeben (s.u.), in dem eine solche Grammatik umgesetzt wurde und der somit in der Lage ist, Sätze anhand dieser Grammatik als korrekt oder nicht zu erkennen. Stelle die zu dem Parser gehörenden Grammatikregeln zusammen, erweitere den Parser, so dass er auch komplexere Sätze erkennen kann. Passe die Grammatik ebenfalls an. 6. Schaffe eine Möglichkeit, geprüfte Sätze auch zu übersetzen. Wenn möglich sollte die Übersetzung auch schon grammatikalische Regeln beachten (zumindest im Ansatz). Monika Seiffert / überarbeitet A. Kück Seite 9 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Vorgabe des Parsers: Skript KI und Scheme -Parser Erstelle ein Video, in dem du deine Überlegungen und Implementierungen dazu erläuterst. Füge dies deinem Portfolio hinzu. Fülle folgenden Fragebogen erneut am Ende des Projektes zu deiner Sicherheit aus: Kompetenzen, die du nun erreicht haben solltest + 0 Ich kenne grundlegende Konstrukte in Scheme und kann sie in einfachen Funktionen anwenden: - first/rest - cons - append - cond - Ergebnisraum Ich kann einfache Funktionen in Scheme selbst schreiben Ich verstehe, wie Rekursion funktioniert. Ich kann rekursive Funktionen in Scheme implementieren Ich kann gegebene Problemstellungen in formalisierter Umgangssprache zusammenfassen und dann in Scheme implementieren Ich kann einen Wortübersetzer in Scheme implementieren Ich kann einen einfachen Satzübersetzer in Scheme implementieren. Ich kenne formale Grammatiken und kenne ihren Einsatzzweck in der Informatik. Ich verstehe den Unterschied zwischen natürlich sprachlichen Grammatiken und formalen Grammatiken. Ich kann zu gegebenen Grammatiken Suchbäume aufbauen. Ich kann zu gegebenen Suchbäumen die passende formale Grammatik aufbauen. Ich kann mit Hilfe eines Suchbaumes oder einer gegebenen Grammatik feststellen, on ein gegebener Satz entsprechend der gegebenen Grammatik korrekt ist. Ich kann Sätze mit Hilfe eines vorgegebenen Parsers auf grammatikalische Korrektheit prüfen. Ich kann einen vorgegebenen Parser entsprechend einer neuen Grammatik erweitern bzw. anpassen. Zusatz Ich kann zusätzlich zur Grammatikprüfung den Satz auch übersetzen - (ein weiteres mögliches Projekt findest du am Ende des Skriptes) Monika Seiffert / überarbeitet A. Kück Seite 10 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Mit oder ohne Skript weitermachen Vorgehen: Am Anfang des Skriptes wird dir eine Projektaufgabe gestellt. 1. du wechselst auf das Projekt, in dem du nur diese Aufgabe bearbeiten musst (behalte dabei im Auge, was du am Ende können musst - siehe "Kompetenzen")! 2. In diesem Skript wird das Projekt Stück für Stück erarbeitet und du bekommst detaillierte Erklärungen und einen Weg, wie du vorgehen musst, vorgegeben. Es gibt dir gezielt Hilfestellung mit erklärenden Texten und Videos, um die Projektaufgabe Stück für Stück zu lösen. Wenn du unsicher bist, welchen Weg du einschlagen sollst, komme zu mir und wir klären das. Wichtig: Du kannst deine Ergebnisse immer zwischendurch mit dem Lehrer abgleichen, um zu sehen, ob du auf dem richtigen Weg bist, aber du musst in einem Blog oder einer Mappe dokumentieren, in welche Probleme du gelaufen bist und wie du sie gelöst hast – und vor allem, was du dadurch gelernt hast. Problemlösestrategien stehen bei diesem Projekt im Vordergrund nicht die Inhalte! Monika Seiffert / überarbeitet A. Kück Seite 11 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Modul 1 Bearbeitung von Listen in Scheme: first und rest Ein automatisches Übersetzungssystem benötigt sicherlich: - ein elektronisches Wörterbuch oder auch Lexikon (hier *lex* genannt), in dem alle relevanten Wörter und ihre dazu passenden Übersetzungen gespeichert sind. Z.B. bei einem Wörterbuch Englisch-Deutsch: dog – Hund cat – Katze …… - eine Funktion, die die Übersetzung selbst vornimmt. D.h. die die passenden Übersetzungen aus dem Wörterbuch/Lexikon zu einem vorgegebenen Wort raussucht (dazu später!!!). Wir wollen ein solches Übersetzungssystem mit Hilfe der Sprache SCHEME erstellen. Elektronisches Wörterbuch Wir fangen erst mal mit dem elektronischen Wörterbuch an. Wie man das in Scheme umsetzt - lies dazu den unten angegebenen Text oder schaue die Videos. Video: o „KI- Scheme Editor“ - http://youtu.be/CJnPlzK694M o „KI - Konstanten“ - http://youtu.be/0KOybwo0iVI Eigenständige Recherche im Internet: o … Erklärender Text: o Skript KI und Scheme -Text Editor und Lexikon Dann kannst du die folgenden Aufgaben bearbeiten. Video: o „KI – Scheme – First-Rest“ - http://youtu.be/UJD14Erbq2M o „KI- Scheme – Listen I“ – http://youtu.be/TeGOhvoSdc4 o „KI- Scheme – Listen II“ – http://youtu.be/hCqdeVBo1LE Gib die folgenden Ausdrücke im Interpreterfenster (unteres Fenster) ein und notiere die Antworten: Eingabe Ausgabe (first *lex*) Monika Seiffert / überarbeitet A. Kück Seite 12 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 (rest *lex*) (first (rest *lex*)) (first (first *lex*)) (rest (first *lex*)) (first (rest (first *lex*))) Beschreibe, was die Funktionen first und rest machen: Stellt man jeden Funktionsaufruf durch eine Box dar, so können die obigen Hintereinanderausführungen der Funktionen first und rest wie folgt dargestellt werden (beachte, dass verschachtelte Funktionen immer von innen nach außen bearbeitet werden): (Video „KI – Scheme – First-Rest“ - http://youtu.be/UJD14Erbq2M) Eingabe Darstellung (first *lex*) (rest *lex*) (first (rest *lex*)) Monika Seiffert / überarbeitet A. Kück Seite 13 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Aufgabe 1.1: Ergänze die Darstellungen für die restlichen Funktionsaufrufe: (first (first *lex*)) (rest (first *lex*)) (first (rest (first *lex*))) Zusätzlich: Angenommen, folgende Liste sei gegeben: `((1 2 3) (4 5 6) (7 8 9)) i. Gib an, welche Ausgaben durch folgende verkettete Funktionen erfolgen würden: a. (first (rest (rest (first ´((1 2 3) (4 5 6) (7 8 9)))))) b. (rest (first (rest ´((1 2 3) (4 5 6) (7 8 9))))) c. (first (first (rest ´((1 2 3) (4 5 6) (7 8 9))))) ii. Gib an durch welche Verkettung der Funktionen „first“ und „rest“ du folgende Ausgaben erhalten würdest: a. 2 b. 6 c. (2 3) Zusatz Was genau bedeutet first (eigentlich car genannt) und rest (eigentlich cdr genannt)? Erklärender Text: o Skript KI und Scheme -Text first-rest-als Liste Monika Seiffert / überarbeitet A. Kück Seite 14 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Aufgabe 1.2. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Ich kann mit dem Editor Dr. Racket (für die Implementierung von SchemeFunktionen) umgehen. Ich kenne die polnische Schreibweise und kann sie in Scheme-Funktionen umsetzen. Ich verstehe, dass man in Scheme statt mit Variablen mit Listen arbeitet. Ich kann Listen in Scheme anlegen und sie mit first“ und rest bearbeiten. Ich kann Konstanten in Scheme anlegen und verstehe ihren Einsatzzweck. Ich kenne grundlegende Konstrukte in Scheme und kann sie in einfachen Funktionen anwenden: - first/rest Wenn du dich sicher fühlst bearbeite nun den Test A und gib ihn anschließend zur Korrektur beim Lehrer ab. Monika Seiffert / überarbeitet A. Kück Seite 15 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Modul 2 Funktionen selber schreiben Video: o „KI - Scheme – Funktionen selber schreiben I“ - http://youtu.be/oOVD1-XK5b4 o „KI - Scheme – Funktionen selber schreiben II“ - http://youtu.be/o-I24QJCQnc o „KI - Scheme – Funktionen selber schreiben III“ - http://youtu.be/_DRw8_0F-og Eigenständige Recherche im Internet: o … Erklärender Text: o Skript KI und Scheme -Text Funktionen selber schreiben Aufgabe 2.1: Schreibe nach dem Muster der Funktion zweites ebenso die Funktionen a) drittes (mit Probe, ob die Liste überhaupt lang genug ist!) b) eine Funktion ohneErstes (die Funktion gibt den Rest der Liste ohne das erste Element zurück). c) eine Funktion ohneErstesundZweites (die Funktion gibt den Rest der Liste ohne das erste und zweite Element zurück). d) Eine Funktion ohneZweites (die Funktion gibt den Rest der Liste ohne das zweite Element zurück). e) Eine Funktion ohneViertes (die Funktion gibt den Rest der Liste ohne das dritte Element zurück). o Tipp: benutze für d) und e) die Scheme-Funktion cons, append bzw. list um Listen zusammenzusetzen. Siehe dazu Video „KI - Scheme – Funktionen selber schreiben III“ - http://youtu.be/_DRw8_0F-og c) Zusätzlich: Probiere auch, eine Funktion n-tes zu schreiben. Tipp: Die Funktion n-tes muss offensichtlich zwei Parameter haben, nämlich die Zahl n und die liste (also (define (n-tes n liste), dessen n-tes Element zurückgegeben werden soll. Ein Problem besteht darin, dass es von dem Wert des Parameters n abhängt, wie oft eine Restliste gebildet werden muss. Dies ist zum Zeitpunkt der Funktionsdefinition unbekannt. Eine mögliche funktionale Modellierung lautet: Für den Fall, dass 1. die Liste leer ist, gib zurück: „die liste enthaelt nicht genug elemente“; 2. die Zahl n <= 0 ist, hat der Benutzer der Funktion einen unsinnigen Parameter angegeben. Er erhält einen entsprechenden Hinweis. 3. die Zahl n = 1 ist, wird das erste Element der Liste zurückgegeben. 4. andernfalls wird das n-1-te Element der Restliste bestimmt (Achtung Rekursion!!!!). Monika Seiffert / überarbeitet A. Kück Seite 16 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Aufgabe 2.2. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Ich kenne grundlegende Konstrukte in Scheme und kann sie in einfachen Funktionen anwenden: - cons - append - cond - Ergebnisraum Ich kann einfache Funktionen in Scheme selbst schreiben Resümee: Was haben wir bisher in Bezug auf unser Ziel einen eigenen automatischen Übersetzer zu implementieren, geschafft? 1. Wir kennen grundlegende Konstrukte in Scheme, 2. Wir können einfache Funktionen in Scheme selber schreiben Was fehlt noch? 3. Wir müssen in der Lage sein komplexere Funktionen zu schreiben 4. Viele Konstrukte der funktionalen Programmierung arbeiten mit Rekursion, also muss auch das geklärt und erprobt werden 5. Wie kann ich einen automatischen Wortübersetzer programmieren? 6. Wie kann ich Sätze automatisch übersetzen lassen (zunächst ohne Beachtung der Grammatik, später dann mit Beachtung der Grammatik)? Wenn du dich sicher fühlst bearbeite nun den Test B und gib ihn anschließend zur Korrektur beim Lehrer ab. Monika Seiffert / überarbeitet A. Kück Seite 17 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Modul 3 Rekursion Video: o „KI - Rekursion – die Treppe“ - http://youtu.be/jHwfpSM9jvo o “KI – Rekursion I mit Aufgabe ” - http://youtu.be/5ekHE0r9bUA o “KI – Rekursion II mit Aufgabe” - http://youtu.be/G7Nr8Pbe6bk o “KI - Scheme - Rekursion am Beispiel” - http://youtu.be/azFBpZo_UAw o „Ki-Scheme - Hilfen zu Funktionen - Potenzieren“- http://youtu.be/A4pJ9g7eAqg Eigenständige Recherche im Internet: o … Erklärender Text: o Skript KI und Scheme -Text Rekursion Problemstellungen werden in Scheme rekursiv gelöst und nicht mit Schleifen. Rekursion ist dem menschlichen Denken nachempfunden und bietet sich bei der Verschachtelung von Funktionen, die in Scheme betrachtet wird, daher besonders an. Was bedeutet Rekursion? 1. Eine sich selbst aufrufende Funktion. 2. Es muss eine Abbruchbedingung existieren, die das „sich selbst aufrufen beendet, wenn sie erreicht wurde. 3. Die an die Funktion übergebenen Parameter müssen bei jedem erneuten Aufruf so gestaltet sein, dass sich das ursprüngliche Problem verringert und irgendwann die Abbruchbedingung erreicht werden kann. Voraussetzung: Zerlegung einer komplexen Problemstellung in kleinere Probleme muss möglich sein. Das Schreiben rekursiver Funktionen erfordert einige Übung. Daher die folgenden Übungsaufgaben: Aufgabe 3.1: Lösungsvideo: “KI – Rekursion II ” - http://youtu.be/5B2KqSXOfA4 Entwickle jeweils eine funktionale Modellierung, d.h. 1. formuliere einen Algorithmus in formalisierter Umgangssprache. 2. implementiere diese anschließend mit SCHEME und 3. zeichne jeweils einen Rekursionsbaum. Verwende das Scheme-Konstrukt „cons“ oder „append“, um z.B. die Elemente einer Liste, die nicht entfernt werden sollen, „zwischen zu speichern“ (siehe Scheme-Kurzreferenz)), um sie anschließend (nach dem rekursiven Aufstieg) ausgeben zu können. a) Die Funktion entfernen1 soll, wenn sie ein objekt in einer Liste liste gefunden hat, dieses anschließend ausgeben. Diesmal soll die Funktion aber für eine Lexikon-Liste wie oben beschrieben funktionieren (Bsp: (entfernen 3 `(1 2 3 4 5) -> 3)) b) Die Funktion enthalten? soll prüfen, ob ein objekt in einer liste enthalten ist. Falls ja, soll sie #t (true) zurückgeben, andernfalls #f (false) Bsp: (enthalten? 3 `(1 2 3 4)) -> #t. Monika Seiffert / überarbeitet A. Kück Seite 18 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 c) Die Funktion entfernen2 soll die Liste zurückgeben, die entsteht, wenn man alle Vorkommen von objekt aus einer vorgegebenen liste entfernt. Bsp: (entfernen2 3 `(1 2 3 4 5) -> (1 2 4 5) d) Die Funktion ersetzen soll die Liste zurückgeben, die entsteht, wenn man alle Vorkommen von objekt1 in einer vorgegebenen liste durch objekt2 ersetzt. e) Erstelle ein kurzes Video zu einer der oben aufgeführten Funktionen, in dem du deine Überlegungen und Implementierungen dazu erläuterst. Füge dies deinem Portfolio hinzu. Zusätzlich: a) Die Funktion verketten soll eine Liste aller Elemente von liste1 und liste2 zurückgeben. Die Reihenfolge der Listenelemente soll unverändert bleiben. Bsp.:(verketten `(a b c) `(1 2 3)) liefert als Ergebnis `(a 1 b 2 c 3). b) Die Funktion umdrehen soll eine Liste zurückgeben, die die Elemente einer vorgegebenen liste in umgekehrter Reihenfolge enthält. Aufgabe 3.2. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Ich verstehe, wie Rekursion funktioniert. Ich kann rekursive Funktionen in Scheme implementieren Resümee: Was haben wir bisher in Bezug auf unser Ziel einen eigenen automatischen Übersetzer zu implementieren, geschafft? 4. Wir kennen grundlegende Konstrukte in Scheme, 5. Wir können einfache Funktionen in Scheme selber schreiben. 6. Wir haben das Prinzip der Rekursion verstanden und können rekursive Funktionen selbst schreiben. Was fehlt noch? 7. Wie kann ich einen automatischen Wortübersetzer in Scheme programmieren? 8. Wie kann ich Sätze automatisch übersetzen lassen (zunächst ohne Beachtung der Grammatik, später dann mit Beachtung der Grammatik)? Wenn du dich sicher fühlst bearbeite nun den Test C und gib ihn anschließend zur Korrektur beim Lehrer ab. Monika Seiffert / überarbeitet A. Kück Seite 19 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Modul 4 Ein einfacher Wort und Satzübersetzer Zurück zu unserem Sprachübersetzer! Es soll eine Funktion wortUebersetzung erstellt werden, mit der ein vom Benutzer vorgegebenes Wort mit Hilfe unseres Lexikons übersetzt werden kann. Aufgabe 4.1: a) Formuliere einen Algorithmus in formalisierter Umgangssprache, um ein gegebenes Wort entsprechend eines Lexikons zu übersetzen. b) Implementiere eine passende SCHEME-Funktion (wortUebersetzung wort lexikon). (Bsp: (wortuebersetzer `cat *lex*) -> katze). Zusätzlich: c) Implementiere die Funktion (wortUebersetzung wort lexikon) so, dass man in beide Richtungen übersetzen kann (Bsp: (wortuebersetzer `cat *lex*) -> katze) und (wortuebersetzer `katze *lex*) -> cat). d) Erweitere die Funktion (wortUebersetzung wort lexikon) und das Lexikon entsprechend, so dass man in zwei Sprachen gleichzeitig übersetzen kann. e) Teste die Funktion sorgfältig. Überlege dazu, welche grundsätzlich unterschiedlichen Fälle vorkommen können. Verbessere die Funktion, falls erforderlich. Anschließend soll nun ein ganzer Satz Wort für Wort aus dem Englischen ins Deutsche übersetzt werden. Wir gehen dabei davon aus, dass der englische Satz in Form einer Liste vorliegt, beispielsweise '(the cat eats). Ein etwas umfangreicheres Lexikon findest du hier: lexikon.ss. Aufgabe 4.2: a) Formuliere einen Algorithmus in formalisierter Umgangssprache um einen ganzen Satz wortweise zu übersetzen. b) Fertige einen Rekursionsbaum zu a) an o (“KI – Rekursion II mit Aufgabe” - http://youtu.be/G7Nr8Pbe6bk) c) Erstelle eine passende SCHEME-Funktion zu a) (satzUebersetzung satz lexikon). Bsp: (satzuebersetzer `(the cat eats) *lex*) -> (die katze frisst) (Hinweis: mit Hilfe der SCHEME-Funktion cons kann ein neues Element vorn in eine Liste eingefügt werden (siehe Scheme-Kurzreferenz). Beispiel: (cons 'a '(b c d)) ergibt (a b c d)). d) Teste die Funktion sorgfältig. Verbessere die Funktion, falls erforderlich. Monika Seiffert / überarbeitet A. Kück Seite 20 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Zusätzlich: e) Implementiere die Funktion (satzUebersetzung satz lexikon) so, dass man in beide Richtungen übersetzen kann. f) Erweitere die Funktion (satzUebersetzung satz lexikon) und das Lexikon entsprechend, so dass man in zwei Sprachen gleichzeitig übersetzen kann. g) Formuliere schriftlich, welche Übersetzungen die Funktion zufrieden stellend vornehmen kann und welche Übersetzungsfehler unvermeidlich sind. Überlege, wie die Übersetzung verbessert werden könnte. Mängel eines Wort-zu-Wort-Übersetzers Während ein Lexikon mit einem zu geringen Umfang nur ein Zeitproblem darstellt, können Wort-zu-Wort-Übersetzer einige Übersetzungsfehler grundsätzlich nicht vermeiden: 1. Bei Worten der Quellsprache, denen in der Zielsprache mehrere unterschiedliche Worte zugeordnet sind (Wortambiguität), kann nicht entschieden werden, welches Wort der Zielsprache die adäquate Übersetzung ist. Beispiel: Peter is a football fan --> Peter ist ein Fußball Ventilator. 2. Zusammen gehörige Wörter werden getrennt übersetzt. Beispiel: The cat runs into the mouse. --> Die Katze rennt in die Maus. 3. Grammatisch falsche Übersetzung, beispielsweise Eat the mouse! --> Fressen die Maus! und The cat takes a walk --> Die Katze nimmt ein Spaziergang. 4. Falsche Wortstellung in der Übersetzung. Beispiel: The cat runs after the mouse. --> Die Katze rennt hinterher der Maus. Viele Grammatikfehler lassen sich vermeiden, wenn der Übersetzer Grammatikkenntnisse hat. Dabei ist zunächst zu prüfen, ob der eingegebene Satz überhaupt grammatisch korrekt bezüglich der Grammatik der Quellsprache eingegeben wurde (Grammatikprüfer oder Parser genannt). Anschließend ist dafür zu sorgen, dass ein passender grammatisch korrekter Satz in der Zielsprache erzeugt wird. Um die Qualität unseres Übersetzers zu verbessern, ist es also erforderlich, sich mit der Grammatik englischer und deutscher Sätze zu befassen. Wir beschränken uns dabei exemplarisch auf einen kleinen Grammatikausschnitt. Monika Seiffert / überarbeitet A. Kück Seite 21 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Wenn du dich sicher fühlst bearbeite nun den Test D und gib ihn anschließend zur Korrektur beim Lehrer ab. Aufgabe 4.3. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Ich kann gegebene Problemstellungen in formalisierter Umgangssprache zusammenfassen und dann in Scheme implementieren Ich kann einen Wortübersetzer in Scheme implementieren Ich kann einen einfachen Wort-zu-Wort - Satzübersetzer in Scheme implementieren. Resümee: Was haben wir bisher in Bezug auf unser Ziel einen eigenen automatischen Übersetzer zu implementieren, geschafft? 1. Wir kennen grundlegende Konstrukte in Scheme, 2. Wir können einfache Funktionen in Scheme selber schreiben. 3. Wir haben das Prinzip der Rekursion verstanden und können rekursive Funktionen selbst schreiben. 4. Wir können einzelne Wort oder ganze Sätze wortweise übersetzen. Was fehlt noch? 5. Wie kann ich gewährleisten, dass die zu übersetzenden Sätze grammatikalisch korrekt sind? 6. Wenn die zu übersetzenden Sätze grammatikalisch korrekt sind, wie kann ich sie dann übersetzen und am besten auch mit korrekter Grammatik in der neuen Sprache? Monika Seiffert / überarbeitet A. Kück Seite 22 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Zusatz Modul 5 Funktionen als Parameter Das Lexikon für unseren Wort-zu-Wort-Übersetzer enthält nur wenige Einträge. Es wäre gut, wenn ein Benutzer neue Lexikoneinträge hinzufügen könnte. Dazu soll eine universelle Funktion geschrieben werden, mit der man in eine beliebige Liste ein neues Element sortiert einfügen kann. Funktionale Modellierung (Algorithmus in formalisierter Umgangssprache): 1. Wenn die Liste leer ist, füge das objekt vorne in die Liste ein 2. Wenn das objekt entsprechend des in der Funktion angegebenen vergleichs mit dem ersten Element der Liste true ergibt, dann hänge das objekt vorne an die Liste an und gib es zusammen mit dem Rest der Liste aus. 3. Sonst merke dir das erste Element der Liste und rufe dich selbst wieder auf mit dem Rest der Liste. Die folgende SCHEME-Implemention leistet das Gewünschte: (define (einfuegen objekt liste vergleich) (cond ((null? liste) (cons objekt '())) ((vergleich objekt (first liste)) (cons objekt liste)) (else (cons (first liste) (einfuegen objekt (rest liste) vergleich))))) Die Funktion kann etwa wie folgt aufgerufen werden: (einfuegen 4 '(2 7 9) <) oder (einfuegen 4 '(9 7 2) >=) Um Symbole in eine Liste von Symbolen alphabetisch aufsteigen einzufügen, wird eine entsprechende Vergleichsfunktion benötigt (siehe auch Scheme-Kurzreferenz): (define (symbol-kleiner symbol1 symbol2) (string<=? (symbol->string symbol1) (symbol->string symbol2))) Damit kann man die Funktion einfuegen nun wie folgt benutzen: (einfuegen 'b '(a c d) symbol-kleiner) Funktionen können also in SCHEME wie Parameter irgendeines anderen Typs behandelt werden. Zusatz Aufgabe 5.1: a) Probiere die obigen Funktionen aus. Teste insbesondere (einfuegen objekt liste symbol-kleiner) b) Schreibe eine Funktion lex-kleiner zum Einfügen eines neuen Lexikon Eintrages in ein vorhandenes Lexikon (*lex*). Dazu wird eine Vergleichsfunktion benötigt, die Lexikoneinträge alphabetisch sortieren kann. Probiere anschließend, ob die neue Funktion mit der einfuegen Funktion aufgerufen werden kann. Bsp: ((einfuegen `(cat katze) `((baer bär) (dog hund) (mouse maus)) lex-kleiner) c) Zusätzlich: Schreibe eine Funktion lex-sortieren, mit deren Hilfe man ein Lexikon alphabetisch aufsteigend sortieren kann. Monika Seiffert / überarbeitet A. Kück Seite 23 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Modul 6 Grammatik Video: o „KI - Grammatiken“ - http://youtu.be/vMBnrkZHN5k o „KI - Grammatiken – Parsebaum einfach“ - http://youtu.be/I3mukYnES5o Erklärender Text: o Skript KI und Scheme -Grammatiken Aufgabe 6.1: Spiele das Grammatikspiel (Spielregeln: Grammatikspiel, Karten beim Lehrer abholen) Aufgabe 6.2: 1. Kann die grammatikalische Korrektheit des Satzes „Die Abiturienten schrieben eine Klausur über Vererbung im Raum-105“ mit Hilfe der Regeln unten geprüft werden? Falls nein, gib eine geeignete Regelmenge an (d.h. erweitere die Regelmenge entsprechend). S NP NP VP --> NP VP --> N --> ART N --> V VP PP N N --> V NP --> P NP --> cat --> mouse ART P V --> the --> in --> eats 2. Gib eine geeignete Regelmenge an, mit der die grammatikalische Korrektheit der folgenden Sätze geprüft werden kann: „the dog runs“ „the cat follows the mouse“ Zusätzlich: Gib eine geeignete Regelmenge an, mit der die grammatikalische Korrektheit der folgenden Sätze geprüft werden kann: „the mouse runs into the hole fast“ Aufgabe 6.2. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Ich kenne formale Grammatiken und kenne ihren Einsatzzweck in der Informatik. Ich verstehe den Unterschied zwischen natürlich sprachlichen Grammatiken und formalen Grammatiken Wenn du dich sicher fühlst bearbeite nun den Test E und gib ihn anschließend zur Korrektur beim Lehrer ab. Monika Seiffert / überarbeitet A. Kück Seite 24 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Modul 7 Grammatikprüfer (Parser) Soll die Grammatikprüfung von einer Maschine vorgenommen werden, so muss diese häufig unterschiedliche Regeln ausprobieren und manchmal bereits gefundene Teillösungen wieder verwerfen. Video: o „KI - Grammatiken - Suchbaum Tiefensuche“ – http://youtu.be/TAtRFgyjYzA o „KI - Grammatiken - Suchbaum Breitensuche“ - http://youtu.be/dCk9L90mwW0 Eigenständige Recherche im Internet: o … Erklärender Text: o Skript KI und Scheme -Grammatik Prüfung Aufgabe 7.1: Vervollständige den Suchbaum auf einem Extrablatt im Querformat (benutze folgende Regeln): S NP NP VP --> NP VP --> N --> ART N --> V VP PP N N --> V NP --> P NP --> cat --> mouse ART P V --> the --> in --> eats Aufgabe 7.2: 1. Kennzeichne die Reihenfolge der Entwicklung der Zustände des (Tiefen-)Suchbaumes durch entsprechende Nummern. Wie häufig muss ein backtracking (Aufgabe entwickelter Zustände und Rückzug auf den Vorgängerzustand) stattfinden, bis die zu dem gegebenen Satz passende Struktur gefunden wird? 2. Stelle einen Suchbaum (Tiefensuche) zu folgendem Satz (und der unten gegebenen Grammatik) auf: `(Sven follows the cat) Grammatik: S -> NP VP NP -> N NP -> ART N VP -> V VP -> V NP N -> cat N -> ‘dog N -> ‘Sven V -> ‘eats V -> ‘follows V -> ‘jumps ART -> ‘the Monika Seiffert / überarbeitet A. Kück Seite 25 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Zusätzlich: Bei einer Breitensuche werden in jedem Durchgang „Schichten“ aufgebaut. D.h. jedes NonTerminal wird durch alle Möglichkeiten in einer Stufe des Baumes ersetzt, bis nur noch Terminale an den Enden bestehen. Diese werden dann mit den Symbolen im Satz Wort für Wort verglichen. Entwirf zu dieser Breitensuche einen entsprechenden Suchbaum zu obigem Satz `(the cat eats the mouse). Video dazu: „KI - Grammatiken - Suchbaum Breitensuche“ - http://youtu.be/dCk9L90mwW0 Für eine funktionale Modellierung des Tiefen-Suchproblems mit Scheme repräsentieren wir jeden Zustand durch eine Liste, die sich aus zwei Teillisten zusammensetzt (eingabe und keller). In der keller-Liste halten wir alle im Laufe der Zeit entwickelten Grammatikkonstrukte (Zusammensetzung möglicher korrekter Nonterminal-Kombinationen), die noch nicht verworfen wurden. Die eingabe-Liste enthält anfangs den eingegebenen Satz, im Laufe der Zeit jeweils den restlichen Teil des Eingabesatzes, dessen Grammatik noch nicht analysiert wurde. Um zu verstehen, wie der Grammatikprüfer arbeitet, schauen wir uns an, wie er die keller- und eingabe-Liste aufbaut. Beispiel-Zustandsliste für die Eingabe "the cat eats the mouse": Aufgabe 7.3: Vervollständige die Sequenz der Zustandslisten per Hand. Monika Seiffert / überarbeitet A. Kück Seite 26 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Der Grammatikprüfer kann dann wie folgt implementiert werden: (define (start eingabe) (let ((startkeller (list 'np 'vp))) (parse eingabe startkeller))) (define (parse eingabe keller) (display eingabe) (display keller) (newline) ;zu testzwecken ausgeben (cond ((and (null? eingabe) (null? keller)) #t) ((null? keller) #f) ; gescheitert ((null? eingabe) #f) ; gescheitert ((equal? (first keller) 'vp) (vp-fkt eingabe (rest keller))) ((equal? (first keller) 'np) (np-fkt eingabe (rest keller))) ((equal? (first keller) 'n) (n-fkt eingabe (rest keller))) ((equal? (first keller) 'v) (v-fkt eingabe (rest keller))) ((equal? (first keller) 'art) (art-fkt eingabe (rest keller))) ((equal? (first eingabe)(first keller)) (parse (rest eingabe)(rest keller))) (else #f))) (define (vp-fkt eingabe keller) (or (parse eingabe (cons 'v keller)) (parse eingabe (append (list 'v 'np) ; Verbalphrase keller)))) (define (np-fkt eingabe keller) ........... ; Nominalphrase (define (n-fkt eingabe keller) ....... ; Nomen (define (art-fkt eingabe keller) (parse eingabe (cons 'the keller))) (define (v-fkt ........... eingabe keller) ; verb Aufgabe 7.4: Mache dich zunächst mit dem Projekt vertraut. Stelle ein dazu passendes Regelwerk einer formalen Grammatik auf. Erweitere es in seiner Funktionalität, indem du zusätzliche Regeln einfügst und somit den zu testenden Sprachumfang erweiterst. Erweitere das Lexikon um folgende Worte: - hates, runs - Dog Erweitere den Parser um folgende Regeln: - (vp->pp) - (np->pp) - (pp->p np) Erstelle ein kurzes Video, in dem du deine Überlegungen und Implementierungen dazu erläuterst. Füge dies deinem Portfolio hinzu. Monika Seiffert / überarbeitet A. Kück Seite 27 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Wir arbeiten im Folgenden mit einem Parser, der eine Tiefensuche durchführt. Der Grammatikprüfer, der mit einer Breitensuche arbeitet steht ebenfalls zur Verfügung, ist aber wesentlich komplexer und steht daher nur für zusätzliche Untersuchungen zur Verfügung: Zusätzlich Aufgabe 7.5: Im Folgenden sind zwei weitere Parser gegeben a) breitensucheparserschülerversion.ss b) Parser alternativ.doc (Tiefensuche) - Schaue dir die gegebene Implementierung an und versuche es nachzuvollziehen (stelle eine Zustandsliste dazu auf, um es besser nachvollziehen zu können). Vervollständige die Parser. Aufgabe 7.6. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Ich kann zu gegebenen Grammatiken Suchbäume aufbauen Ich kann zu gegebenen Suchbäumen die passende formale Grammatik aufbauen Ich kann mit Hilfe eines Suchbaumes oder einer gegebenen Grammatik feststellen, on ein gegebener Satz entsprechend der gegebenen Grammatik korrekt ist. Ich kann Sätze mit Hilfe eines vorgegebenen Parsers auf grammatikalische Korrektheit prüfen. Ich kann einen vorgegebenen Parser entsprechend einer neuen Grammatik erweitern bzw. anpassen. Resümee: Was haben wir bisher in Bezug auf unser Ziel einen eigenen automatischen Übersetzer zu implementieren, geschafft? 7. Wir kennen grundlegende Konstrukte in Scheme, 8. Wir können einfache Funktionen in Scheme selber schreiben. 9. Wir haben das Prinzip der Rekursion verstanden und können rekursive Funktionen selbst schreiben. 10. Wir können einzelne Wort oder ganze Sätze wortweise übersetzen. 11. Wir können feststellen, ob die zu übersetzenden Sätze grammatikalisch korrekt sind. Was fehlt noch? 12. Wenn die zu übersetzenden Sätze grammatikalisch korrekt sind, wie kann ich sie dann übersetzen und am besten so, dass die Grammatik in der neuen Sprache ebenfalls passend ist? Monika Seiffert / überarbeitet A. Kück Seite 28 Kü / eN Info Skript KI - automatische Sprachverarbeitung Monika Seiffert / überarbeitet A. Kück Sj. 2013/2014 Seite 29 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Zusatz Modul 8 Grammatik-Prüfung und Übersetzung (Parser) Der oben implementierte Grammatikprüfer liefert als Ergebnis lediglich, ob der Satz grammatisch korrekt ist (d.h. den Regeln entspricht) oder nicht. Es handelt sich also um einen Akzeptor. Es wäre doch sinnvoll, bei der Prüfung auch gleich eine Übersetzung anzufertigen und diese anschließend im Erfolgsfall auszugeben. Also anstatt einfach „true“ auszugeben, soll der übersetzte Satz ausgegeben werden. Aufgabe 8.1: Schreibe den Akzeptor aus Teil 7 so um, dass er während der Prüfung gleichzeitig übersetzt. Die Übersetzung ist aber immer noch eine einfache Wortübersetzung. Dies soll nun verbessert werden. Erklärender Text: o Skript KI und Scheme -Grammatik Prüfung und Übersetzung Aufgabe 8.2: Ändere den ursprünglichen Parser mit Wortübersetzung dahingehend ab, dass er bei jedem Wort, welches er übersetzt die Wortart hinzufügt, also (n Hund) oder (v laufen). Implementiere nun eine entsprechende Funktion „uebersetzen“, die entsprechend einer Zielgrammatik die Ausgabe des Parsers übersetzt. Falls der zweite Teil zu schwer erscheint, hier eine einfache Version dazu, die um weitere Grammatikregeln erweitert werden sollte: parser mit übersetzung ohne genus Wie du sicherlich erkannt hast, ist die deutsche Sprache sehr komplex und um einen Anfang zu finden, muss man die Art der zugelassenen Sätze erst mal beschränken. Das gibt dir aber vielleicht auch eine Idee, wie umfangreich ein automatischer Übersetzer sein muss, der eine solche Beschränkung nicht braucht. Aufgabe 8.3. Überprüfe zu deiner Sicherheit, ob du folgende Dinge nun kannst (fordere gegebenenfalls weitere Aufgaben zum Üben beim Lehrer an): Kompetenzen, die du nun erreicht haben solltest + 0 Zusatz Ich kann zusätzlich zur Grammatikprüfung den Satz auch übersetzen Monika Seiffert / überarbeitet A. Kück Seite 30 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Resümee: Was haben wir bisher in Bezug auf unser Ziel einen eigenen automatischen Übersetzer zu implementieren, geschafft? 13. Wir kennen grundlegende Konstrukte in Scheme, 14. Wir können einfache Funktionen in Scheme selber schreiben. 15. Wir haben das Prinzip der Rekursion verstanden und können rekursive Funktionen selbst schreiben. 16. Wir können einzelne Wort oder ganze Sätze wortweise übersetzen. 17. Wir können feststellen, ob die zu übersetzenden Sätze grammatikalisch korrekt sind. 18. Wir können den geprüften Satz wortweise übersetzen 19. Wir können erste grammatikalische Feinheiten bei der Übersetzung berücksichtigen (Verb korrekt konjugiert übersetzen) Was fehlt noch? 20. Wie kann ich den zu übersetzenden Satz grammatikalisch korrekt in die neue Sprache übersetzen (z.B. den richtigen Fällen nach Präpositionen, die richtigen Artikel,…)? Monika Seiffert / überarbeitet A. Kück Seite 31 Kü / eN Info Skript KI - automatische Sprachverarbeitung Sj. 2013/2014 Zusatz Modul 9 Ein abschließendes Projekt Ein Anfang ist gemacht, ich kann einfache Sätze entsprechend einer Zielgrammatik übersetzen. Als nächstes bietet es sich sicherlich an, dafür zu sorgen, dass die richtigen Artikel zu den Substantiven verwendet werden, die Verben korrekt konjugiert werden etc. Aufgabe 9.1 Erweitere das Lexikon, so dass sich mehrere Sätze abbilden und übersetzen lassen. Beschäftige dich mit der deutschen Sprache, welche grammatischen Regeln kannst du finden, die sich in den Akzeptor einbauen lassen, um die Übersetzung zu verbessern. Schreibt den Akzeptor entsprechend um. Beurteile, wie gut deine Übersetzung ist, bzw. welche Schwächen sie hat. Hilfestellung: Parser mit Übersetzung entsprechend einer Zielgrammatik und Auswahl des richtigen Genus und Artikels: parser mit übersetzung.ss Erstelle ein kurzes Video, in dem du deine Überlegungen und Implementierungen dazu erläuterst. Füge dies deinem Portfolio hinzu. _______________________________________________________________________ Zur Vertiefung kann auch ein weiteres Projekt bearbeitet werden: Zusatz Projekt: U-Bahn-Planer Ziel: Das Hamburger U-Bahn-Netz in Scheme-Listen abbilden. Diese Listen sollen so durchsucht werden können, dass das Programm die kürzeste (oder schnellste) Verbindung von Start zum Ziel angibt incl. aller Umsteigemöglichkeiten. Siehe U-Bahnprojekt ubahnfahrplanmitzeiten.rkt Monika Seiffert / überarbeitet A. Kück Seite 32