DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität...

33
DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt Referent: Dorothee Reinhard Dozent: Dr. Markus Demleitner

Transcript of DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität...

Page 1: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

DynOntoNLG(Dynamic Ontology & Natural Language Generator)

Abschlußvortrag

12.03.2007

Universität Heidelberg

Computerlinguistisches Seminar

Studienprojekt

Referent: Dorothee Reinhard

Dozent: Dr. Markus Demleitner

Page 2: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Inhalte der Präsentation Abstract Ziele des Projekts Projekteinordnung Umgesetzte Verbesserungen Programmaufbau Simulation Zusammenfassung und Ausblicke

Page 3: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Abstract

Ausgabe von Filminformationen Dialogmodul Erhält vorverarbeitete Benutzereingaben

in XML-Format Wählt Zufallsdialog aus Gibt Ausgabe an Dialogmanager zurück Dialoge anhand der Konzepte einer

Filminformationsontologie

Page 4: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Ziele des Projekts 1

Abwechslungsreiche Dialoge Wiederverwendbare Struktur Anpassung an Dialogmanager von

DynAMITE Kontextunabhängigkeit Erweiterbare und Veränderbare Form Möglichst natürlichsprachige Dialoge

Page 5: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Ziele des Projekts 2

Höhere Programmqualität gewährleisten-> Vorurteile des Benutzers beilegen-> Interessensfaktor steigern

Anpassung an Benutzerprofil Einarbeitung ins DynAMITE Projekt Entwicklung einer Filminformations-

Ontologie Erweiterter und vereinfachter Datenzugriff

Page 6: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Projekteinordnung Teil des DynAMITE Projekts NLG-Modul zum Dialogmanager Verbesserung der Dialoge Ersatz des vorhandenen Systems Verbesserung der Mensch-Computer-

Interaktion (MCI) -> Benutzerfreundlichkeit Filminfo-Ontologie zusätzlich zu bereits

vorhandener Datenbank

Page 7: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

DynAMITE Versuchsaufbau

Page 8: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Umgesetzte Verbesserungen

Einfügen von Referenzen -> ja Profi-Dialoge angepaßt

Sessions simulieren -> ja Mehrere Ausgaben gleichzeitig

Wiederholungen vermeiden -> etwas Durch Referenzen Sätze vereinfacht und verkürzt

Schönere graphische Darstellung -> nein-> nicht nötig, da es ja sowieso im Hintergrund arbeitet und für den Benutzer unsichtbar ist

Page 9: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Referenzen 1 Zu Beginn des Programms werden

Referenzobjekte simuliert Neues Referenzobjekt eingefügt ->

Referenzobjekt ersetzt und neues Referenzpronomen erstellt

„Filmtitel“ -> „er“ -> Referenzpronomen Referenz zu Schauspieler und Regisseur

wird aus Ausgabe-XML-file ausgelesenNumerus, Genus

Page 10: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Referenzen 2 Referenzen am Satzanfang und im Satz Template -> Referenzpronomen wird an

Text angepaßt -> Kasus, Numerus, Genus Referenzplatzhalter z.B.:

„%refMovie1SgGenF“ -> „Seine“; „Ihre“ Referenzpronomen automatisch anhand

von Synonym-Listen Referenzobjekte anhand der

Ontologiekonzepte : Movie1, Genre, Actor, Director, Description, Length, Still

Page 11: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

DynAMITE System Skizze

FDB(Filmdatenbank)

DM(Dialogmanager)

Ontologie

Grundontologie

Parser NLG(Natural Language Generator)

LBS(Location Based

System)Class „Movie1“, „Still“, …

Templates

XML-OutputInput

Regeln: Input -> XML-OutputAnfrage /

Content

-> FDB-KonzepteLBS-Konzepte <-

Page 12: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

NLGTool 1

Ausgabe von Dialogsätzen Programmiersprache: JAVA Hintergrund: Dynamische Ontologie

Basiert auf Grundontologie -> SmartSUMODomänenbezogene Konzepte werden angefügt

Konzepte + Strategien der Filminfo-SoftwareKlassen: Movie1, Still, Actor, Director, GenreProperties: has-title, has-actor, has-genre,…

Page 13: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

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, dynamische Ontologie)

Page 14: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

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

Page 15: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Beispiel: XML-Ausgabedatei<Present>

<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></Present>

Page 16: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

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“;

Page 17: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Templates: Finaler Ansatz

Templates angereichert mit den Konzepten aus der OntologieKlassen -> 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

Page 18: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

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“/>.”

Page 19: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

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."/>

</Property></Class>

</NLGTemplate></NLGTemplates>

Page 20: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Benötigte Klassen

CreateDynNLGOutput04

CreateNonValidatingDOMParser01

DynNLGRandomLists01

DynNLGTemplates01

XMLParameters01

RandomDynNLGString01

Page 21: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Klassenabhängigkeit

CreateDynNLGOutput04- String getRandomTemplate(String[] args)

- String getSpecificTemplate(String[] args, int tempNr)

XMLParameters01- createParameterList(String s, List list)

- List createSearchStatement()

DynNLGTemplates01- String insertRandomStrings(String[] args, String template)- selectRandomString(String[] args, String listname)

CreateNonValidatingDOMParser01- Document getDocument()

RandomDynNLGString01- String getRandomString(List list)

DynNLGRandomLists01- List createRandomList(String s, List list)

Random

Page 22: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

CreateDynNLGOutput04 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

Page 23: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

CreateNonValidatingDOMParser01 Erstellt einen nicht validierenden DOM-Parser mit

dem ein xml-file eingelesen werden kann

hat zwei Konstruktoren: "CreateNonValidatingDOMParser01(String[]

args)" -> liest das Dokument an Position 1 ein"CreateNonValidatingDOMParser01(String[]

args, int filepos)" -> kann eine bestimmte Position übergeben bekommen ("filepos"), von der das Dokument eingelesen werden soll

Page 24: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

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

Page 25: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

DynNLGTemplates01 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 „RandomDynNLGString01" 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

Page 26: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

XMLParameters01 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

Page 27: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

RandomDynNLGString01 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

Page 28: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Simulation Beispiel:

Gesucht: Filmtitel, Schauspieler, Genre, Länge, Regisseur, Bilder

Vergleich der Ausgaben für Anfänger und Profi

1) Anfängerdialog -> NoviceNeutral 2) Profidialog mit Referenzen

-> ProfiNeutral Ergebnis

Page 29: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Vorteile / Nachteile Vorteile:

NLG ist domänenunabhängig Abwechslung durch Templateliste Variation durch Synonyme Referenzen verbessern die Natürlichkeit

Nachteil: Synonyme passen manchmal nicht so gut

zusammen, wenn zu viele Plathalter in einem Satz -> bestimmte Kombinationen klingen unnatürlich

Page 30: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Evaluationsgedanken Manche Begriffe aus den Listen passen mit anderen

Begriffen weniger gut – mit anderen besser - zusammen Manche Begriffe passen besser für Profis, manche eher

für Anfänger (vgl. Info - Information) -> Listen ändern Regelwerk bei message templates fehlt -> wann Film im

Singular und wann im Plural bei Genre, Beschreibung, … zu setzen ist -> wird bei Referenzen gelöst

Unterschied zwischen Anfänger und Profi Templates besser betonen und herausstellen -> klare Unterschiede und Grenzen -> besser durch Referenzen gelöst

Eventuell mit anderem Kontext testen -> selbe Regeln, nur andere Konzepte -> xml-Ausgabe-Datei, Template-XML-file anpassen z.B.: Navigationsontologie

Page 31: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Zusammenfassung Funktioniert schon ganz schön Wie erwartet: Natürliche Sprache zu

simulieren ist sehr schwer Ziele wurden erreicht

Wiederverwendbar, kontextunabhängig Erweiterbar, veränderbar Abwechslungsreichere Dialoge Benutzerprofilbasiert Erweiterter Datenzugriff

Page 32: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Ausblicke Eventueller Einbau von anderen

Referenzen Test mit anderer Sprache Abwechslung zwischen Pronomenreferenz

und Koreferenz durch Synonym Wiederholungen von Wortteilen innerhalb

von Sätzen vermeiden Abwechslung bei Spiellänge des Films ->

in Minuten und Stunden aufteilen, Minutenangabe, Stundenangabe

Page 33: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Abschlußvortrag 12.03.2007 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt.

Vielen Dank für Eure Aufmerksamkeit !!!

Noch Fragen ?