Maskinöversättning med hjälp av statistik Erik Karlsson erika669@student.liu.se
Innehåll Inledning... 1 Bakgrund och historia... 2 Historia... 2 Klassiska designer... 2 Direkt översättning... 2 Interlingua... 2 Överföringsbaserad översättning... 2 Statistiskt maskinöversättning - en introduktion... 3 Maskinöversättning med hjälp av statistik... 3 Grunderna... 3 Problem... 3 Övervinna problemen... 4 Problem ett: Utforma en modell... 4 Problem två: Skapa beräkningsbara enheter... 5 Problem tre: Värdera parametrarna från steg två... 6 Problem fyra: Översätt... 6 Egna reflektioner och åsikter... 7 Referenser... 8
Inledning En stor fördel med dagens informationssamhälle är den mängd data man kan få tag på. Sedan internet slog igenom på 90 talet har mängden information tillgänglig för varje människa med en internetuppkoppling i stort sett växt till oändlig. Dock finns det ett stort problem med detta, nämligen att informationen kommer på mängder med olika språk. Även om engelska är ett "världsspråk" är det ändå många som inte behärskar det lika bra som sitt modersmål och man skall inte glömma bort Indien och Kina som tar en stor del av världens population. Faktum är att engelska bara kommer på tredje plats i antalet människor som har det som modersmål och blir slagna med ganska stor marginal av framförallt kinesiska (Illustrerad vetenskap, 2011). Detta innebär att det skapas en språklig barriär och mycket av informationen som vi har tillgänglig kan vi inte ta till oss. Eftersom många människor är tvåspråkiga skulle en möjlighet för att råda bot på detta vara att översätta allt manuellt till ett gemensamt språk. Men det stora problemet då är att manuell översättning tar extremt lång tid och det bästa vore om man kunde få översättningen när man väl behövde den eftersom att försöka översätta all information som finns tillgänglig i världen helt enkelt är en omöjlig uppgift. För att inte tala om att först försöka översätta all gammal information och dessutom hinna med och översätta all ny. Det är här maskiner och framförallt maskinöversättning kommer in. Maskinöversättning kan i teorin vara lösningen på ovanstående problem eftersom alla skulle kunna ha ett maskinöversättningsprogram och genast få tillgång till all världens information på sitt eget modersmål när just de behöver det. Men så lätt är det tyvärr inte! För att kunna översätta mellan två språk krävs en enorm förståelse för de bägge språken samt en hel del kreativitet. För om man ska vara riktigt ärlig finns det nödvändigtvis inte bara ett rätt svar utan många gånger är det en smaksak vilket som passar bäst in i just det specifika sammanhanget. Och för att uppfylla termen maskinöversättning måste översättningen ske utan korrigeringar av en människa vilket ökar svårighetsgraden ytterligare. Idag finns det många olika metoder för att försöka tackla översättningsproblemet men en av de modernaste kallas statistisk maskinöversättning och det är hur detta system fungerar jag kommer fokusera på. Detta system används bland annat av Google translate sedan 2007! Detta arbete bygger på ett tidigare verk av Adam Lopez, 2008 och hans arbete är således källan när inget annat anges. Dock är den historiska översikten inspirerad från ett verk av John Hutchins från 1995. 1
Bakgrund och historia Historia Redan i början av 1600 talet föreslogs det att man kunde använda mekaniska ordböcker för att övervinna språkbarriären men det var inte förrän 1937 som George Artsrouni först visade upp en liknande prototyp. I slutet av 50-talet utvecklade IBM ett system för att översätta från Ryska till Engelska som visserligen var långt ifrån bra, men räckte för att få fram grundläggande vetenskaplig information. Detta system användes fram till 70talet av det amerikanska flygvapnet som sedan tog in det klassiska systemet SYSTRAN som än idag används av organisationer världen över. Klassiska designer Direkt översättning Direkt översättning är den äldsta maskinöversättningsmetoden och innebär att man översätter direkt från ett språk till ett annat. Detta gör att direkt översättning har några unika egenskaper som inte gör det speciellt användbart i dagens flerspråkssamhälle. Det största problemet är att det är enkelriktat. Reglerna för översättningen gäller bara åt ena hållet så du kan aldrig översätta tillbaka till ursprungsspråket med denna metod. Dessutom, eftersom det endast fungerar från ett specifikt språk till ett annat specifikt språk är det ingen generell lösning för flera språk. Interlingua Interlingua är en annan klassisk men dock lite modernare metod som försöker råda bot på direkt översättnings bi-språkighet. Med denna metod sker översättningen i två steg istället för ett. Först översätter man ursprungsspråket till ett mellanspråk kallat Interlingua. Detta språk är ett internationellt språk som bygger på det faktum att många språk har rötter från latin och grekiska och således är många ord i de olika språken bara varianter på ett och samma ord från dessa språk. Interlingua har dessutom en förenklad grammatik i jämförelse med vanliga språk. När man väl har översatt ursprungsspråket till interlingua är det sedan bara en fråga om att översätta från interlingua till målspråket. Systemen som bygger på interlingua är specialiserade på antingen översättning till interlingua eller från interlingua vilket gör att varje språk bara behöver två olika system för att kunna tolka och dela med sig information till hela världen. Ett system som översätter ursprungsspråket till interlingua och ett system som översätter interlingua till målspråket. Nackdelarna är dock att långt ifrån alla språk har samma rötter och ju fler språk man vill kunna översätta emellan, ju fler språk måste man kunna sammanfoga till ett gemensamt språk vilket antagligen blir en omöjlig uppgift om man skall ha med alla världens språk. Överföringsbaserad översättning Den metod av de klassiska designerna som än idag håller måttet är den överföringsbaserade översättningen. Den bygger till viss del på interlinguas flerstegsprincip, men istället för att översätta till ett gemensamt språk analyserar man i första steget meningen från ursprungsspråkets morfologiska och syntaktiska särdrag och försöker sedan göra dessa tillräckligt abstrakta för att 2
kunna överföras till målspråket där man sedan kan översätta meningen och behålla särdragen för en mer korrekt översättning där den underliggande betydelsen och tonen i meningen bevaras bättre. Statistiskt maskinöversättning - en introduktion Om man räknar den direkta översättningen som första generationens översättningssystem och interlingua samt det överföringsbaserade systemet som den andra generationen så klassas den statistiska översättningen som den tredje. Det första maskinöversättnings systemet som baserades på enbart statistik presenterades av IMB 1988. Dock började man redan på 1960-talet att experimentera med statistik som en del av ett mer klassiskt system utan några större framgångar. Det speciella med statistiska maskinöversättningssystem är just att man förlitar sig helt, eller iallafall nästan helt, på statistiken och tar i princip inte hänsyn till några lingvistiska regler och egenskaper alls. För att göra detta hanterar statistiska översättningssystem översättningen som ett maskininlärningsproblem. Detta innebär alltså att man med hjälp av stora korpusar översatta till ett eller flera språk, så kallade bikorpusar eller multikorpusar, och en inlärningsalgoritm kan bygga ett nytt översättningssystem. De största fördelarna med detta system är att man kan bygga det på en mycket kort tid samt slipper ta hänsyn till språkets lingvistiska egenskaper och regler. Maskinöversättning med hjälp av statistik Grunderna Uppgiften är att översätta en sekvens av ord från ursprungsspråket S u och förändra det till en sekvens av ord från målspråket S m. Vi betecknar en mening som en sekvens av ord n från ursprungsspråket som u 1 u 2...u n och en mening från målspråket som m 1 m 2...m o. Målet för översättningssystemet är alltså att när den får ett ord u 1 så ska den hitta ett ord m 1 vars betydelse efter översättningen liknar u 1. Men eftersom direktöversättning av ord inte alltid är helt lätt och många ord har flera betydelser samt att det rätta valet oftast handlar om i vilken kontext ordet befinner sig så måste översättningssystemet ha ett system för att kunna välja bland dessa. Dessutom har många språk olika frasuppbyggnader så ett sätt att ordna orden i en ny följd enligt målspråkets regler måste också finnas. Problem För att bygga ett system för statistiskt maskinöversättning är det fyra huvudsakliga problem som måste övervinnas. Dessa är: 1. För det första måste vi finna regler som beskriver hur vi ska omforma en mening från ursprungsspråket till målspråket och sedan göra en modell för hur detta ska ske. 3
2. Nästa steg är att se till att vårat system kan göra bra och välgrundade beslut när det finns oklarheter och tvetydligheter i språket. Detta sker genom att skapa beräkningsbara enheter för att kunna rangordna flera olika alternativ. 3. I detta steg bestämmer vi värdet på de beräkningsbara enheterna vi skapade i steg 2. Detta sker genom maskininlärning. 4. Sist men inte minst ska själva översättningen ske. Givet en sträng söker vi helt enkelt efter den bästa översättningen enligt våran tidigare modell. Övervinna problemen Problem ett: Utforma en modell Modellen är egentligen hela den samlingen regler som systemet kräver för att lyckas översätta meningar från ursprungsspråket till målspråket. Egentligen kan dessa regler skapas hur man vill, men i de statistiska systemen brukar man nästan alltid räkna ut dem från parallell korpusar. Exakt hur detta går till kommer jag inte gå igenom i denna text men finns väl beskrivet i artikeln detta arbetet bygger på. När man väl räknat fram en modell bygger den i de allra flesta fall på en av två formalismer: Ändliga översättare Ändliga översättare bygger i sin tur på teorin om ändliga automater men har här gjorts om så man har två band istället för ett och kan på så sätt producera en översättning samtidigt. I korthet går det ut på att man parar ihop banden med varandra, och när man får en inmatning, till exempel ett tecken, som finns med på första bandet spottar maskinen ur sig motsvarande tecken på det andra bandet. För att göra en modell av detta kan man sedan koppla ihop dessa så ibland kan utmatningen från det andra bandet användas som inmatning på det första bandet igen. Hur dessa sammankopplingar ser ut är själva modellen och översättningen sker antingen ord för ord eller mer vanligt att man översätter ett helt stycke till ett annat stycke. Synkron kontextfri grammatik Synkron kontextfri grammatik bygger istället på den vanliga kontextfria grammatiken som innebär att man skapar regler för hur meningar får byggas med hjälp av lingvistiska egenskaper såsom regeln, åtminstone i svenskan, att en mening är uppbyggd utav en nomen fras och en verb fras. Fördelen när grammatiken är synkron är att man enkelt kan kasta om olika meningar och delar av meningar med redan existerande regler. För att göra en översättning skapar man sedan gemensamma regler för de bägge språken och varje ord kommer att vara lagrat som ett ord på varje språk. Fördelen med denna modell är att träden man bygger upp kommer vara syntaktiskt korrekta och det är som tidigare nämnt mycket enkelt att kasta om delar utav träden utan att den korrekta syntaxen förstörs. 4
Problem två: Skapa beräkningsbara enheter För att kunna hantera osäkerhet finns det många olika sätt. Men det som skiljer just statistiska system från övriga är att i statistiska maskinöversättningssystem ser man det som ett maskininlärningsproblem. Eftersom våra modeller i steg ett kan producera mängder med olika meningar som alla är syntaktiskt korrekta blir vårt mål att med hjälp av sannolikhet beräkna vilken översättning som borde vara den korrekta. Vi vill alltså veta vad sannolikheten är för en mening på målspråket m givet meningen på ursprungsspråket u P(m u). Problemet är bara att denna formel inte beskriver hur vi fått fram m ur u. Detta leder till att vi kan få flera värden på P beroende på vilken metod som använts för att komma fram till m. Därför modifieras formeln till att summan för alla sannolikheter samt m givet alla regler r. Således får vi formeln: P m u = r:y (r,m) P(m, r u). Men nu uppstår ytterligare ett problem, nämligen att när vi använder den nya formeln i modellerna som bygger på ändliga översättare och synkron kontextfri grammatik så kommer det innebära att vi får en exponentiell komplexitet. Så vi förenklar den ytterligare och nöjer oss med enbart P(m, r u) i detta steg eftersom våra modeller kommer föreslå en mening kan vi betygsätta den med denna kortare formel och behöver således inte kontrollera den mot alla möjliga sätt vi kan skapa samma mening eftersom vi redan vet hur vi gjorde. Vårat enda kvarvarande problem är att m, r och u kan anta extremt stora värden, i vissa fall närmast oändliga eftersom meningarna kan vara hur långa som helst och reglerna för att skapa översättningen kan vara hur många som helst. Vi måste därför på något sätt försöka styra dessa regler och meningar i rätt riktning så de inte blir oändligt långa. Detta kan ske på flera olika sätt men jag tänker endast beskriva det med hjälp av generativa modeller. Generativa modeller För att kunna begränsa m, r samt u vill vi finna ett annat sätt att räkna ut P(m, r u). Eftersom kedjeregeln säger att P(x, y) = P(x y) P(y) så kan vi genom att använda Bayes regel bryta ut P(x y) enligt följande: P x y = P x,y P y = P(y x)p(x) P(y) Om vi använder detta på vår formel får vi följande: P m, r u = P(u, r m)p(m) P(u) men eftersom när vi väl översätter kommer P(u) vara konstant (är ju det ordet/meningen vi vill översätta) och således behöver vi inte ta hänsyn till den. Därför får vi slutligen formeln: 5
P m, r u = P(u, r m)p(m) Vi får nu alltså två nya sannolikheter för att få fram samma sannolikhet som tidigare. Dessa är P(m) vilken kallas språkmodellen och P(u, r m) som kallas översättningsmodellen. Fördelen med att ha dessa separata modeller är dels att vi nu kan översätta från målspråket till ursprungsspråket istället och dels att eftersom vi nu beräknar de två sannolikheterna på olika sätt minskar risken för eventuella uppskattningsfel. Exakt hur dessa beräknas hann jag inte med att förklara, men för den intresserade finns detta noggrant beskrivet i artikeln denna text bygger på i del 4.2 på sidan 25. Problem tre: Värdera parametrarna från steg två När vi väl har bestämt hur vi kan räkna ut P(m, r u) måste vi ange värden till alla parametrar vi skapade i steg 2. Ett sätt för att få värden att räkna med är om vi antar att ett parallellkorpus skapades av vår modell och således är korpusen skapad med hjälp av parametervärdena vi vill ha. Vår uppgift nu är att uppskatta vilka parametervärden som användes. Vi vill alltså veta chansen för att ett ord översätts till ett annat givet parametrarna vi räknade fram i steg 2. Orden tar vi från ett korpus som vi kan kalla K. Våra parametrar betecknar vi med Θ. Formeln blir således: Θ = P Θ (K) men eftersom vi dessutom vill finna bästa parametervärdet slänger vi in ett argmax också och får formeln: Θ = argmax P Θ (K). Man kan tycka att denna uträkning vore ganska enkel eftersom om vi vet hur ofta ett ord m förekommer i texten och vi vet hur många gånger n det ordet översats till ett annat ord u blir till exempel värdet på parametern för att översätta m till u helt enkelt n/m. Detta är dock inte så lätt eftersom orden inte nödvändigtvis är exakta översättningar av varandra utan det enda vi kan vara säkra på är att hela meningarna betyder samma sak. Vi kan dock se hur ofta u och m finns i samma mening och således kan vi enkelt räkna ut att om u och m aldrig finns i samma meningar så är parametervärdet för (m u) = 0. För att däremot få reda på det omvända, när vi säkert vet att parametervärdet (m u) <> 0, är en lösning att beräkna den förväntat frekvensen och därifrån få ett uppskattat värde. Denna metod kallas förväntad maximering och går i korthet ut på att givet ett initialt värde på våra parametrar räknar vi igenom alla möjliga sätt att koppa ihop u med m givet dom parametrarna vi startade med. Vi lägger sedan ihop dessa sannolikheter och delar det med sannolikheten för alla möjliga kopplingar i korpusen. Problem fyra: Översätt Sist men inte minst vill vi såklart använda alla våra lösningar på de tidigare problemen nu för att översätta en mening. För att lösa detta behöver vi egentligen bara säga att vi vill hitta en mening m i målspråket som ger den högsta sannolikheten för att givet en regel r översatts från u givet att regeln r genererar en korrekt sträng: m = argmax P(m, r u) ( ˆm:Y ( ˆm,r)) 6
Denna optimering är dock inte helt enkel eftersom även om vi kraftigt begränsat storleken på m r och u kvarstår fortfarande väldigt många möjligheter, speciellt eftersom man vill hitta den bästa lösningen. Sättet man löser detta på är att försöka optimera sökningen, men de exakta detaljerna är specifika för vilken formalism man skapade modellen ifrån och därför anser jag inte det vara relevant i denna avhandling och tas således inte heller upp. Egna reflektioner och åsikter Maskinöversättning är ett stort område som utvecklas med en rasande fart, inte minst med tanke på att datorerna blir allt bättre hela tiden och således ökar möjligheterna för att hitta på nya och intressanta lösningar som kanske inte är de mest optimala rent resursmässigt, men eftersom man har så mycket beräkningskraft i dagens moderna datorer så har man råd med det istället för att till exempel skriva massa exakta regler för hur översättningen ska ske. Jag måste erkänna att jag innan jag började arbetet antog att statistisk maskinöversättning skulle visa sig vara något revolutionerande. Men om sanningen ska fram så är det bara ett snabbt och "smutsigt" sätt att översätta ord utan några revolutionerande skillnader mot generation 1 och 2. Uppenbarligen genererar det förhållandevis bra meningar men den stora skillnaden från de tidigare modellerna är enbart ett effektivt sätt att hantera osäkerhet på och systemet kan därför välja en bättre mening när valet står mellan flera stycken. Men detta sätt att hantera osäkerhet bygger ju i sin tur på redan översatta texter och utan dem vore statistisk maskinöversättning meningslös. Frågan är bara om man någonsin kommer kunna få tillräckligt bra och stora korpusar för att någonsin kunna lära ett sådant här system till perfektion. Dessutom, eftersom mycket av språket bygger på kontext och en känsla tror jag aldrig en maskin kommer lyckas fånga det om inte maskiner först lär sig förstå människors känslor och tankar. Vad jag däremot tror skulle kunna vara ett effektivt sätt att översätta ord/meningar på och som kommer vara sättet maskinöversättning blir i framtiden är att man samlar in alla korrekta meningar i världen och bygger en gigantisk databas som det bara är att slå upp en mening i. Problemet är väl bara om det verkligen finns ett ändligt antal meningar, många hävdar ju att så inte är fallet, men jag skulle tro att man kan samla in en tillräcklig mängd för att om inte annat kunna bygga specialiserade program för specifika ändamål eller verksamhetsområden som aldrig gör fel i översättningen inom just det området. 7
Referenser Hutchins, J. 1995. Machine translation: A brief history Illustrerad vetenskap, Världens 11 mest talade språk. http://illvet.se/manniskan/psykologibeteende/varldens-11-mest-talade-sprak (hämtad 2011-09-16) Lopez, A. 2008. Statistical machine translation 8