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

DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

Embed Size (px)

Citation preview

Page 1: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

DynOntoNLG(Dynamic Ontology & Natural Language Generator)

Spezifikationsvortrag

19.12.2006

Universität Heidelberg

Computerlinguistisches Seminar

Studienprojekt

Referent: Dorothee Reinhard

Dozent: Dr. Markus Demleitner

Page 2: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 3: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

DynAMITE Versuchsaufbau

Page 4: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 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 5: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 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 6: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 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, dyn. Ontologie)

Page 7: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 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 8: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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>

Page 9: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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>

Page 10: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 11: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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, …

Page 12: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 13: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 14: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 15: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

Beispiele: Dritter Ansatzhas-title: Anfänger

„Die folgenden %randNPL05 wurden als Ergebnis zurückgeliefert: %prop.“

Profi „%randSPL01 die %randNPL05: %filmPl.“ „%randSPL01 Ihre %randNPL05: %filmPl.“

has-title Fehlermeldungen: Anfänger

„Die Datenbank %randVSg10 keine %randNPL14 %randPP04 Anfrage.“

Profi „Die Datenbank lieferte keine %randNPL14.“

Page 16: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 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) Spezifikationsvortrag 19.12.2006 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) Spezifikationsvortrag 19.12.2006 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) Spezifikationsvortrag 19.12.2006 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) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

Benötigte Klassen

CreateDynNLGOutput CreateNonValidatingDOMParser DynNLGRandomLists DynNLGTemplatesGetParametersFromXML RandomDynNLGString

Page 21: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

Klassenabhängigkeit

CreateDynNLGOutput- String getRandomTemplate(String[] args)

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

GetParametersFromXML- createParameterList(String s, List list)

- List createSearchStatement()

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

CreateNonValidatingDOMParser- Document getDocument()

RandomDynNLGString- String getRandomString(List list)

DynNLGRandomLists- List createRandomList(String s, List list)

Random

Page 22: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 23: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 24: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 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) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 26: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 27: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 28: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

Simulation

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

Page 29: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

Vorteile / Nachteile

Vorteile: NLG ist domänenunabhängigAbwechslung durch TemplatelisteVariation durch Synonyme

Nachteil: Zufällig ausgewählte Templates klingen noch

etwas zu künstlich

Page 30: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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

Page 31: DynOntoNLG (Dynamic Ontology & Natural Language Generator) Spezifikationsvortrag 19.12.2006 Universität Heidelberg Computerlinguistisches Seminar Studienprojekt

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