06.09.2013 Views

Interaktiva assistenter – Nyttiga chattbottar - KTH

Interaktiva assistenter – Nyttiga chattbottar - KTH

Interaktiva assistenter – Nyttiga chattbottar - KTH

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!