Skip to main content

Medan Google och Amazon släpper produkter på svenska, pratar Microsoft om översättning i realtid i sitt bot-ramverk. Här kommer lite erfarenheter från hur det är att jobba med realtidsöversättning i Microsofts bot-ramverk skulle kunna vara till nytta. Det ger bättre resultat än man kan tro, men det är lite pilligt. Och det blir en hel del testande.

Så vad kan man göra?

För det första: Du bestämmer själv vad boten säger. Där är ingen översättning eller tolkning inblandad. Det gör att realtidsöversättning i praktiken inskränker sig till det boten ska förstå.

För det andra: Det är inte grammatisk precision eller vackra formuleringar som behövs. Översättningen är ju enbart synlig för boten.  Därför behöver inte ens översättningen vara rätt, bara vi kan förstå hur styra det som kommer dem till rätt vidare åtgärder.

I det nya ramverket som släppte för några veckor sedan har man flyttat ut koden för realtidsöversättning från själva ramverket, in i exempelkoden för nya botar. Det var en glad överraskning, för när funktionen var ”gömd”, var det knepigare att fixa till översättningsproblem. Nu är visserligen ramverket öppen källkod, men det känns bra att vara utanför Microsofts interna domäner.

Hur funkar det

flow

Figur 1 In kommer en svensk replik. Därefter översätts den, skickas till en tolk och mappas mot en fördefinierad lista av "avsikter" som är definierade i språkigenkänningen (Microsoft LUIS)

Varför är det här relevant? Jo, visserligen består ett samtal med en bot av en mängd bollande av repliker fram och tillbaka, men när det gäller översättning, så sker den i den enskilda repliken. Jag brukar beskriva ett samtal med en bot som en mindmap, där varje tänkbar replikväxling är en bubbla i kartan. En bubbla som inte finns, helt enkelt en replik en bot inte förstår. För att vara filosofisk: Botens medvetande sträcker sig så långt som det finns bubblor i mindmappen. Och i varje bubbla måste boten första vad som sägs för att kunna fatta beslut om hur dialogen ska tas vidare.

Det är i den bubblan översättningen sker – så för varje replikväxling kan och behöver vi säkerställa att boten förstår vad som sägs.

5 områden att titta på

I den bubblan finns de fem tipsen jag lovat:

  1. Själva översättningen
  2. Tolkningen av den översatta texten
  3. Korrigeringar av ord innan översättning
  4. Korrigering av ord efter översättning
  5. Nedlåsning av boten till ett språk

Själva översättningen

När man använder översättning i boten, behöver man en nyckel från azure som kan användas i Microsoft Translator Hub för att sätta upp egna översättningsprojekt. Där kan man lägga till egna ordlistor för ord som inte översätts rätt. Det är användbart, inte bara vid felöversättningar, utan till exempel för varumärken eller produktnamn som annars vilseleder översättningsalgoritmerna. Nu är det tyvärr inte dokumenterat hur dessa specialordlistor används i version 4 av ramverket. Dessutom har tillförlitligheten varit högs varierande även om det var ett trevligt sätt att hantera problemet med felaktiga standardöversättningar. Själv har jag sedan version 4 av ramverket släpptes hållit mig till med de fyra metoder som beskrivs nedan och undgått tidigare driftsstörningar.

Tolkningen av den översatta texten

I Microsoftvärlden används LUIS som tolk för vad användaren avser med en replik i en dialog. Där finns möjligheter att justera vad den förstår eller inte förstår, speciellt om man har specialtermer som passerar översättningen oöversatta. Oftast är det attribut och inte själva avsikten som översättningen kan få problem med, till exempel om användaren säger ”jag söker jobbet som utvecklingspedagog”. LUIS kanske missar ”utvecklingspedagog”, men förstår att det är ett jobb användaren söker. Då kan man definiera ”utvecklingspedagog” med attributet ”jobb”, och lära LUIS att ” utvecklingspedagog” är ett jobb, trots att det är ett svenskt ord och LUIS är inställd på att förstå engelska.

Korrigeringar av ord innan översättning

Varje replik som användaren yttrar passerar ett antal förutbestämda steg innan den skickas vidare till själva logiken i samtalet. För att fortsätta med jämförelsen med en mindmap: Olika delar i boten hanterar hur man förflyttar sig mellan bubblorna och vad som sker i varje bubbla. Det som sker i bubblan definieras en gång och är detsamma för varje bubbla, kallat ”middleware” i ramverket. Du kan definiera egen middleware och lägga till en innan översättningen sker. Där kan du helt enkelt byta ut ord som översättaren inte tar mot synonymer som fungerar – eller lägga till vad du än behöver för att få det att bli rätt. Det som händer mellan bubblorna bestäms av egen kod. Det motsvarar streck i mindmappen, där ett streck är de vägar boten kan ta från en bubbla till en annan.

En egen middleware är ett enkelt alternativ till att använda ”Translator Hub” för att lägga till översättningar som saknas.

Korrigering av ord efter översättning

På samma sätt kan det ibland vara enklare att göra korrigeringar i redan översatt text, till exempel om översättningen blir fel – vilket den allt som oftast blir. I dagligt tal är feltoleransen högre än den är för en bot. Boten måste ju förstå användare rätt och har ingen livserfarenhet att luta sig mot för att tolka vad en person menar med det hen säger. Det är lätt att identifiera sådana felöversättningar vid test, eftersom LUIS kommer att missuppfatta användarens avsikt och boten helt enkelt kommer säga något i sammanhanget irrelevant. För att hantera det är det bara att lägga till ytterligare en middleware som helt enkelt byter ut det felöversatta ordet med rätt översättning. Den här metoden kan också hantera ord som betyder olika saker i olika sammanhang, genom att känna igen att de uppträder. Däremot måste man själv agera på att de känts igen någon annanstans.

Nedlåsning av boten till ett språk

Nuvarande version av Microsofts Botramverk försöker – om du inte ställer om det – upptäcka vilket språk en användare talar. Det kan så klart vara väldigt praktiskt. Men om användaren säger korta saker, blir det svårt för automatöversättningen. Ett lustigt exempel är ”tak”. På danska betyder det ”tack”, vilket ju inte är ett alltför ovanligt ord. Men nu råkar polska vara ett större språk, så tillbaka från översättningen kommer ”så”. Hel rätt visserligen – om man är polack.

Lättare än man kan tro

Nu låter det här som en mängd problem och som om det inte går att använda en bot som pratar svenska. Så är dock inte fallet. I en bot som hanterar en handfull dialoger får man kanske 10-20 undantag att ta hand om, vilket är en klart hanterbar mängd. För en FAQ behövs inte dessa trix, då Microsoft QnAMaker förstår svenska.  Men…

Det ställer dock till en liten annan utmaning, då man måste hålla reda på både svensk orginaltext och engelsk översättning om man har en bot som använder både QnAMaker och LUIS, vilket jag skulle vilja påstå är normalfallet. Beroende på om man skickar användarens replik till QnAMaker eller till LUIS, måste man skicka på svenska respektive engelska. Nu är det egentligen inte svårt, men det är lätt att glömma bort.

Lycka till!

Michael Buczek
Post by Michael Buczek
2018-11-26 02:29

Comments