Programmieren in natürlicher Sprache: Alice-Kontrollstrukturen

Werbung
Programmieren in
natürlicher Sprache:
Alice-Kontrollstrukturen
aus natürlicher Sprache
Dokumentenart:
Autor:
Studiengang:
Betreuer:
Datum:
1
Exposé
Andrea Claudia Kohlmann
Informatik (Bachelor)
Mathias Landhäuÿer
21. Mai 2013
Motivation
Im Laufe der Zeit wurden und werden auch weiterhin immer mehr Programmiersprachen entwickelt, deren Grundprinzip darin besteht, Sachverhalte ganz genau und Schritt für Schritt zu beschreiben. Der Zweck dieser
Programmiersprachen ist es, den Programmierern zu ermöglichen, dem Computer Anweisungen zu geben. Sie sind also eine groÿe Hilfe für Informatiker,
jedoch gibt es sehr viele verschiedene Programmiersprachen.
Fachfremde wiederum können normalerweise nicht programmieren. Müssen sie es jedoch trotzdem einmal, ist es viel zu aufwändig, sich eine Programmiersprache anzueignen und zu lernen, seine Gedanken in Code umzuwandeln.
Eine sehr vielversprechende Möglichkeit, diesem Problem entgegenzuwirken, wäre
Programmieren in natürlicher Sprache. Man könnte also einfach
was geschehen soll, anstatt ganz genaue Anweisungen zu ge-
beschreiben,
ben,
wie
etwas geschehen soll. Das ist ein Ansatz, der beispielsweise mit
SQL oder von Gulwani[Gul12] verfolgt wird. Auf diese Art zu programmieren wäre sicherlich auch ein Anreiz für Laien, die sich bisher nicht an das
Programmieren herangewagt haben.
Als Teil des Projekts
Programmieren in natürlicher Sprache
beschäftigt
sich die hier vorgeschlagene Bachelorarbeit mit der automatischen Übersetzung von Textfragmenten in Kontrollstrukturen wie zum Beispiel Schleifen.
2
Alice
Alice ist ein an der Carnegie Mellon University entwickeltes Rahmenwerk,
mit dem man ganz einfach 3D-Welten oder sogar Spiele erzeugen kann [Car].
1
Abbildung 1: Screenshot der Benutzeroberäche von Alice
Die Bedienung des Programms ist sehr übersichtlich und intuitiv. So
kann man Figuren und andere Objekte per Drag-and-Drop in die sogenannte
Alice-Welt ziehen und sie mit wenigen Mausklicks Aktionen ausführen lassen.
Gleichzeitig wird in einem separaten Fenster der zugehörige Programmcode
angezeigt, in den sich auch verschiedene Kontrollstrukturen wie zum Beispiel
Schleifen einfügen lassen. (Abb. 1)
Durch diesen einfachen Aufbau richtet sich Alice vor allem an Programmieranfänger, insbesondere Kinder, denen das objektorientierte Programmieren auf spielerische Art und Weise näher gebracht werden soll.
Der Hauptgrund, warum im Rahmen des Projekts
türlicher Sprache
Programmieren in na-
das Rahmenwerk Alice verwendet wird, ist der, dass die
Namen aller Objekte sowie ihrer Eigenschaften und Methoden, etc. in Alice
sehr ähnlich wenn nicht sogar gleich derer in der realen Welt sind.
3
Programmieren in natürlicher Sprache
Ziel des Gesamtprojekts
Programmieren in natürlicher Sprache
ist es nun,
eine Software zu entwickeln, mit deren Hilfe Benutzer Alice-Welten mittels
natürlicher Sprache programmieren können, wobei sich das Projekt hierbei
darauf beschränkt, dass aus einer Art Drehbuch eine Alice-Filmsequenz enstehen soll, jedoch keine Spiele oder sonstigen Interaktionen.
Um also eine Alice-Welt anzulegen, soll der Benutzer die Möglichkeit
bekommen, in natürlicher Sprache zu beschreiben, wie die Welt aussehen und
was geschehen soll. Die Aufgabe der Software ist es nun, aus einem solchen
Beschreibungstext ein Skript zu erzeugen, das die gewünschte Welt möglichst
genau erstellt. Der Aufbau des Projekts wird in Abbildung 2 dargestellt.
2
Abbildung 2: Aufbau des Projekts
Programmieren in natürlicher Sprache
[Pet12]
3.1
Aufteilung des Projekts
Bisher wurde bereits ein Alice-Korpus erstellt, der 14 Beschreibungstexte
sowie eine Musterlösung zu einer Film-Sequenz Bunny umfasst [Ham12],
sowie eine Alice-API-Ontologie extrahiert [Pet12] und um Synonyme erweitert [Wei12].
Im nächsten Schritt soll nun das Alice-Handlungsskript erzeugt werden.
Dieser Teil des Projektes wurde aufgespalten in mehrere Teilaufgaben. So
werden zum Beispiel die Erstellung der Anfangsszenerie, die Verknüpfung
des Textes mit den entsprechenden Objekten und Methoden sowie die Erkennung und Zuordnung benötigter Methodenargumente getrennt bearbeitet, während sich die hier vorgeschlagene Bachelorarbeit ausschlieÿlich mit
den Kontrollstrukturen in Alice beschäftigt.
Auÿerdem sind gerade noch weitere Projektteile in Bearbeitung, von denen für die hier vorgeschlagene Bachelorarbeit vor allem die Entitätenerkennung und -verknüpfung, die von Sebastian Weigelt bearbeitet wird, zu erwähnen ist. Sein Ziel ist, Wörter aus den Beschreibungstexten mit Entitäten in
der Alice-Ontologie zu verknüpfen. Am Ende sollen also Wörter im Text so
annotiert sein, dass direkt erkennbar ist, welche Methoden, Individuen, etc.
gemeint sind.
3.2
Kontrollstrukturen
Im Rahmen der vorgeschlagenen Bachelorarbeit sollen nun möglichst viele
der in Alice zur Verfügung gestellten Kontrollstrukturen in den Beschreibungstexten erkannt und annotiert werden können.
Hierbei sei anzumerken, dass davon ausgegangen wird, dass bereits eine
3
korrekte Verknüpfung aller Methoden, Objekte, etc. in den Beschreibungstexten in maschinenlesbarer Form vorliegt.
Folgende Kontrollstrukturen werden dem Benutzer von Alice zur Verfügung gestellt:
• Do together:
Gleichzeitige Ausführung mehrerer Methoden.
• Do in order: Ausführung mehrerer Methoden nacheinander, vor allem
innerhalb von Do together benötigt.
• If/else: Übliche if/else-Struktur zur Unterscheidung verschiedener Fälle.
• Loop:
Schleife, um eine Aktion mehrfach auszuführen.
• While: Übliche while-Schleife, um Methoden nur bedingt auszuführen.
• For all in order:
Enspricht
do in order
• For all together: Entspricht do together
für eine Liste von Objekten.
für eine Liste von Objekten.
Da es nur schwer vorauszusagen ist, wieviel Zeit die Bearbeitung der
einzelnen Kontrollstrukturen in Anspruch nehmen wird, kann noch keine
Aussage darüber getroen werden, ob diese Arbeit alle Kontrollstrukturen
umfassen wird. Aus diesem Gund wurde eine Prioritätenliste erarbeitet, die
nun von oben nach unten abgearbeitet werden soll, mit dem Ziel, möglichst
viele und vor allem die wichtigsten Kontrollstrukturen umzusetzen. Zu diesem Zweck wurde der Text-Korpus analysiert und es wurden Vermutungen
angestellt, was die Verwendungshäugkeit sowie die Schwierigkeit bei der
Umsetzung der jeweiligen Kontrollstruktur angeht.
Prioritätenliste
Loop
Do together
Do in oder
For all together
For all in order
While
If/else
ist in dieser Aufzählung nicht enthalten, dies liegt daran, dass
diese Kontrollstruktur im Normalfall von Drehbuchautoren nicht benötigt
wird, da ein Benutzer in seinem Beschreibungstext ja genau angibt, was
passieren soll. Daher wird
3.3
if/else
vorerst nicht weiter betrachtet.
Beispiele
Ein Beispiel für eine Schleife in natürlicher Sprache wäre der Satz
4
The frog hops three times.,
der aus der Musterlösung für die Filmsequenz Bunny stammt [Ham12]. Im
entsprechenden Quelltext wird dieser Satz folgendermaÿen dargestellt:
Loop 3 times times
frog.hop
Ein etwas schwierigeres Beispiel, wäre der Satz
The Bunny moves one meter forward while the frog turns to face
the bunny.
Die hierbei benötigte Alice-Kontrollstruktur ist
do together
und im Quell-
text sieht der Satz folgendermaÿen aus:
Do together
bunny move forward 1 meter
frog turn to face bunny
3.4
Geplantes Vorgehen
Als Endprodukt dieser Arbeit soll ein Plugin für GoldenGATE [Gol] entstehen, mit dem Kontrollstrukturen im Text erkannt und annotiert werden
können.
Im ersten Schritt werden hierzu Schlüsselwörter gesammelt, die auf die
verschiedenen Kontrollstrukturen hinweisen und dann mit Hilfe von ResearchCyc [Res] und dem Stanford Parser und Part-of-Speech Tagger nach
Gemeinsamkeiten der Schlüsselwörter gesucht.
Die hierbei gesammelten Informationen sollen anschlieÿend helfen, das
Erkennen von Schlüsselwörtern für zugehörige Kontrollstrukturen zu automatisieren.
4
Evaluation
Zuletzt muss das im Rahmen dieser Bachelorarbeit entwickelte Plugin natürlich noch evaluiert werden. Zu diesem Zweck bietet es sich an, auf den
Textkorpus aus [Ham12] zurückzugreifen. Das Plugin kann auf den Beschreibungstexten und der Musterlösung zur Filmsequenz Bunny angewendet
und das Ergebnis anschlieÿend mit Hilfe der entsprechenden Quelltexte auf
seine Korrektheit geprüft werden.
Da jedoch nicht alle in Alice verfügbaren Kontrollstrukturen in der Filmsequenz Bunny Anwendung nden, wird zu jeder umgesetzten Kontrollstruktur noch eine kurze Videosequenz mit Alice erstellt und von drei verschiedenen Personen beschrieben. Somit kann das Plugin zusätzlich zu dem
Textkorpus von Sina Hampel auch noch gegen die neuen Beschreibungstexte
getestet werden.
5
Literatur
[Car]
Carnegie Mellon University: Alice. http://www.alice.org
[Gol]
GoldenGATE. http://idaho.ipd.uka.de/GoldenGATE/
[Gul12]
Gulwani, Sumit:
Synthesis From Examples: Interaction Models
In: 14th International Symposium on Symbolic
and Numeric Algorithms for Scientic Computing, 2012
and Algorithms.
[Ham12]
Hampel, Sina: Programmieren in natürlicher Sprache: Aufbau ei-
nes Alice-Korpus, Karlsruher Institut für Technologie (KIT) IPD
Tichy, Bachelor's Thesis, 2012. http://www.ipd.kit.edu/Tichy/
theses.php?id=199
[Pet12]
[Res]
[Wei12]
Peters, Oleg:
Programmieren in natürlicher Sprache: Aufbau einer Alice-Ontologie, Karlsruher Institut für Technologie (KIT) IPD Tichy, Bachelor's Thesis, 2012. http://www.ipd.kit.edu/
Tichy/theses.php?id=202
ResearchCyc. http://www.cyc.com/platform/researchcyc
Weigelt, Sebastian: Programmieren in natürlicher Sprache: Aufbau einer Alice-Ontologie Korpus-Ontologie-Assoziation , Karls-
ruher Institut für Technologie (KIT) IPD Tichy, Studienarbeit,
2012.
http://www.ipd.kit.edu/Tichy/theses.php?id=204
6
Herunterladen