Att referera till objekt

Relevanta dokument
Artificiell Intelligens Lektion 4

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Klasser och objekt, referenser Grundkurs i programmering med Python

TDDE44 Programmering, grundkurs

Regression med Genetiska Algoritmer

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Grammatisk teori III Praktisk analys

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

1 Comparator & Comparable

Sätt att skriva ut binärträd

Programmering = modellering

Programmering för språkteknologer II, HT2014. Rum

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

729G06 Föreläsning 1 Objektorienterad programmering

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Algoritmer, datastrukturer och komplexitet

729G04 Programmering och diskret matematik

Typsystem. Typsystem... Typsystem... Typsystem... 2 *

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Lek$on 3: Kunskapsrepresenta$on. Robin Keskisärkkä

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Typsystem. DA2001 (Föreläsning 23) Datalogi 1 Hösten / 19

Lek$on 4: Kunskapsrepresenta$on. Robin Keskisärkkä och Jonas Rybing

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Kopiering av objekt i Java

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Tentamen TEN1 HI

Programmering A. Johan Eliasson

Föreläsning 5-6 Innehåll

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

TDDB96 Projekt: Object priming med visuell stimuli

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Visual Basic, en snabbgenomgång

Föreläsning 9 Innehåll

Övningsuppgifter kapitel 8

Föreläsning 13 och 14: Binära träd

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

kl Tentaupplägg

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Tentamen i Introduktion till programmering

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

ADT Set, Map, Dictionary. Iteratorer TDDD86: DALGP. Tommy Färnqvist, IDA, Linköpings universitet

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Problemlösning och funktioner Grundkurs i programmering med Python

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Karlstads Universitet, Datavetenskap 1

TDP002 - Imperativ programmering

729G04 Programmering och diskret matematik. Föreläsning 7

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 11. Giriga algoritmer

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Klasser och objekt. Henrik Johansson. August 20, 2008

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

Tentamen Datastrukturer, DAT037 (DAT036)

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Identifiering av ordvitsar med Granska

Lektion 7. Datateknik A, Java I, 5 poäng

729G04 Programmering och diskret matematik

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Laboration 1: Figurer i hierarki

Objektorientering/ Klasser

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Dataabstraktion. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

Metoder (funktioner) Murach s: kap Winstrand Development

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Ekvivalensrelationer

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

OOP Objekt-orienterad programmering

Föreläsning 18 Filer och avbildningar

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Objektorienterad programmering

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Programkonstruktion. Tentamen,

Ordlistor, filhantering och ut på webben. Linda Mannila

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Övning 6. Ali Tofigh 24 Oktober, 2006

Objektorienterad programmering i Java

Transkript:

Att referera till objekt En algoritm för generering av refererande uttryck 729G43: Artificiell intelligens Examinator: Arne Jönsson 2

Innehållsförteckning 1. Inledning... 4 1.1 Bakgrund... 4 1.2 Syfte... 4 1.3 Frågeställning... 4 1.4 Tidigare forskning och avgränsningar... 4 1.5 Metod... 5 1.6 Struktur... 5 2. Huvuddel... 6 2.1 Bakgrundsbeskrivning... 6 2.2 Algoritmen... 8 2.3 Implementering... 10 2.3.1 Kunskapsbasen... 10 2.3.2 Användarmodellen... 10 2.3.3 Funktionerna... 11 2.3.4 Exempelkörning... 12 3. Resultat och analys... 14 4. Avslutande diskussion... 15 Referenser... 16 Bilaga... 17 3 EN ALGORITM FÖR GENERERING AV REFERERANDE UTTRYCK 1. Inledning 1.1 Bakgrund I genereringen av naturligt språk skiljer man på besluten mellan vad som ska sägas och hur det ska sägas. De två faserna där dessa beslut fattas brukar kallas för textplanering och lingvistiskt förverkligande där textplaneringen rör beslut om vad som ska sägas. Detta arbete rör beslut om en nominalfras semantiska struktur som är nödvändiga innan det lingvistiska förverkligandet kan ske. Huruvida uppdelningen mellan textplanering och lingvistiskt förverkligande är så självklar som det låter kan ifrågasättas (vilket har gjorts), men det är utanför ramen för detta arbete. (Dale, 1992, ss. 6-10) 1.2 Syfte Arbetets syfte är att få en djupare förståelse för hur ett system för generering av naturligt språk bestämmer den semantiska formen av en nominalfras som refererar till ett specifikt objekt i en angiven kontext, samt att implementera en algoritm för en sådan generering. 1.3 Frågeställning Den fråga som rapporten ämnar svara på är hur man med en algoritm för generering av refererande uttryck kan skapa nominalfraser som tillfredsställer de principer som finns för dess konstruktion i naturligt språk så att de identifierar en avsedd referent i en angiven kontext för en mänskliga mottagare. 1.4 Tidigare forskning och avgränsningar Den litteratur som står som grund för detta arbete är Robert Dales bok Generating Referring Expressions (1992) som beskriver EPICURE, ett system för generering av naturligt språk, med fokus på refererande nominalfraser. EPICURE är designat för att generera en sammanhängande diskurs från specifikationer av planerade handlingar och består av många olika delar. Generering av refererande nominalfraser är bara en del i detta system. En del i EPICURE s generering av nominalfraser är en algoritm framtagen av Dale och Reiter (1995) som utifrån en given kunskapsbas och modell över mottagarens kunskap 4

bestämmer den semantiska struktur som en nominalfras bör ha. Detta för att följa de principer som finns för att en mänsklig mottagare ska kunna identifiera den avsedda referenten. Algoritmen har även implementerats som en del av ett annat system för generering av naturligt språk kallat IDAS. Den är även där en del av textplaneringen som utgör den semantiska formen av ett uttryck och är känsligt för mottagarens kunskap (Reiter, Mellish, & Levine, 1994). Detta arbete har avgränsats till att förklara och implementera den algoritm som Dale och Reiter (1995) tagit fram och kommer därför inte att ge någon vidare beskrivning av de system som tagits upp ovan. Den nyfikne läsaren hänvisas därför till de verk som refereras till. 1.5 Metod Implementeringen av algoritmen har skrivits i programspråket Python (2.7) och kunskapsbasen som den använder är en enkel form av kunskapsrepresentation i dictionaries. Algoritmen har testats inom en enkel domän vilken också används som exempel genom rapporten. 1.6 Struktur Till att börja med ges en bakgrundsbeskrivning till refererande nominalfraser och de principer som finns för dess konstruktion i avsnitt 2.1. I avsnitt 2.2 beskrivs algoritmen och de funktioner som behövs. Sedan följer min implementering av algoritmen i 2.3 med beskrivning av kunskapsbasen (2.3.1), användarmodellen (2.3.2), funktionerna (2.3.3) och till sist en exempelkörning (2.3.4). En kort analys av resultatet ges i avsnitt 4 och en avslutande diskussion i avsnitt 5. 5 2. Huvuddel 2.1 Bakgrundsbeskrivning En nominalfras som har som syfte att identifiera ett objekt för en mottagare har som beskrivet av Dale och Reiter (1995, s. 236) ett kommunikativt mål att ge en särskiljande beskrivning av objektet. Den bör alltså vara en korrekt beskrivning av det objekt som den refererar till, men inte av något annat objekt i den aktuella kontexten. Kontexten kan definieras som alla objekt som mottagaren antas kunna uppmärksamma. För att särskilja ett objekt från de resterande objekten i kontexten definieras en upprättning kontrasterande objekt som helt enkelt är alla objekt i kontexten förutom den avsedda referenten. En refererande nominalfras som uppnår sitt kommunikativa mål består av olika attributvärden som var och en utesluter de kontrasterande objekten och på så sätt hjälper till att identifiera den avsedda referenten för mottagaren. Exempelvis skulle båda nominalfraserna den svarta hunden och den lilla hunden vara tillräckligt för att identifiera en liten svart hund i en kontext där de kontrasterande objekten är en stor vit hund och en liten svart katt. I detta fall skulle den lilla svarta hunden vara en onödigt lång nominalfras för att identifiera den avsedda referenten. (Dale & Reiter, 1995, ss. 236-237) Dale (1992, s. 117) beskriver tre principer för att konstruera refererande nominalfraser, vilka kan liknas med de Griceanska maximerna, som han kallar principerna för känslighet(eng, sensitivity), effektivitet(eng, efficiency) och tillräcklighet(eng, adequacy). Principen för känslighet innebär att talaren bör vara känslig för sina mottagare vilket i konstruktionen av nominalfraser kräver att talaren beaktar vad mottagaren förmodas veta (Dale, 1992, s. 117). En nominalfras som den svarta labradoren kan vara tillräcklig för att identifiera en av flera hundar i en kontext där det bara finns en svart labrador, men om användaren inte (a) känner till att labrador är en hundras eller (b) inte kan skilja på labradorer och andra hundraser, är uttrycket inte tillräckligt för att mottagaren ska kunna identifiera den avsedda referenten. Principen för tillräcklighet innebär att nominalfrasen bör identifiera den avsedda referenten otvetydigt och förse mottagaren med tillräcklig information för att fungera enligt det refererande syftet (Dale, 1992, s. 117-118). Om en talare skulle be en mottagare att hämta min svarta jacka kommer nominalfrasen endast att vara tillräcklig om mottagaren tidigare fått 6

tillräckligt med information för att hitta jackan. Om jackan inte är uppenbart synlig för mottagaren skulle det kanske vara nödvändigt att säga min svarta jacka i garderoben i hallen för att tillfredsställa principen för tillräcklighet. För att principen för effektivitet ska tillfredsställas krävs att nominalfrasen som konstrueras inte innehåller mer information än nödvändigt för att uppfylla uppgiften. Detta är inte enbart för att spara tid utan även för att inte riskera att förvirra mottagaren. (Dale, 1992, s. 118) Konstruktionen av refererande nominalfraser enligt ovanstående beskrivning sker i naturligt språk utan att talaren behöver fundera särskilt mycket över vilka attributvärden som ska inkluderas för att korrekt beskriva den avsedda referenten. Dale och Reiter (1995, s. 247) argumenterar för att ett system som har som syfte att generera naturligt språk bör generera uttryck som liknar sådana uttryck konstruerade av mänskliga talare. Detta eftersom den mänskliga mottagaren förväntar sig stöta på uttryck av just denna sort. Samtidigt är de nominalfraser som mänskliga talare konstruerar inte optimala enligt de principer som tidigare nämnts. Många gånger inkluderar de onödiga attributvärden i sina nominalfraser och bryter på så vis mot principen för effektivitet. Detta kan bero på att talaren försöker göra det så enkelt som möjligt för mottagaren att identifiera den avsedda referenten, eller för att talaren påbörjar sitt yttrande innan denne skannat av hela uppsättningen med kontrasterande objekt. I ett sådant fall kan inte talaren som redan yttrat ett attributvärde, som vid närmare observation av kontexten visar sig vara överflödigt, ta tillbaka det, utan kanske snarare lägger till ett mer relevant attributvärde för det refererande syftet. Det är inte osannolikt att en person skulle referera till en svart stol med uttrycket den svarta stolen i en kontext där de enda kontrasterande objektet är en vit pall. Stolen skulle i en sådan situation vara en tillräcklig nominalfras för att identifiera den avsedda referenten, men ett objekts färg kan vara mer omedelbart märkbar än dess typ. Därför kan nominalfrasen den svarta stolen konstrueras antingen för att talaren påbörjar yttrandet med att specificera färgen innan denne särskiljer på stol och pall, eller också väljer talaren att uttrycka sig så i tron att det gör det lättare för mottagaren att identifiera objektet. Detta menar Dale och Reiter (1995, ss. 249-250) visar på att mänskliga mottagare i vissa fall inte kommer att göra oönskade tolkningar av onödiga attribut, som färg i 7 detta fall, men påpekar att det ännu saknas tillräckligt med lingvistisk och psykolingvistisk kunskap för att förutsäga när brott mot principerna inte ställer till med problem. (Dale & Reiter, 1995, ss. 248-250) När det kommer till att konstruera nominalfraser för att beskriva ett objekt intresserar sig Dale och Reiter (1995, ss. 250-251) för frågor som rör val av attribut då fler än ett attribut fungerar som ett tillräckligt beskrivande attribut framför ett huvudord. De hypoteser som de presenterar angående talat språk är följande: 1. Mänskliga talare föredrar att använda adjektiv som beskriver visuellt märkbara egenskaper så som storlek, form och färg. 2. Mänskliga mottagare har ibland svårt att avgöra om ett objekt tillhör en viss klass, till exempel hundras som nämnts i ett tidigare exempel. Om det finns något tvivel om huruvida mottagaren kan skilja på objekt i specialiserade klasser är det bättre att systemet lägger till ett explicit attribut i nominalfrasen. 3. Mänskliga talare verkar föredra att använda relativa adjektiv och mänskliga mottagare verkar ha lättare för att förstå dem. Till exempel den långa skruven istället för femcentimetersskruven. 2.2 Algoritmen Dale och Reiter (1995, s. 253) föreslår en algoritm för att bestämma vilka attribut som ska finnas med i en nominalfras som refererar till ett specifikt objekt i en angiven kontext. Algoritmen kräver av systemets kunskapsbas att varje objekt karaktäriseras utifrån en uppsättning attribut och deras värden. Ett attribut och dess värde representeras som ett par som kan ses som en egenskap hos ett objekt. Varje objekt har en typ som ett av sina attribut. Denna typ av attribut är egenskaper som typiskt sett representeras av ett substantiv, till exempel hund. Kunskapsbasen kan också organisera vissa attribut taxonomiskt så att labrador är en underkategori till hund som i sin tur är en underkategori till djur. (Dale & Reiter, 1995, s. 254) Algoritmen itererar sekventiellt genom en lista med attribut och lägger till ett attribut och dess värde till den beskrivning som ska konstrueras om det utesluter något av de kontrasterande objekten som inte redan uteslutits och avslutar iterationen när en särskiljande beskrivning 8

konstruerats. För att algoritmen ska fungera med den kunskapsbas den appliceras på krävs följande gränssnittsfunktioner och variabler (Dale & Reiter, 1995, ss. 247, 254): MoreSpecificValue(object, attribute, value): Funktionen returnerar ett nytt mer specifikt värde för attributet om det finns i taxonomin från systemets perspektiv. BasicLevelValue(object, attribute): Funktionen returnerar det mest grundläggande värdet för ett attribut. UserKnows(object, attribute-value pair): Funktionen returnerar True om mottagaren vet eller enkelt kan avgöra att attribut-värdeparet kan appliceras på objektet; False om mottagaren vet eller enkelt kan avgöra att attribut-värdeparet inte kan appliceras på objektet; Unknown om mottagaren inte har kunskapen att avgöra om det går att applicera på objektet eller inte. PreferredAttributes: En global variabel innehållande de attribut som mottagaren föredrar listade i den ordning de prioriteras. Som input tar algoritmen en symbol r som representerar den avsedda referenten, C som är en lista innehållande de kontrasterande objekten (de objekt som uttrycket inte ska referera till) och P som motsvarar PreferredAttributes. Algoritmen returnerar sedan en lista med attributvärdepar som representerar det semantiska innehållet av den nominalfras som ska genereras. (Dale & Reiter, 1995, ss. 255-256) Algoritmen består av tre funktioner: MakeReferringExpression(r, C, P): Algoritmens topfunktion som testar attribut i den ordning som specificerats i P och returnerar en lista med attribut-värdepar som specificerar ett refererande uttryck för den avsedda referenten r. Ett värde för objektets typ inkluderas alltid i denna lista även om det inte har någon särskiljande funktion. FindBestValue(r, attribute, initial-value): Funktionen tar ett attribut och ett initialt värde och returnerar ett värde som utesluter så många kontrasterande objekt som möjligt samtidigt som det är så nära 9 det initiala värdet som möjligt i taxonomin. Detta görs genom att rekursivt titta på mer specifika värden för attributet och stanna när det mest specifika värdet som är känt för mottagaren är nått och väljer det värde som utesluter flest kontrasterande objekt som bästa värde. När två värden av olika specificeringsnivå utesluter lika många element, väljs det minst specifika värdet. RulesOut(attribute, value): Tar in ett attribut-värdepar och returnerar en lista med de objekt av de kvarvarande kontrasterande objekten som utesluts av attribut-värdeparet. 2.3 Implementering En implementering av algoritmen som beskrivs ovan gjordes för detta arbete i Python 2.7. Nedan ges en kort beskrivning av arbetets delar samt algoritmens topfunktion MakeReferringExpression. För fullständig kod se bilaga. 2.3.1 Kunskapsbasen Kunskapsbasen (kb) är en global variabel som består av ett dictionary där varje nyckel representerar ett objekt vars värde också är ett dictionary över objektets olika attribut. Om ett attribut har mer en ett värde representeras de i ytterligare ett dictionary som är värdet för den nyckel som representerar attributet. Det mest grundläggande värdet är då nyckel för det mer specifika värdet. En stor svart labrador representeras då som i exemplet nedan där obj är en nyckel som representerar objektet i kunskapsbasen: Exempel: 'obj':{'type':{'dog':'labrador'}, 'color':'black', 'size':'big'} 2.3.2 Användarmodellen Användarmodellen (uk) är en global variabel som är ett dictionary över de attribut och värden som användaren (eller mottagaren) känner till. Till exempel: uk = {'type':['dog', 'cat', 'chihuahua'], 'color': ['black', 'white'], 'size':['big', 'small']} 10

De olika värden som ett attribut kan ha representeras här i en lista även om ett värde är underkategori till ett annat som hund och chihuahua. 2.3.3 Funktionerna MoreSpecificValue, BasicLevelValue och UserKnows använder sig av kunskapsbasen och användarmodellen för att hitta de värden som ska returneras. MakeReferringExpression, FindBestValue och RulesOut fungerar som beskrivits tidigare och anropar MoreSpecificValue, BasicLevelValue och UserKnows för att få tillgång till information som representeras i kunskapsbasen och användarmodellen. Attributvärdepar representeras som tupler där attributet står först, till exempel ( type, dog ). utesluter, så för varje objekt x i RulesOut(a, V), tas x bort från listan C. Om C är en tom lista (if C == []:), dvs när alla kontrasterande objekt har uteslutits, returneras listan L om ett av attribut-värdeparen avp har attributet typ (avp[0] == type ), annars läggs ett attributvärdepar för attributet typ till i listan L när den returneras. 2.3.4 Exempelkörning En körning av algoritmen med de globala variablerna kb, uk, r, C, P definierade som i figur 2 ger den output som visas i figur 3: Figur 2: Tilldelning av globala variabler Figur 1: Funktionen MakeReferringExpression Ovan (figur 1) är funktionen MakeReferringExpression som tar in ett objekt (obj) som ska refereras till, C som är en lista med de kontrasterande objekten och P som är listan över den ordning efter vilken attributen prioriteras. För varje attribut a i P tilldelas variabeln V ett värde genom att anropa FindBestValue(obj, a, BasicLevelValue(obj, a)). Om attributet a och värdet V utesluter något av de kontrasterande objekten (if RulesOut(a, V)!= None), läggs attribut-värdeparet (a, V) till i listan L. RulesOut returnerar en lista med alla objekt som (a, V) 11 Figur 3: Output givet de globala variablerna i figur 2 Eftersom obj1 är det enda objekt av typen chihuahua är det ett tillräckligt attributvärde för att referera till objektet när mottagaren känner till hundrasen chihuahua. Om mottagaren inte kan känna igen en chihuahua (se figur 4) kommer algoritmen att returnera en lista med attributvärdepar som i figur 5. 12

Figur 4: användarmodell där 'chihuahua' tagits bort från kända attributvärden Figur 5: Output för obj1 när mottagaren inte känner till 'chihuahua' 3. Resultat och analys Algoritmen är effektiv i genereringen av attributvärden för nominalfraser som följer de principer som tagits upp i tidigare avsnitt. Den är snabb då körtiden är linjär med antalet kontrasterande objekt och oberoende av antalet potentiella attribut. Den anpassas bra till mottagarens preferenser och kunskap med listan P över prefererade attribut och funktionen UserKnows som är enkla sätt att se till att algoritmen genererar uttryck som passar den mänskliga mottagaren. (Dale & Reiter, 1995, s. 260) Trots att algoritmen gör det möjligt att anpassa ett system för naturlig språkgenerering efter mottagarens kunskap och preferenser är det en utmaning att modellera just denna kunskap. Eftersom mänskliga talare och mottagare, som tidigare nämnts, ofta föredrar relativa adjektiv före absoluta attributvärden, uppstår problemet om hur dessa ska lagras. Dale och Reiter (1995) föreslår att kunskapsbasen skulle kunna lagra absoluta värden, som till exempel mått för attributet storlek och att algoritmen sedan översätter detta till relativa attributvärden givet den aktuella kontexten. Detta skulle göra det möjligt för algoritmen att avgöra de relativa värdena för objekten i förhållande till varandra, då ett objekt som kan anses stort i en kontext är litet i en annan. Algoritmen är enkel att applicera i olika domäner och ställer inget särskilt krav på att kunskapsbasen ska vara av en viss datatyp då kunskap hämtas från kunskapsbasen via de gränssnittsfunktioner som finns. För detta arbete gjordes valet att lagra kunskap i dictionaries. Detta gjordes för att det gör det enkelt att redigera och för en överblick över kunskapsbasens innehåll när man jobbar med väldigt små datamängder. Algoritmen kan appliceras i ett system där kunskap lagras på ett annat vis endast genom att ändra på de gränssnittsfunktioner via vilka kunskapen hämtas (MoreSpecificValue, BasicLevelValue och UserKnows). 13 14

4. Avslutande diskussion Avslutningsvis har arbetets syfte som var att förklara och implementera en algoritm för generering av refererande uttryck uppnåtts och en del frågor som rör genereringen av nominalfraser har berörts. Exempel på hur en körning av algoritmen i en enkel domän ser ut har presenterats och utfallen tillfredsställde de principer som beskrevs i avsnitt 2.1. Beroende på vilken domän och vilken typ av system som algoritmen används i kan frågan om hur man modellerar mottagarens kunskap vara svårlöst. Eftersom det krävs en vetskap om mottagarens kunskap för att algoritmen ska generera relevanta uttryck är det viktigt att fundera över vilka mottagarna är och hur deras kunskap bör representeras. En utvecklingsmöjlighet för algoritmen skulle precis som Dale och Reiter (1995) nämner kunna vara att göra så att algoritmen kan ta absoluta attributvärden från en kunskapsbas och översätta dem till relativa värden. Referenser Dale, R. (1992). Generating Referring Expressions: Constructing descriptions in a domain of objects and processes. Cambridge: MIT Press. Dale, R., & Reiter, E. (1995). Computational Interpretations of the Gricean Maxims in the Generation of Referring Expressions. Cognitive Science 18, 233-263. Reiter, E., Mellish, C., & Levine, J. (1994). Automatic Generation of Technical Documentation. 15 16

Bilaga 17 18

19 20