Dialogsystem Johan Boye, KTH Dialogsystem Kallas även conversational agents, spoken dialogue systems, speech-based systems Tillämpningar: informationsåtkomst (tidtabeller, banksaldo, biotider ) utföra tjänster (banktransaktioner, köpa biljetter, ) styrning av utrustning (i bilen, intelligenta hemmet, robotar, ) underhållning(datorspel, utställningar, ) tutoring(interaktiva guider, språkinlärning, militära ) felsökning, teknisk support 1
Inspirationskällor SF-författare och filmmakare som skildrar konverserande robotar och datorsystem AI-forskare som ser dialog som ett centralt uttryck för mänsklig intelligens Psykologer och språkvetare som studerar fenomen inom dialog mellan människor Ingenjörer som vill skapa bättre (tal-)gränssnitt Varför dialogsystem? Lättare för (naiva) användare att tala sitt eget språk Datorer tillgängliga 24/7, kräver inte löneförhöjning Hands-free -kontroll viktigt i vissa tillämpningar Ger insikt i hur människor hanterar kommunikation Vilka problem är svåra? Vilken information måste representeras? Algoritmer? 2
Egenskaper hos dialog Dialog är: en realtidsprocess en kollaborativ process en social process Många (=alla) lingvistiska nivåer är inblandade Koordinering av yttranden Identifiering av språkljud Identifiering av ord Syntaktisk analys Semantisk tolkning Pragmatisk tolkning Turtagning A pratar B pratar A pratar B pratar Människor pratar sällan i munnen på varandra Mindre än 5% överlapp Man kan ta turen vid en sktrp ( TransitionRelevance Place ) Övergångar sker ofta mycket snabbt (ca 0,1s tystnad mellan yttranden) 3
Adjacency pairs Vissa yttranden pekar ut nästa talare frågor, hälsningar, uppmaningar, Dialogen kan ofta struktureras i adjacency pairs fråga-svar, hälsning-hälsning, förklaring-bekräftelse, dessa kan vara nästlade Allt detta studeras inom Conversational Analysis (mer data-driven) och Discourse Analysis(mer teoribildande) Talhandlingar Yttranden har ofta till syfte att få mottagaren att göra något 1. Öppna fönstret 2. Kan du öppna fönstret? 3. Usch vad det är varmt härinne. Sådana talhandlingarkan vara direkta(1) eller indirekta(2,3) Illokution: den avsedda talhandlingen Perlokution: den uppfattade talhandlingen 4
Talhandlingar Ett yttrande kan utföra flera talhandlingar samtidigt Låste du dörren? Nej, gjorde du? Flera meningar kan utgöra en enda talhandling Talhandlingar kan ses som minsta enheter för att beskriva dialog Typiskt: request, inform, propositionalquestion, setquestion, jämför POS-taggning för syntax Talhandlingar Notera: Talhandlingar utför funktioner på flera nivåer: 1. visa att jag har hörtatt X har sagt något 2. visa att jag har förståttvad X har sagt 3. visa att jag har accepteratvad X har sagt 4. bygga vidare på det X har sagt Varje nivå implicerar de underliggande nivåerna 5
Grounding Talare måste hela tiden etablera vad de är överens om, på samtliga nivåer: Jag skulle vilja ha en biljett till Stockholm 1. Okej, uh-huh 2. En biljett till Stockholm? 3. En biljett till Stockholm; det ska vi ordna 4. Och när vill du åka från Stockholm? Groundingmycket viktigt i dialogsystem, framför allt pga osäkerhet med taligenkänning Implikatur Yttranden antas vara relevanta, sanna ochlagom informativa: Ska vi bjuda Sture på middagen? Han pratar bara om sina aktier! Jag vill åka så tidigt som möjligt på torsdag. Det finns ett tåg kl 8. När vill du åka till Åland? Tja, konferensen börjar den tredje mars på morgonen. 6
Dialogsystem - arkitektur Ett dialogsystem har typiskt flera komponenter: taligenkänning (tal text) språkanalys(text semantisk analys) dialoghantering(semantisk analys som representerar användarens input semantisk analys som representerar systemets svar) svarsgenerering(semantisk analys text) talsyntes(text tal) Varje rubrik ovan är ett aktivt forskningsområde Dialogsystem - arkitektur Taligenkänning Språkanalys Dialoghantering Talsyntes Svarsgenerering 7
Taligenkänning Akustisk modell vilka språkljud finns i varje ord i språket? Språkmodell vad kan talaren säga? Grammatisk modell Statistisk modell Grammatisk språkmodell Trip (?Prefix From To) Prefix [(en biljett) (jag vill åka)] From (från City) To (till City) Trip Prefix From en biljett från Sthlm To City [Stockholm Göteborg Uppsala Västerås] till Uppsala 8
Statistisk språkmodell Modellerar sannolikheter för n-gram Tränas på representativa data Accepterar ett oändligt antal yttranden som inte behöver finnas i träningsmaterialet Egenskaper hos språkmodeller Grammatisk Funkar bra på yttranden inom täckning Funkar dåligt på yttranden utom täckning, för disfluenser, omstarter, mm. Kräver systemdriven dialog Statistisk Tillåter friare yttranden Tillåter mer flexibel dialog 9
Dialogsystem - översikt Taligenkänning Språkanalys Dialoghantering Talsyntes Svarsgenerering Ord betydelse Ord är nog bra, men vad betyder de? Enkla (kommersiella) system använder ofta atomiska semantiska värden(typ destination=uppsala) Mer avancerade system kan använda någon typ av logik-baserad notation Språkanalys Grammatisk språkmodell integrerade semantiska regler Statistisk språkmodell mönstermatchning Statistisk språkmodell statistisk semantisk modell 10
Integrerade semantiska regler Trip (Prefix From To) Prefix [(en biljett) (jag vill åka)] From (från City:x) {<from-city $x>} To (till City:x) {<to-city $x>} City [(Stockholm {return Sthlm}) (Göteborg {return Gbg}) (Uppsala {return Uppsala})] Trip Prefix From en biljett från Sthlm <from-city Sthlm> Sthlm To <to-city Uppsala> till Uppsala Uppsala Mönstermatchning bredband <product broadband> mobil <product mobile> vill beställa <intention order> jag vill beställa sånt här bredband <intention order> <product broadband> 11
Statistisk semantisk modell abonnemang beställa bredband det inte flytta jag leverans men telefon vill överlåta broadband-order-subscription broadband-problem-unknown fixedtelephony-error-line telephony-problem-unknown telephony-order-subscription mobile-order-subscription mobile-wantinfo-subscription digitaltv-problem-unknown internet-support-modem internet-support-email mobile-order-pukcode mobile-refill-subscription Statistisk semantisk modell Används typiskt till samtalsstyrning Varje samtal kategoriseras, t.ex. Jag vill beställa sån här a d s l eller vad det kan heta broadband-order-adsl Kategorin avgör vart samtalet styrs mänsklig agent eller automatisk tjänst 12
Exempel: Lägenhetssökning Dialog med mixat initiativ både användare och system kan ta inititativet Multimodalt system röst och grafik 13
S: Det finns sju sådana lägenheter. De visas nu på kartan. U: Vad kostar den svarta? S: Den svarta lägenheten kostar 2000000 kronor. U: Och den röda? S: Den röda lägenheten kostar 1975000 kronor. U: Har den kakelugn? S: Nej, den röda lägenheten har inte kakelugn. U: Vilka har kakelugn? S: Dessa lägenheter har kakelugn. (visar på kartan) S: Det finns sju sådana lägenheter. De visas nu på kartan. U: Vad kostar den svarta? (deixis) S: Den svarta lägenheten kostar 2000000 kronor. U: Och den röda? S: Den röda lägenheten kostar 1975000 kronor. U: Har den kakelugn? S: Nej, den röda lägenheten har inte kakelugn. U: Vilka har kakelugn? S: Dessa lägenheter har kakelugn. (visar på kartan) 14
S: Det finns sju sådana lägenheter. De visas nu på kartan. U: Vad kostar den svarta? S: Den svarta lägenheten kostar 2000000 kronor. U: Och den röda? (ellips, deixis) S: Den röda lägenheten kostar 1975000 kronor. U: Har den kakelugn? S: Nej, den röda lägenheten har inte kakelugn. U: Vilka har kakelugn? S: Dessa lägenheter har kakelugn. (visar på kartan) S: Det finns sju sådana lägenheter. De visas nu på kartan. U: Vad kostar den svarta? S: Den svarta lägenheten kostar 2000000 kronor. U: Och den röda? S: Den röda lägenheten kostar 1975000 kronor. U: Har den kakelugn? (pronominell referens) S: Nej, den röda lägenheten har inte kakelugn. U: Vilka har kakelugn? S: Dessa lägenheter har kakelugn. (visar på kartan) 15
S: Det finns sju sådana lägenheter. De visas nu på kartan. U: Vad kostar den svarta? S: Den svarta lägenheten kostar 2000000 kronor. U: Och den röda? S: Den röda lägenheten kostar 1975000 kronor. U: Har den kakelugn? S: Nej, den röda lägenheten har inte kakelugn. U: Vilka har kakelugn? (referensmängd) S: Dessa lägenheter har kakelugn. (visar på kartan) Mängdbeskrivningar { x apartment x.street= Kungsgatan} betecknar mängden av lägenheter som ligger på Kungsgatan 16
Hur man representerar kontext Jag vill ha en lägenhet på Kungsgatan. λs set(apartment) { x apartment x S && x.street = Kungsgatan } Jag vill ha en billigare lägenhet än den på Kungsgatan. λx apartment λs set(apartment) { y apartment y S && x.street = Kungsgatan && y.price < x.price} 17
Jag vill ha en billigare lägenhet än den på Kungsgatan. λx apartment λs set(apartment) { y apartment y S && x.street = Kungsgatan && y.price < x.price} Jag vill ha en billigare lägenhet än den på Kungsgatan. λx apartment λs set(apartment) { y apartment y S && x.street = Kungsgatan && y.price < x.price} 18
Jag vill ha en billigare lägenhet än den på Kungsgatan. λx apartment λs set(apartment) { y apartment y S && x.street = Kungsgatan && y.price < x.price} Multimodal input Jag vill ha en trea här någonstans. λs set(apartment) { y apartment y.numberofrooms = 3 && y.mapx > 212.75 && y.mapy > 128.08 && y.mapx < 623.46 && y.mapy < 590.13 } 19
Dialogsystem - översikt Taligenkänning Språkanalys Dialoghantering Talsyntes Svarsgenerering Gäller Vill du ärendet beställa fast, få information telefoni, mobiltelefoni, produkter, Internet, få teknisk eller support, digital-tv? fråga om om våra en leverans, eller fråga om din senaste Fast räkning? telefoni Support Menyträd 20
Ändlig automat Säg ditt användar namn Säg ditt lösenord Läs saldo Felaktigt lösenord Okänt användarnamn 21
Ändlig automat Välkommen till resebokningen. Vart vill du åka? Från Stockholm till Göteborg på torsdag morgon. Till Göteborg. Och varifrån vill du åka? Jag sade ju det: från Stockholm på torsdag morgon. Ursäkta jag förstod inte. Varifrån vill du åka? Från Stockholm. Torsdag morgon. Från Stockholm. Och när vill du åka. Lyssna då, %& /# maskin. TORSDAG! Ursäkta jag förstod inte. (osv) Formulär Vart vill du åka? Uppsala Varifrån vill du åka? Stockholm Vilket datum vill du åka? 26 oktober From: Stockholm To: Uppsala Date: Oct 26th Time: Train type: Ticket type: Reductions: Special Requirements: 22
Formulär Jag vill åka från Stockholm till Uppsala den 26 oktober From: To: Date: Time: Stockholm Uppsala Oct 26th Train type: Ticket type: Reductions: Special Requirements: VoiceXML Industriellt språk för talstyrda applikationer Hybrid mellan ett markup-språk och ett programspråk VoiceXMLsidor kan vara statiskaeller dynamiskaoch laddas via webben (som HTML-sidor) Programmeraren kan speca: Taligenkänning Språkanalys Dialoghantering (ändlig automat+ formulär) Talsyntes 23
VoiceXML <?xml version="1.0" encoding="utf-8"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"> <menu dtmf= false"> <prompt> Welcome to main menu. Say the name of the required section</prompt> <choice next="#news"> news </choice> <choice next="#sport"> sport </choice> <choice next="#weather"> weather forecast </choice> <noinput> Please say one of news, sport, and weather forecast </noinput> <nomatch> I don't understand you. Please say one of news, sport, and weather forecast </nomatch> </menu> Logikbaserad dialoghantering Systemet försöker konstruera ett logiskt bevis (à la Prolog) När beviset är klart är dialogen klar Interaktion med användaren förser systemet med fakta som saknas för att beviset ska bli klart Exempel: Teknisk support 24
Logikbaserad dialoghantering satisfy( restart-modem) { satisfy locate-modem; perform requestaction( unplug-power-cord-from-modem); perform requestaction( plug-power-cord-into-modem); perform groundstatus( restart-modem); } Logikbaserad dialoghantering satisfy( locate-modem) perform requestaction( locate-modem); satisfy( locate-modem) { perform requestaction( locate-telephone-jack); perform requestaction( follow-cable-from-jack); perform groundstatus( locate-modem); } 25
satisfy restart-modem satisfy restart-modem perform groundstatus( restart-modem) satisfy locate-modem perform plug-power-cord-into-modem perform unplug-power-cord-from-modem 26
satisfy restart-modem perform groundstatus( restart-modem) satisfy locate-modem perform plug-power-cord-into-modem perform unplug-power-cord-from-modem perform requestaction(locate-modem) satisfy restart-modem perform groundstatus( restart-modem) satisfy locate-modem perform plug-power-cord-into-modem perform unplug-power-cord-from-modem perform groundstatus(locate-modem) perform requestaction(follow-cable-from-telephone-jack) perform requestaction(locate-telephone-jack) 27
satisfy restart-modem satisfycallhandled perform groundstatus( restart-modem) satisfy locate-modem perform plug-power-cord-into-modem holds connectionproblem satisfyconnectionworking perform unplug-power-cord-from-modem satisfymodemhasgoodconnection satisfycomputerhasgoodconnection performgroundstatus(connectionworking) holds valueof( restartmodem, false ) perform groundstatus(locate-modem) perform requestaction(follow-cable-from-telephone-jack) perform requestaction(locate-telephone-jack) Problemlösande dialogsystem Supportsystemet är ett exempel på ett problemlösande system Användaren: har ett problem hon inte kan lösa kan göra observationer, utföra handlingar Systemet: har tillgång till expertkunskaperna har begränsad förmåga att göra observationer och utföra handlingar Dialog nödvändig! 28
Design av dialogsystem Studera uppgiften och användarna Gör simuleringar Gör iterativa tester (koda, testa på användare, utvärdera, upprepa) Studera uppgift och användare Lyssna på samtal mellan riktiga support-telefonister och kunder Intervjua support-personalen Studera den dokumentation som support-personalen själva använder Transkribera och studera dialoger 29
flytta den till att du ska erhålla en automatiskt requestaction ja acknowledge sen lite längre ned har du samma sak för en dns där groundstatus ja acknowledge eh det ska också vara erhålla automatiskt requestaction okej acknowledge sen <?> på det<?> så klickar du okej requestaction ja acknowledge och så ok eller stäng på nästa ruta requestaction jepp acknowledge och sen stänger vi även ned kontrollpanelen requestaction mm acknowledge sen går vi in på start och väljer kör igen requestaction jepp acknowledge där står det redan cmd så klicka ok requestaction mm acknowledge och där skriver du in ipconfig igen requestaction i p con fig acknowledge IP-nummer så trycker du enter requestaction OK? ja acknowledge vad har du för du ip-adress nu requestinfo två ett sju inform ja det räcker så acknowledge vi stänger den här rutan topicoutro ja acknowledge så öppnar du upp internet requestaction vänta internet pleaseclarify internet explorer bör du ha där <?> groundstatus ja acknowledge vi går in på den requestaction mm acknowledge och vad är det <?> som händer <hos dig?> requestinfo Kolla eh det händer ingenting inform web-access ingenting alls requestinfo-yn nej inform-no den står och tänker groundstatus ja det står ansluter till platsen ett sex tre punkt ja <?> inform Sex grundläggande talhandlingar Det visade sig att i supportdomänen använde mänskliga operatörer i huvudsak 6 olika talhandlingar requestaction requestinfo requestinfoyn groundstatus inform feedback 30
Statistiska dialogsystem Ser dialogproblemet som en instans av reinforcement learning. En MDP (Markov Decision Process) definieras av en mängd tillstånd s en mängd handlingar a omedelbarabelöningar R(s,a) man får om man utför handling ai tillstånd s sannolikheterp(s s,a) att gå till tillstånd s om handling a utförs i tillstånd s Målet är att beräkna en policy πsom i varje tillstånd väljer den bästa handlingen. Statistiska dialogsystem I dialogproblemet är handlingar=yttranden. Belöningar är ofta negativa (t.ex. -1 för varje yttrande). Detta premierar korta dialoger. Ytterligare minuspoäng kan ges vid missförstånd ( Repetera, Förklara ). 31
Statistiska dialogsystem Bästa policyn är argmax a Q(s,a) för alla tillstånd s, där Q( s, a) = R( s, a) + γ P( s' s, a) + maxq( s', a') dvs Q(s,a) är den förväntade kumulativa belöningen. s' Q(s,a) kan beräknas på olika sätt (t.ex. dynamisk programmering), men kräver då en bra uppskattning av Poch R. Poch Rkan även estimeras från data, men kräver då mängder av data, vilket sällan brukar vara tillgängligt i dialogtillämpningar. a' Utvärdering Dialogsystem kan utvärderas på många sätt: hur många användare lyckas nå sitt mål (task completion) hur nöjda är användarna (user satisfaction) effektivitet(antal yttranden, proportion av yttranden som förmedlar ny information) hur väl förstod systemet användaren? 32
Exempel: Samtalsstyrning Telefonibaserad kundtjänst för ett telekom-företag 14 milj samtal/år Fast telefoni, mobilt, bredband, mobilt bredband, uppringt Internet, IP-telefoni, digital-tv, triple play Knapptryckningsmenyer Speciellt telefonnummer för mobilkunder Flera direktnummer till olika självbetjäningstjänster Tryck 1 för beställning, tryck 2 för felanmälan Tryck 1 för fast eller telefoni, teknisk 2 support, för mobil tryck 3 för telefoni, fakturaärende, 3 for bredband tryck 4 eller för frågor om pågående bredbandstelefoni, leverans. 4 Gäller för uppringt ditt samtal någonting Internet, eller annat, 5 for tryck digital-tv. 5. Vad som fanns 33
Vad man ville ha i stället Välkommen till XXX. Beskriv kortfattat vad du vill ha hjälp med så kopplar jag fram dig. Vad gäller ditt ärende? Hej... jag skulle vilja hjälp att tolka några uppgifter på min mobilfaktura. Ett fakturaärende mobiltelefoni, stämmer det? Målet med projektet Ett enda ingångsnummer för alla kunder Öka nöjdheten hos betjänade kunder Öka utnyttjandet av självbetjäningstjänster få kunderna att hitta dit skapa nya typer av självbetjäningstjänster skapa fler självgetjäningstjänster Minska antal felaktiga samtalstyrningar Få färrekunder att lägga på luren 34
Vald teknik Taligenkänning för att identifiera orden i kundens yttrande Neuralt nätverk för att identifiera kundens ärende Datainsamling med Wizard-of-Oz-metodik. Implementation Samtalsstyrning Design av semantiska kategorier Transkription och uppmärkning Träning av taligenkännare och neuralt nätverk Dialogdesign Logiskt dialogflöde Persona och formuleringar Implementation 12 personer, ~ 12000 persontimmar 35
Uppmärkning av träningsdata Jag har en fråga på min Internet-räkning internet-wantinfo-billing Totalt fanns ca 140 sådana klasser. En klass motsvarande en kö till handläggare, eller en automatisk självbetjäningstjänst, eller en motfråga från systemet Klassificering abonnemang beställa bredband det inte flytta jag leverans men telefon vill överlåta broadband-order-subscription broadband-problem-unknown fixedtelephony-error-line telephony-problem-unknown telephony-order-subscription mobile-order-subscription mobile-wantinfo-subscription digitaltv-problem-unknown internet-support-modem internet-support-email mobile-order-pukcode mobile-refill-subscription 36
Hur bra blev det? I riktig drift klassificerades ca 82% av yttrandena helt rätt(137 kategorier) En version med 1500 kategorier hade ca 80% rätt Klassificerare med handskrivna regler hade 67% rätt (på 137 kategorier) Ca 7% av samtalen dirigerades fel Ökad kundnöjdhet Uppskattad ROI mindre än 1 år Sammanfattning Dialogsystem använder sig av flera olika tekniker från språkteknologi och artificiell intelligens Har många kommersiella tillämpningar State-of-the-art långt borta från mänsklig dialog Några nya trender: lärande dialogsystem försöker lära sig en optimal dialogpolicy via Reinforcement Learning sociala dialogsystem 37