Interaktiva assistenter – Nyttiga chattbottar - KTH
Interaktiva assistenter – Nyttiga chattbottar - KTH
Interaktiva assistenter – Nyttiga chattbottar - KTH
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Anders Nilsson, md96-ani<br />
Uppsats, Språkteknologi ht 2003<br />
<strong>Interaktiva</strong> <strong>assistenter</strong> <strong>–</strong> <strong>Nyttiga</strong> <strong>chattbottar</strong><br />
Introduktion<br />
Under de senaste två åren har flera svenska<br />
myndigheter och företag skaffat sig <strong>chattbottar</strong> på sina<br />
hemsidor. Bottarna är av varierande kvalité, alltifrån<br />
skräckexempel som t.ex. socialdemokraternas ”talande<br />
ros”, eller telias kundtjänstbot, till jämförelsevis mer<br />
lyckade installationer som RSV:s Erik eller HSB banks<br />
Ellen. Gemensamt för dessa är att syftet, oavsett<br />
resultat , är i högsta grad seriöst. Man har velat skriva<br />
bottar som ökar användbarheten och tillgängligheten,<br />
och därmed introducerat en ytterligare kanal, vid sidan<br />
om webbsida, mail och kundtjänst. Här känns termen<br />
”chattbot” inte helt lyckad, eftersom den för tankarna<br />
till mer nöjesorienterade program, där syftet och<br />
upplägget är helt annorlunda. Det behövs en term som<br />
beskriver nyttoorienterade <strong>chattbottar</strong>. Jag kommer att<br />
använda termen IA, Interaktiv Assistent, som namn för<br />
nyttiga <strong>chattbottar</strong>. Termen är tagen från Artificial<br />
Solutions, företaget bakom bland annat Ellen och Erik.<br />
I den här uppsatsen kommer jag att ge förslag till<br />
terminologi, ge en översiktlig beskrivning av tekniken<br />
bakom IA system och diskutera skillnader mellan<br />
<strong>chattbottar</strong> och IA.<br />
Jag förutsätter att läsaren är bekant med ämnet<br />
sedan tidigare, och att det därför går att diskutera t.ex.<br />
Eliza utan närmare förklaring.<br />
Bakgrunden till valet av ämne, och delvis även till mitt<br />
intresse för kursen i språkteknologi, är att jag sedan ett<br />
halvår tillbaka har arbetat som dialogutvecklare hos<br />
Artificial Solutions. Jag har bland annat uppdaterat<br />
Ellens ”kunskapsbas” så att den numera omfattar frågor<br />
rörande bostadslån, tillskillnad från tidigare då den<br />
endast omfattade frågor rörande bostadssparande.<br />
Förslag till terminologi<br />
1
Anders Nilsson, md96-ani<br />
Uppsats, Språkteknologi ht 2003<br />
Konversationsagent<br />
En konversationsagent är varje artificiell enhet som tar<br />
naturligt språk som input och ger naturligt språk som<br />
output i ett sammanhang som liknar, eller simulerar, en<br />
dialog.<br />
Chattbot<br />
En chattbot är en textbaserad konversationsagent som<br />
vars huvudsakliga syfte eller funktion är nöjes-, snarare<br />
än nyttoorienterad.<br />
Interaktiv Assistent<br />
En IA (Interaktiv Assistent) är en textbaserad<br />
konversationsagent som vars huvudsakliga syfte eller<br />
funktion är nytto-, snarare än nöjesorienterad.<br />
Tekniken bakom <strong>chattbottar</strong> och IA system<br />
I mina definitioner på chattbot och IA ovan, ingår inga<br />
krav eller restriktioner på hur de är konstruerade. Det<br />
betyder att även en väldigt enkel konstruktion kan vara<br />
en chattbot. Dagens <strong>chattbottar</strong> använder i vissa fall<br />
mycket enkla tekniker. Det finns de som bara har en<br />
stor databas med frågor och svar. För att svara på en<br />
2
Anders Nilsson, md96-ani<br />
Uppsats, Språkteknologi ht 2003<br />
fråga från en användare måste den matcha en<br />
existerande fråga i databasen mer eller mindre exakt.<br />
Dessa bottar kan oftast inte upprätthålla något<br />
sammanhang i dialogen. Varje fråga-svar-par är då<br />
isolerade och frikopplade från dialogen i sin helhet. Man<br />
kan invända att en sådan bot knappast kan vara varken<br />
särskilt användbar eller rolig att chatta med, men det<br />
finns sådana system i drift.<br />
En annan mycket vanlig teknik, som brukar ge bättre<br />
resultat, är olika varianter på Elizatekniker. Botten tolkar<br />
användarens input genom att försöka matcha det mot<br />
en mängd reguljära uttryck, eller uttryck som mer eller<br />
mindre är ekvivalenta med sådana. När input matchats<br />
mot ett uttryck, svara botten med en färdigskrivet svar.<br />
I vissa fall blandas det färdigskrivna svaret med ord eller<br />
fraser från användarens input, för att ge ett mer<br />
levande intryck. Svaret är i många fall ganska allmänt.<br />
Den information om användarens kommande input som<br />
chattbostskonstruktören har när hon författar svaret<br />
inskränker sig nämligen till en god gissning av vilken<br />
”kategori” som input tillhör. Via det reguljära uttrycket<br />
vet man ju nämligen vissa saker om användarens input.<br />
Hur mycket, beror på hur allmänt eller specifikt det<br />
reguljära uttrycket är. Ett reguljärt uttryck är ju till<br />
exempel *, och i det fallet skulle man behöva formulera<br />
ett mycket allmänt svar. Något i stil med: ”Du har<br />
tydligen tryckt ner en eller flera tangenter i<br />
inmatningsfältet, jag vet inte vilka, hur kan jag hjälpa<br />
dig?”.<br />
Förutom kännedom om den kategori som input tillhör,<br />
använder en del bottar ytterligare information för att<br />
identifiera ett lämpligt svar. För att få bättre kontinuitet<br />
i dialogen, och för att kunna dra nytta av kombinationer<br />
av information från olika användarinput, kan man bygga<br />
upp hierarkier av ämnesområden, topics. Dessa topics<br />
sätts sedan utifrån de kategorier som matchas under<br />
dialogens gång. Sedan kan man göra olika tolkningar av<br />
matchning mot en och samma kategori, beroende på<br />
vilket/vilka topics dialogen har för tillfället.<br />
För att hålla reda på information som förändras under<br />
dialogens gång kan man använda olika interna variabler.<br />
En variabel kan hålla reda på hur många gånger under<br />
dialogen en användare har använt svordomar, eller sagt<br />
saker som kan tolkas som missnöje mot botten. En<br />
annan uppsättning variabler kan hålla reda på vilken<br />
information som en användare har givit tidigare i<br />
dialogen. Det är användbart till exempel om botten ska<br />
samla in viss information om användaren, för att fylla i<br />
3
Anders Nilsson, md96-ani<br />
Uppsats, Språkteknologi ht 2003<br />
ett formulär eller liknande. Dessa variabeltekniker utgör<br />
tillsammans en enkel dialog manager.<br />
Det finns också andra informationskällor att ta hänsyn<br />
till, här är exempel på några sådana:<br />
• Tidigare kännedom om användaren.<br />
o via coockies<br />
o via information sparad på serversidan<br />
• Tid på dygnet<br />
• Antalet öppna sessioner<br />
• Kontroll mot databas eller extern webbsida<br />
• Vilket är det aktuella gränssnittet?<br />
o Webb, SMS, eller annan kanal?<br />
o Från vilken webbsida öppnades botten?<br />
• Ledtrådar om användaren:<br />
o Tid mellan användarinput<br />
o Tid mellan tangentnedtryckningar<br />
o IP adress<br />
o Webbläsare, operativsystem m.m.<br />
Vid sidan av det textuella svar som användaren får,<br />
ger en del bottar också annan output. En vanlig typ av<br />
extra output är att botten visar sig själv representerad<br />
som en bild på ett ansikte eller liknande. Ansiktet kan då<br />
användas för att indikera olika känslolägen som är<br />
relaterade till bottens senaste textuella output.<br />
En annan vanlig typ av extra output är att botten<br />
vidtar någon konkret åtgärd baserad på den matchade<br />
kategorin. Exempel:<br />
• Botten skickar ett mail, ett SMS, eller liknande<br />
• Botten visar användaren en viss webbsida<br />
• Botten postar ett formulär med uppgifter från<br />
dialogen<br />
• Botten stänger den aktiva sessionen<br />
Förutom den output som går direkt till användaren, är<br />
det också (antagligen) vanligt att diverse output<br />
genereras för operatörens eller företagets räkning. Hit<br />
räknar jag till exempel loggar över dialogen och annan<br />
liknande information.<br />
IA <strong>–</strong> chattbot med munkavle<br />
En kommentar jag har fått från användare som chattat<br />
med någon IA är saker i stil med att ”den inte verkade<br />
lika smart som ...” ... den och den chattbotten. En<br />
förklaring till det kan vara att många av de knep som<br />
lämpar sig väl för konstruktion av en chattbot, inte<br />
lämpar sig så väl för konstruktion av en IA.<br />
4
Anders Nilsson, md96-ani<br />
Uppsats, Språkteknologi ht 2003<br />
Syftet med en chattbot är vanligen att; ge ett<br />
mänskligt intryck, roa användaren, eventuellt även att<br />
passera Turingtestet. Om man har det syftet, och inga<br />
ytterligare restriktioner på hur botten kan/får bete sig,<br />
så är det en god idé att göra saker i stil med<br />
1.) Använda ord eller fraser från användarens input<br />
i bottens svar<br />
2.) Byta ämne<br />
3.) Ge förvirrande (men roliga) svar<br />
4.) Svara med fria associationer kring något ord i<br />
användarens input<br />
5.) Skicka användarens input vidare till en parallell<br />
session, och låta en annan användare besvara<br />
frågan<br />
Om man ställer det i kontrast till de krav som man<br />
oftast måste ställa på en IA, så är det lätt att se att<br />
de inte alltid lämpar sig så väl vid konstruktionen av<br />
IA system.<br />
• Ge svar som är konsistenta med övrig information<br />
i andra kanaler<br />
• Ge information som är konsekvent relativt olika<br />
användare och konsekvent relativt olika sessioner<br />
• Inte ge svar som kan verka anstötliga, eller<br />
strider mot företagets policy<br />
• Vara generös med information<br />
• Inte förbruka användarens förtroende genom att<br />
ge inadekvata svar<br />
5