1 / 31

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?

duard
Download Presentation

DynOntoNLG (Dynamic Ontology & Natural Language Generator)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. DynAMITE Versuchsaufbau

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

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

  6. 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)

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

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

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

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

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

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

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

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

  15. 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: • Anfänger • „Die Datenbank %randVSg10 keine %randNPL14 %randPP04 Anfrage.“ • Profi • „Die Datenbank lieferte keine %randNPL14.“

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

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

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

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

  20. Benötigte Klassen • CreateDynNLGOutput • CreateNonValidatingDOMParser • DynNLGRandomLists • DynNLGTemplates • GetParametersFromXML • RandomDynNLGString

  21. Klassenabhängigkeit DynNLGTemplates - StringinsertRandomStrings(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 - ListcreateRandomList(String s, List list)

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

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

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

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

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

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

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

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

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

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

More Related