Orddelingsomsetjing

I førre innlegg i denne serien gjekk eg kort gjennom ymse metodar for å generera omsetjingskandidatar til tospråklege ordbøker; i dette innlegget skal eg gå litt meir inn på kandidatgenerering ved omsetjing av enkeltdelane av samansette ord. Me har som nemnt allereie ei ordbok mellom bokmål og nordsamisk, som me vil utvida til bokmål–lulesamisk og bokmål–sørsamisk. Og ordboka blei utvikla for å omsetja typisk «departementsspråk», så ho er full av lange, samansette ord. Og på samisk kan me setja saman ord omtrent på same måte som på norsk (i tillegg til ein haug med andre måtar, men det hoppar me glatt over for no). Dette bør me kunna utnytta, sånn at viss me veit kva «klage» er på lulesamisk, og me veit kva «frist» er, så har me iallfall éin fornuftig hypotese for kva «klagefrist» kan vera på lulesamisk 🙂

Orddeling er flott når du skal omsetja ordbøker. Særskrivingsfeil er flott når du vil smila litt.
«Ananássasuorma» jali «ananássa riŋŋgu»? Ij le buorre diehtet.

Altså kan me bruka dei få omsetjingane me allereie har mellom bokmål og lulesamisk/sørsamisk til å laga fleire omsetjingar, ved å omsetja deler av ord, og så setja dei saman igjen. Me har òg eit par omsetjingar liggande mellom nordsamisk og lulesamisk/sørsamisk, så me kan bruka same metoden der (og utnytta det at me har ei bokmål–nordsamisk-ordbok til å slutta riŋgen tilbake til bokmål).

Dekning og presisjon

Dessverre (i denne samanhengen) har me òg ofte fleire omsetjingar av kvart ord; i dei eksisterande bokmål–lulesamisk-ordbøkene me ser på (i stor grad basert på ordboka til Anders Kintel) står det at «klage» kan vera mellom anna gujdalvis, gujddim, luodjom eller kritihkka, medan «frist» kan vera  ájggemierre, giehtadaláduvvat, mierreduvvam eller ájggemærráj. Viss me tillet kvar venstredel å gå med kvar høgredel, får me 16 moglege kandidatar for dette eine ordet! Sannsynlegvis er ikkje meir enn ein eller to av dei brukande (og kanskje ikkje det ein gong). I snitt får me rundt dobbelt så mange kandidatar som kjeldeord med denne metoden. Så me bør finna metodar for å kutta ned på dårlege kandidatar.

Den komplementære utfordringa er å få god nok dekning. Av og til ser me at me ikkje har ei omsetjing av delane av ordet, sjølv om me har omsetjingar av ord med dei same delene i seg. Den setninga krev nok eit døme 🙂 Me vil gjerne ha ein kandidat for ordet «øyekatarr» på lulesamisk, altså samansetjinga «øye+katarr». Me har kanskje ei omsetjing for «øye» i materialet vårt, men ingenting for «katarr». Derimot står det at «blærekatarr» er gådtjåráhkkovuolssje. Så for å utvida dekninga, kan me i tillegg dela opp kjeldematerialet vårt i alle par av samansetjingsdelar; viss me veit at desse orda kan analyserast som «blære+katarr» og gådtjåráhkko+vuolssje, så kan det jo synast som at «blære» er gådtjåráhkko og «katarr» er vuolssje (og Giellatekno har heldigvis gode morfologiske analysatorar som fint deler opp slike ord på rette staden). Og dette gir ei god utviding av materialet – faktisk får me kandidatar for nesten dobbelt så mange av dei orda som me ønsker kandidatar for, viss me utvidar kjeldematerialet på denne måten. Men det har ei stor ulempe òg: Me får over dobbelt så mange lule-/sørsamiske kandidatar per bokmålsord (i snitt rundt fire kandidatar per kjeldeord).

Filtrering og rangering

Me vil innskrenka dei moglege kandidatane til dei som mest sannsynleg er gode. Den beste testen er å sjå om kandidaten finst i korpus, og då helst i same parallellstilte setning (dette er oftast ein bra kandidat). Viss ikkje, så kan me òg sjå på om kandidaten og kjeldeordet har liknande frekvensar, eller om kandidaten har frekvens i det heile.

Orddelingsomsetjinga foreslo tsavtshvierhtie for «virkemiddel», og der stod dei i ein parallellsetning òg:
<s xml:lang="sma" id="2060"/>Daesnie FoU akte vihkeles tsavtshvierhtie .
<s xml:lang="nob" id="2060"/>Her er FoU er et viktig virkemiddel .

– då er det nok eit godt ordpar.

Uheldigvis har me så lite tekstgrunnlag for lule-/sørsamisk at me fort går tom for kandidatar med frekvens i det heile. For sørsamisk har me t.d. berre kandidatar med korpustreff for rundt 10 % av orda me lagar kandidatar for.

Ein annan test, som fungerer på alle ord, er å sjå om det får analyse av dei morfologiske analysatorane våre; viss ikkje (og viss det i tillegg ikkje har korpustreff) er det oftast feil. Men dette fjernar berre rundt 1/4 av kandidatane; med den oppdelte ordboka vår (kor me òg har med par av delar av ord) har me enno i snitt rundt tre kandidatar per kjeldeord.

(Ein test som eg prøvde, men avslo, var filtrering basert på liknande ordlengd. Det verkar jo logisk at lange ord blir omsett til lange og korte til korte, men det finst mange gode unntak. I tillegg fjernar det alt for få dårlege kandidatar til at det ser ut til å vera verdt det.)

Det parallelle korpusmaterialet vårt er altfor lite, men når me skal generera kandidatar til ordbøker så er det jo ikkje parallelle setningar me prøver å predikera, men parallelle ord og ordbokspar. Og då er jo læringsgrunnlaget vårt eigentleg dei eksisterande ordbøkene våre … Derfor prøvde eg å sjå på kva for samansetjingsdelar som faktisk var brukt i dei tidlegare omsetjingane våre, og kva for par av delar som ofte opptredde i tidlegare omsetjingar, og kva for delar som sjeldan eller aldri gjorde det. Til dømes har den oppdelte ordboka vår for bokmål–lulesamisk desse para:

  • løyve    loahpádus
  • løyve    doajmmaloahpe
  • arbeidsløyve    barggoloahpádus
  • spesialløyve    sierraloahpádus

Her ser me at «løyve» anten kan vera loahpádus eller doajmmaloahpe – skal «taxiløyve» då vera táksiloahpádus eller táksidoajmmaloahpe? På bakgrunn av dette materialet bør me nok satsa på det første – sjølv om doajmmaloahpe står oppført, så er det berre loahpádus som opptrer i samansette ord.

Då kan me prøva å generera kandidatar for alle bokmålsorda i materialet vårt, både dei me eigentleg er ute etter å finna kandidatar for, og dei me allereie har omsetjingar for. Gå så gjennom dei genererte kandidatane for dei orda me allereie har omsetjingar for, og tel opp dei para av orddelar som genererte slike ord. Me har kanskje laga kandidatane barggo+loahpádus og barggo+dajmmaloahpe for «arbeids+løyve»; når me så går gjennom dei eksisterande omsetjingane og finn at «arbeidsløyve» stod i ordboka med omsetjinga barggoloahpádus, så aukar me frekvensen til paret «løyve»–loahpádus med éin, medan «løyve»–dajmmaloahpe blir verande null.

For no har berre filtrert ut dei kandidatane kor paret til anten første- eller andreledd hadde nullfrekvens. I følgje litt manuell evaluering frå ein lingvist er det omtrent berre dårlege ord som blir kasta ut, så det filteret ser ut til å fungera bra. På den andre sida blir berre rundt 10 % av kandidatane fjerna viss me berre hiv ut dei med nullfrekvens, så neste steg blir å bruka frekvensane til å få ei full rangering.

Viss alle ord kunne delast i nøyaktig to delar, så ville det kanskje vore nok å telja opp par av delar og enkeltdelar for å estimera sannsyn, altså f(s,t)/f(s).  Men av og til kan ord delast på fleire måtar, til dømes kan me sjå på «sommersiidastyre» som «sommer+siidastyre» eller «sommersiida+styre» (eg har valt å halda meg til todelingar av ord, for å unngå for mange alternative kandidatar). Viss omsetjinga er giessesijddastivrra, med analysane giesse+sijddastivrra eller giessesijdda+stivrra, så har me ikkje utan vidare nokon grunn til å velja den eine over den andre (vel, me har lengd i dette tilfellet, men det gjeld ikkje i alle slike døme, og me kan ha par av analysar som er 2–3 eller 3–2). Då kan me heller ikkje seia kva for par av orddelar (s,t) me skal auka når me ser «sommersiidastyre»–giessesijddastivrra i treningsmaterialet. Men viss me i tillegg ser «styre»–stivvra ein annan stad, så har me plutseleg eit grunnlag til å ta ei avgjerd. Metodar som Expectation Maximization kan kombinera relaterte frekvensar på denne måten for å finna fram til gode estimat, men eg har ikkje komme så langt at eg har fått implementert dette enno.

Kandidatgenerering for ordbøker til lågressursspråk

Som nemnt har eg jobba med å laga kandidatar til omsetjingspar i ordbøker mellom norsk og lule-/sørsamisk. Viss dette hadde vore typisk «store» språk, ville metoden for å finna gode kandidatar vore klar:

  1. finn svære parallelle tekstkorpora frå offentlege EU-tekster, bøker osb.
  2. køyr Giza++, som brukar ein statistisk metode for å finna ut kva som er dei mest sannsynlege ordpara i mengder med parallelle setningar

Det mykje brukte Europarl-korpuset har titalls millionar ord per språk, dette gir ganske gode ordpar. Då bokmål–nordsamisk-delen av prosjektet var under utvikling, brukte dei eit parallellkorpus med under 500.000 ord, dette gav etter det eg har høyrt svært «støyete» data som trengte mykje manuell rydding for å bli brukbart. For bokmål–lulesamisk og bokmål–sørsamisk har me knapt 100.000 ord med parallellstilte setningar, og berre rundt 10 % av dei orda som me vil ha omsett finst i parallellkorpuset. Det seier seg sjølv at me ikkje kan klara oss med å køyra Giza++  for denne jobben.

Ja, det er ei strek der til høgre, viss du zoomar litt inn

Når dei vanlege ingrediensane ikkje finst, så må du vera kreativ og bruka det du har, og ta sjansen på at ikkje alt fungerer like bra. Dei metodane me har prøvd har anten vore basert på omsetjing av deler av ord, eller omsetjing via eksisterande ordbøker.

Omsetjing via eksisterande ordbøker

Dette er vel den konseptuelt enklaste metoden: Viss me har ei bokmål–nordsamisk-ordbok, og ei nordsamisk–lulesamisk-ordbok, så kan me «kryssa» desse for å få bokmål–lulesamisk. Til dømes står det at «dampbad» er sávdni i bokmål–nordsamisk-ordboka, medan nordsamisk–lulesamisk-ordboka gir sávdni→sávnne, så då får me at «dampbad» er sávnne (denne metoden er òg mykje brukt i Apertium).

Me kan òg bruka eksisterande ordbøker til å finna enkle synonymlister, som me kan utvida dei eksisterande omsetjingane med. Me vil til dømes gjerne ha omsetjingar av ordet «arbeidsform» til sørsamisk. I ei av ordbøkene finst det eit ord som er omsett til både «arbeidsform» og «arbeidsmåte», så dei er sannsynlegvis synonyme. Og faktisk har me ei omsetjing til sørsamisk av «arbeidsmåte»: barkoevuekie, så då er det ein god sjanse for at barkoevuekie òg er ei mogleg omsetjing av «arbeidsform». (No som eg tenkjer over det, så liknar vel dette litt på dei semantiske speglane til Dyvik.)

Omsetjing av deler av ord

Sett at me har eit bokmålsord som me vil ha på lulesamisk. Me klarer ikkje å finna ein lulesamisk kandidat sjølv om me følgjer synonymlister eller kryssar ordbøker eller slår opp i parallelltekst. Me kan prøva å transitivt følgja lister (synonym av synonym) eller ordbøker eller parallelltekst, men då blir det fort vanskeleg å halda kvaliteten oppe og dei stakkarane som må sjekka listene får endå meir tull å lesa gjennom. Men ord er ikkje atomære (iallfall ikkje på desse språka); det finst samanhengar mellom deler av omsetjingar, på ulike nivå.

Viss to språk er like nok, så går det ofte an å rett og slett «stava om» ord til det andre språket. Eg brukte denne metoden tidlegare for å generera kandidatar for nynorsk–bokmål i Apertium som eg så sjekka manuelt (du får mange gode adjektiv ved å endra -leg til -lig, pluss eit par andre småting), og me har òg brukt slike reglar for nordsamisk og lulesamisk, som er dei likaste av språkpara me ser på her. Giellatekno hadde allereie utvikla eit XFST-skript for å  «lulesamifisera» nordsamisk (me gjorde eit par endringar i løpet av dette prosjektet), som berre ser på enkle stavereglar og lydsamanhengar, utan kjennskap til morfologi (utover ordklasse) eller nokon leksikalsk informasjon. Dette blir forståeleg nok ikkje alltid heilt bra – ofte er den beste omsetjinga eit ord som ikkje liknar i det heile. Omsetjinga av birgemuš «livsopphald» er til dømes ikkje *birggemusj, men viessomuj. Men me fekk likevel ein del gode forslag med metoden. I tillegg er det ein metode som spyttar ut forslag for omtrent kva det skal vera av input – dei fleste andre metodane kan dessverre berre gi forslag for delar av ordlistene våre. For sørsamisk, derimot, blir den språklege avstanden for stor, og slik enkel «sørsamifisering» ville nok ikkje fungert.

Den siste metoden me har brukt er omsetjing av delene av samansette ord, men no er det lenge sidan eg såg overskrifta her, så det får eg spara til eit seinare innlegg.

Ordbøker til lulesamisk og sørsamisk på veg

Sidan desember har eg jobba for Giellatekno ved Universitetet i Tromsø med språkteknologi og språkressursar for samisk, det må vera verdt eit innlegg her 🙂 Akkurat no er i gong med maskinomsetjing, men mesteparten av vinteren har gått med til eit prosjekt for å laga ordbøker mellom norsk og lulesamisk og mellom norsk og sørsamisk. Prosjektet er eit offentleg oppdrag, dei vil ha hjelp for omsetjing av offentlege dokument og slikt, altså må me ha med mykje fagterminologi og departementsspråk og generelt lange ord som «allmennkringkastingsforpliktelse» eller «kulturminneregistreringsprosjekt». Eit tidlegare prosjekt laga ei slik ordbok mot nordsamisk, no skal me utvida ho mot to samiske språk til.

Min del av prosjektet har vore (1) å henta inn, kategorisera og reinska opp tekst på lule- og sørsamisk, sånn at det går an å sjå om eit ord faktisk er i bruk, og (2) å laga lister med kandidatar for omsetjingspar norsk-samisk, ved ulike metodar. Ein kandidat/eit omsetjingspar er til dømes «verdensforståelse →  almmavuodadádjadus», som kan vera rett eller feil. Eg kan ikkje samisk, så nokon andre får jobben med å gå gjennom desse listene og merka av for om dei er gode eller dårlege omsetjingar (og då bør eg helst laga så gode kandidatar som mogleg, så jobben til dei andre ikkje blir for kjip).

Tekstinnsamlingsbiten er relativt grei; finn nettsider med masse lulesamisk/sørsamisk, legg inn i eit program som hentar ned sider og arkiverer dei under rett språkkode og kategori i kodelageret til Giellatekno. Ikkje så utfordrande, men det tek tid; til gjengjeld er det verdt mykje å ha gode tekstgrunnlag. Det er ganske stor forskjell i kor flinke ulike offentlege instansar er til å omsetja til samisk; av og til er det éi oppsummeringsside på samisk mot tusen på norsk, medan andre gonger er omtrent alt omsett. Av dei som er flinke, finn me dei ulike kyrkjene (er det ein bra ting eller kva?) og … seksualopplysningsidene til Sveriges landsting.

Programmet me brukar til tekstinnsamling heiter CorpusTools (hovudsakleg utvikla av Børre Gaup frå Giellatekno/Divvun); det skal i tillegg kunna henta ut rein tekst frå ulike dokumentformat (HTML, PDF, …) og køyra språkgjenkjenning for å berre henta ut det som er i eit visst språk. Eg har òg jobba litt på CorpusTools-koden; eg har mellom anna prøvd å gjera tekstutvinninga meir robust, i tillegg til å reimplementera språkgjenkjenninga slik at ho stemmer overeins med den klassiske Perl-baserte TextCat-algoritmen – det er no sjeldan at tekstutdrag over to ord ikkje blir gjenkjent med rett språk 🙂

Me kan òg merka dokument for at dei er parallelle med andre dokument, og bruka CorpusTools til å finna parallelle setningar – dette fungerer ikkje alltid like bra, men med eit stort nok korpus kan det vera nok bra parallellsetningar til at dei overdøyver støyen. Meir om dette i eit seinare innlegg …