DynOntoNLG (Dynamic Ontology & Natural Language Generator)

Slides:



Advertisements
Ähnliche Präsentationen
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Advertisements

Sortieren I - Bubblesort -
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Sendeautomatisierung auf Windowsebene
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Dateihandles Um in Perl eine bestimmte Datei zum Lesen, Schreiben oder Anhängen zu öffnen, benötigt man so genannte Dateihandles. Ein Dateihandle ist der.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Speicherung von XML- Dokumenten als Large Objects.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Zusammenfassung Vorwoche
DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
So erstellen Sie schnell und einfach eine Übersichtsfolie Herbert Manthei
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Präsentation zum Seminarprojekt Statistik mit R Name WS 2011/12.
Kurzpräsentation zum Seminarprojekt Korpuslinguistik Name WS 2009/10.
Präsentation zum Seminarprojekt Korpuslinguistik Name WS 2011/12.
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
Tipps und Tricks für Word 2000 Aytac, Felix, Steffen 04/05.
Formale Sprachen und Automaten
Wir bauen uns eine Webapplikation!
Aufgabe 1: Fügen Sie unten eine Foto zum Thema «Team» ein (Einfügen / ClipArt). Verwenden Sie nach Möglichkeit auch die Suche via Internet in Office.com.
HORIZONT 1 XINFO ® Das IT - Informationssystem Java Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
CGI (Common Gateway Interface)
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Ganzheitliches Projekt-, Ressourcen- und Qualitätsmanagement 1 Reports und AddOns Auf den folgenden Seiten wird Ihnen die Funktionsweise der Reports und.
Wir sind das Volk Die Arbeit mit Spielfilmen rückt die Inhalte in den Vordergrund, motiviert die Lerner zur Anwendung der ihnen zur Verfügung stehenden.
Unterprogramme in JAVA
Vor dem Einlesen eines LV wird ein Projekt definiert. Für die Bedienung von x:plan sind folgende Elemente anwählbar:
Objectives Verstehen was unterDelegate verstanden wird
Using latent semantic analysis to find different names for the same entity in free text Präsentation und Diskussion des Papers Im Rahmen des PS Web-Information.
Programmiervorkurs WS 2014/15 Instanzmethoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
1 Projekt: Wertungsschiessen Markus Zwickl, Bernhard Riess Im Fach PMS bei Prof. Dr.-Ing. Josef Schneeberger Deggendorf,
Random & Probability Universität zu Köln Institut für Medienkultur und Theater AM3: Visuelle Programmierung II WS 2013/2014 Dozent: Prof. Manfred Thaller.
Referat zu Hyperlink in Excel mit Grafik und Text
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
How to Pipelining DEVOP PART I: WINDOWS POWERSHELL.
Wien Fotos, Audio und Video Multimedia in Android.
Einführung in Powerpoint XP Universität Leipzig Herder-Institut Video und Multimedia im Unterricht: DaF Dozent: Hr. Prof. Dr. E. Tschirner.
Arbeiten mit WordSmith 4. Inhalt 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus) 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus)
Titel Diskursmodelle Name SoSe Folienformat Packen Sie die Folien nicht zu voll Das Datum können Sie ändern, indem Sie im Menü auf “Ansicht”
Comprehensive Information Base (CIB) – ein Prototyp zur semantischen Datenintegration Stefan Arts
© Raphael Volz 2001 Slide 1 Zope Grundlagen Seminar – Praktikum Knowledge Portals Raphael Volz.
S INGLETON P ATTERN IN M ATLAB By Giuseppe
J. Nürnberger2007 / 081 Tabellenkalkulation (3) Arbeiten mit Formeln am Beispiel von OpenOffice.org Calc.
Konstruktoren.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Definition Felder Konstruktor Methoden Beispiel
 Präsentation transkript:

DynOntoNLG (Dynamic Ontology & Natural Language Generator) Universität Heidelberg Computerlinguistisches Seminar Studienprojekt Referent: Dorothee Reinhard Dozent: Dr. Markus Demleitner DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006

Inhalte der Präsentation Was ist DynAMITE? Wie funktioniert das NLGTool ? XML-Ausgabedatei Ansätze für Templates Benötigte Klassen Simulation Vorteile / Nachteile Geplante Verbesserungen

DynAMITE Versuchsaufbau

DynAMITE System Skizze NLG (Natural Language Generator) Parser Input XML-Output DM (Dialogmanager) Anfrage / Content Regeln: Input -> XML-Output FDB (Filmdatenbank) Templates LBS (Location Based System) Class „Movie1“, „Still“, … Ontologie Grundontologie LBS-Konzepte <- -> FDB-Konzepte

NLGTool 1 Ausgabe von Dialogsätzen Programmiersprache: JAVA Hintergrund: Dynamische Ontologie Basiert auf Grundontologie -> SmartSUMO Domänenbezogene Konzepte werden angefügt Konzepte + Strategien der Filminfo-Software Klassen: Movie1, Still, Actor, Director, Genre Properties: has-title, has-actor, has-genre,…

NLGTool 2 Benutzereingabe -> Parser -> DM NLGTool: XML-Datei von DM + Templates mit Platzhaltern => Dialogsatz als Output Dialogmanager -> XML-Datei (anhand von I/O-Regeln, Filmdatenbank, dyn. Ontologie)

XML-Ausgabedatei Dialogakte: message-inform, message-accept, message-reject, etc. Status: [status: warning], [status: busy], [status: idle], [status: error], [status: ok], [status: failed], [status: offer] Parameter: Profi, Novice - Neutral, Formal, Informal Ontologie: Class, Property, Content

Beispiel: XML-Ausgabedatei <present> <dialogact type="message_inform" status="ok"/> <Parameter parameter="NoviceNeutral"/> <Class name="Movie1"> <Class name="Director"/> <Property value="has-name" class="Director" number="PL" gender="neutral"> <Content content="Steven Spielberg"/> <Content content="Francis Ford Coppola"/> <Content content="George Lucas"/> <Content content="Sofia Coppola"/> </Property> </Class> </present>

Templates: Erster Ansatz Brainstorming zu den Properties: has-title, has-genre, has-director, has-actor, has-length, has-description, has-still, has-movie Platzhalter für Ergebnis eingesetzt: <Film1>, <Film2>, …, <FilmN>

Beispiele: Erster Ansatz has-title: "Hier sehen Sie Informationen zu den Filmen <Film1>, <Film2>, ... , <FilmN>." „Die folgenden Titel passen zu Ihrer Anfrage: <Film1>, <Film2>, ... , <FilmN>.“ „Der Name des Films lautet: <Film1>.“

Templates: Zweiter Ansatz Templates nach Status geordnet: status=ok; status=error Templates nach Parametern geordnet: Profi, Novice - Neutral, Formal, Informal Platzhalter verkürzt: %filmPL, %filmSg, %actorSg, …

Beispiele: Zweiter Ansatz has-title: Anfänger „In der Datenbank sind folgende Ergebnisse gespeichert: %filmPl.“ Profi „Die gesuchten Filme lauten: %filmPl.“ Anfänger + du "Hier siehst du Informationen zu den folgenden Filmen %filmPl.“

Templates: Dritter Ansatz I Platzhalter verallgemeinert: %prop Templates angereichert mit Platzhaltern für Synonyme, um Abwechslung in den Dialogen zu erreichen: %randNPL15, %randNSg22, %randPP03, %randVSg07, %randAPL06, %randMPL04

Templates: Dritter Ansatz II Synonyme werden zufällig aus einer Liste ausgewählt und anstelle des Platzhalters eingesetzt Listen: Nomen, Verben, Satzanfänge, Adjektive, Partizipien, Präpositionen, Modifier –> jeweils für Singular / Plural; bei Verben auch Infinitiv

Beispiele: Dritter Ansatz has-title: Anfänger „Die folgenden %randNPL05 wurden als Ergebnis zurückgeliefert: %prop.“ Profi „%randSPL01 die %randNPL05: %filmPl.“ „%randSPL01 Ihre %randNPL05: %filmPl.“ has-title Fehlermeldungen: „Die Datenbank %randVSg10 keine %randNPL14 %randPP04 Anfrage.“ „Die Datenbank lieferte keine %randNPL14.“

Beispiele: Randomlisten Nomen + Singular: %randNSg01 = „Impression / Aufnahme / Ansicht / Abbildung / Momentaufnahme / Grafik“; %randNSg03 = „Galerie / Fotogalerie / Standbildergalerie / Snapshotgalerie / Schnappschußgalerie“; %randNSg04 = „Namen des Films / Titel des Films / Filmnamen / Filmtitel / Film / Titel / Namen / Titel des Mediums / Medientitel / Namen des Mediums / Mediennamen / Namen des Streifens / Titel des Streifens / Namen des Filmstreifens / Titel des Filmstreifens / Namen des Kinofilms / Namen des Spielfilms / Titel des Kinofilms / Titel des Spielfilms / Namen des Filmwerks / Titel des Filmwerks / Namen des Werks / Titel des Werks“; %randNSg06 = „Bild / Foto / Ausschnitt / Filmausschnitt / Standbild / Schnappschuß / Snapshot“; %randNSg07 = „Bildes / Fotos / Ausschnitts / Filmausschnitts / Standbildes / Schnappschusses / Snapshots“; %randNSg09 = „Film / Titel / Filmtitel / Streifen / Filmstreifen / Kinofilm / Spielfilm / Medientitel“; %randNSg11 = „Name des Films / Titel des Films / Filmname / Filmtitel / Film / Titel / Name / Titel des Mediums / Medientitel / Name des Mediums / Medienname / Name des Streifens / Titel des Streifens / Name des Filmstreifens / Titel des Filmstreifens / Name des Kinofilms / Name des Spielfilms / Titel des Kinofilms / Titel des Spielfilms / Name des Filmwerks / Titel des Filmwerks / Name des Werks / Titel des Werks“;

Templates: Finaler Ansatz Templates angereichert mit den Konzepten aus der Ontologie Klassen -> Oberklasse, zweite Klasse (none) Movie1, Still, Actor, Director, Genre Properties -> value, class, number, gender Value: has-title, has-genre, has-length, … Class: Movie1, Still, Genre, Actor, ... Number: Sg, PL Gender: M, F, neutral

Beispiele: Finaler Ansatz has-title: Anfänger <Class name=„Movie1“/><NotClass name=„Still“/>”%randMPL02 %randNPL05 wurden als %randNSg25 zurückgeliefert: <Property value=„has-title“ class=„Movie1“ number=„PL“/>.”

Final Templates: XML-Ausschnitt <NLGTemplates> <NLGTemplate> <dialogact type="message_inform" status="ok"/> <Parameter parameter="NoviceNeutral"/> <Class name="Movie1"> <NotClass name="Still"/> <Property value="has-title" class="Movie1" number="PL"> <Template template="%randMPL02 %randNPL05 wurden als %randNSg25 zurückgeliefert: %prop."/> <Template template="Die %randAPL06 %randNPL18 %randVPL05: %prop."/> <Template template="Es sind %randNPL18 zu %randMPL03 %randNPL06 %randPT08: %prop."/> </Property> <Property value="has-title" class="Movie1" number="Sg"> <Template template="%randMSg02 %randNSg09 wurde als %randNSg25 zurückgeliefert: %prop."/> <Template template="%randMSg10 %randNSg44 wurde als %randNSg25 zurückgeliefert: %prop."/> <Template template="Die %randASg03 %randNSg43 %randVSg07: %prop."/> </Class> </NLGTemplate> </NLGTemplates>

Benötigte Klassen CreateDynNLGOutput CreateNonValidatingDOMParser DynNLGRandomLists DynNLGTemplates GetParametersFromXML RandomDynNLGString

GetParametersFromXML CreateNonValidatingDOMParser Klassenabhängigkeit DynNLGTemplates - String insertRandomStrings(String[] args, String template) - selectRandomString(String[] args, String listname) GetParametersFromXML createParameterList(String s, List list) List createSearchStatement() CreateDynNLGOutput - String getRandomTemplate(String[] args) - String getSpecificTemplate(String[] args, int tempNr) Random RandomDynNLGString - String getRandomString(List list) CreateNonValidatingDOMParser - Document getDocument() DynNLGRandomLists - List createRandomList(String s, List list)

CreateDynNLGOutput Hauptklasse des DynamiteNLGTools - ruft alle anderen Klassen auf Bekommt auf Kommandozeile zuerst das xml-file mit den gewünschten Parametern und den auszugebenden Inhalten aus der Ontologie übergeben (z.B.: "TestFileForNLGTemplates.xml"); An zweiter Stelle steht das xml-file mit allen zur Verfügung stehenden Parametern und Templates der Domäne (z.B.: "FilmDatabaseTemplates.xml") Die gewünschten Parameter werden dann im Template-xml-file gesucht und per Zufall ein passendes Template ausgesucht Danach werden noch die Platzhalter durch Wörter aus den Synonymlisten ersetzt und der gesuchte Inhalt aus der Ontologie als Ergebnis in das Template eingesetzt Die so entstandene Sprachausgabe wird auf dem Bildschirm ausgegeben und als String an den Dialogmanager zurückgeliefert

CreateNonValidatingDOMParser Erstellt einen nicht validierenden DOM-Parser mit dem ein xml-file eingelesen werden kann hat zwei Konstruktoren: "CreateNonValidatingDOMParser(String[] args)" -> liest das Dokument an Position 1 ein "CreateNonValidatingDOMParser(String[] args, int filepos)" -> kann eine bestimmte Position übergeben bekommen ("filepos"), von der er das Dokument einlesen soll

DynNLGRandomLists Erstellt Synonymlisten mit Wörtern verschiedener Wortarten Synonyme befinden sich in Strings und werden mit Hilfe der Methode "createRandomList(String s, List list)" in Listen umgeformt Jede Liste bekommt ihren eigenen Namencode, um von einer anderen Methode aufgerufen werden zu können Dieser Namencode wird mit "%rand" zu einem Platzhalter in den Templates zusammengesetzt, z.B.: "%randNSg05" Listen können beliebig durch anfügen von Wörtern erweitert werden Auch neue Listen können erstellt werden

DynNLGTemplates Das zufällig ermittelte Template mit Platzhaltern wird durch die Funktion "insertRandomStrings" in seine Einzelteile zerlegt Danach werden die Namen der Random-Platzhalter in der Methode "selectRandomString(String[] args, String listname)" ermittelt und die Klasse „RandomDynNLGString" aufgerufen, die dann per Zufall einen String aus der entsprechenden Synonym-Liste auswählt und zurückliefert Die so ermittelten Random-Strings werden anstelle des Platzhalters in das Template eingesetzt und als Output zurückgegeben

GetParametersFromXML Benötigt mindestens ein xml-file als Kommandozeilenparameter Erstellt einen nicht-validierenden DOM-Parser, der dann das xml-file an Position 1 der Kommandozeilen-paramtereliste einliest Die gewünschten Parameter werden in Variablen geschrieben und als Ergebnisstring zurückgeliefert Der auszugebende Inhalt aus der Ontologie wird ebenfalls in eine Variable geschrieben

RandomDynNLGString Erstellt pseudo Zufallszahlen, die benutzt werden, um einen Zufallsstring aus einer Liste von Templatestrings aus einem xml-file zu ermitteln Implementiert die Methode "String getRandomString(List list)", der eine Liste von Strings übergeben werden muß Mit Hilfe dieser Klasse kann der Inhalt der Dialogtemplates zufällig variiert werden, um Dialogsätze zu erstellen, die möglichst nahe an natürliche Sprache herankommen sollen

Simulation Beispiel: Gesucht: Schauspieler eines Films: „Welche Schauspieler spielen mit?“ Ergebnisstring

Vorteile / Nachteile Vorteile: Nachteil: NLG ist domänenunabhängig Abwechslung durch Templateliste Variation durch Synonyme Nachteil: Zufällig ausgewählte Templates klingen noch etwas zu künstlich

Geplante Verbesserungen Dialoge durch Einfügen von Referenzen „natürlicher“ machen Sessions simulieren – Dialoge voneinander mehr abhängig machen Wiederholungen vermeiden Schönere graphische Darstellung

Vielen Dank für Eure Aufmerksamkeit und Frohe Weihnachten!!!