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