KI – automatische Sprachverarbeitung

Werbung
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
Herunterladen