Samisk på norsk

6 juni, 2010

Eg har ein heilt fantastisk sommarjobb. Eg samarbeider for tida med folk frå Apertium og Sámi Giellatekno (det samiske språkteknologiprosjektet ved UiT) for å få til maskinomsetjing frå nordsamisk til bokmål.

Oppdatering: utviklingsversjonen kan no testast frå sidene til Giellatekno.

Dette er litt meir krevande enn nynorsk-bokmål1… viss me hadde teikna eit kart der språk som likna på kvarandre sto nær kvarandre, kunne me fått noko slikt:

NB: Kartet er ikkje i målestokk. MÅ IKKJE NYTTAST TIL NAVIGERING

Altså er det litt forskjell på språka. No finst det sjølvsagt ein del språklege lån mellom norsk og samisk, men dei har heilt forskjellige språkfamilier og historie. Eit par døme på forskjellar:

  • samiske substantiv har ikkje kjønn, greit nok…
  • samiske pronomen har ikkje kjønn – den er litt verre, skal me omsetja son til «han» eller «ho»?
  • samiske verb bøyer seg etter subjektet, så av og til sløyfar folk pronomenet – då må me setja inn eit nytt pronomen på norsk (med rett kjønn…)
  • dei samiske verba er i det heile teke fulle av hemmelege våpen til å uttrykka ulike tidspunkt, aktørar og haldningar til situasjonen. Verbet veahkehit tyder «å hjelpa», veahkehat blir «du hjelper», veahkeheaččan blir (litt avhengig av kontekst) «du kunne vel hjelpa», medan veahkehežžet blir «du kunne vel ha hjelpt»
  • og så har me alle avleiingane, som gjer verb om til substantiv, substantiv om til adjektiv, eller seier at noko skjedde i hast, eller ofte, eller berre ein gong, eller at nokon fekk nokon til å gjere noko, eller at nokon berre byrja å gjere noko… Me har mange av desse mekanismane på norsk au, t.d. kan me gjera «skikk» til eit adjektiv ved å leggje til «-eleg», men å driva og laga nye ord slik er alt for risikabelt til at me kan gjera det til ein generell regel (*«kjærleikeleg»?).

For å ha det sagt: eg kan ikkje samisk. Det har tydelegvis skjedd ein glipp i utdanninga mi. Men eg har god hjelp frå dei fantastiske tri binda med LÆREBOK I LAPPISK (SAMISK) frå 19262 (og ein litt nyare grammatikk), i tillegg til at språkteknologane ved UiT allereie har gjort størsteparten av det arbeidet som krev skikkeleg samiskkunnskap. Min jobb er hovudsakleg å laga reglar som gjer ferdig analysert samisk tekst om til forståeleg bokmål.

Omsetjing mellom så ulike språk gir svært mange utfordringar. Me har i første omgang berre satsa på samisk til bokmål, og ventar med andre retninga. Me vil at maskinomsetjinga skal vere nyttig og formålstenleg, og då er det best å byrja med samisk til bokmål. Dei to vanlegaste formåla med automatisk omsetjing er:

  1. assimilering: maskinomsetjinga skal vera god nok til at ein kan forstå omsetjinga sjølv om ein ikkje forstår originalspråket
  2. disseminering: maskinomsetjing skal vera god nok til at ein omsetjar (som altså forstår begge språk) heller vil rette på maskinomsetjinga enn å skriva omsetjinga frå botnen av

Når folk nyttar maskinomsetjing frå eit majoritetsspråk til eit minoritetsspråk innanfor eit samfunn (t.d. bokmål til samisk, bokmål til nynorsk), er det sjeldan sånn at dei som har minoritetsspråket som morsmål ikkje forstår majoritetsspråket og lurer på kva det står i originalteksta; maskinomsetjing frå bokmål til samisk blir først nyttig når omsetjinga er god nok til at ho med minimalt etterarbeid blir klar for utgjeving. Andre vegen, derimot, er det nyttig med ei omsetjing som berre gir eit oversyn over innhaldet i originalteksta, utan å vera så bra at ein profesjonell omsetjar ville nytta ho som grunnlag. Så målet for no er at viss du t.d. søkjer etter namnet ditt og finn ein blogg på samisk som snakkar om deg3, så skal du kunne køyra dette innlegget gjennom Apertium og finne ut om det dei sa om deg var bra eller dårleg ;-)

Men sjølv om me tillèt dårleg flyt i bokmålen, må me sjølvsagt ha noko å omsetja alle dei ulike verbformene og avleiingane til, og me må unngå å mista eller forvrenga viktig informasjon. Det er mange utfordringar i dette språkparet, men heldigvis har sjølve Apertium-plattforma fått ein del nye verktøy å takla utfordringane med. Men det får eg spara til eit seinare innlegg.

Fotnotar:

1 Ja, samisk til nynorsk hadde vore endå litt kulare, men me må jo spara noko til seinare :-)

2 Vel, i nytt, men uendra, opplag frå 1977. I forordet står det at namnet på boka blei fastslått i 1922, «da trykningen begynte», og lappisk enno var det mest kjende namnet (det tok fire år å få trykka boka… ting tok tid før).

3 For skuld argumentet kan me lata som om det skortar på litt grunnleggande danning og du ikkje kan lese samisk.

I dei siste ti-tjue åra har det vore veldig populært med datadrivne statistiske metodar i maskinomsetjing, og Google spesielt har ytra ei sterk tru på at meir data alltid vil trumfe over betre kunnskap. Men i eit foredrag frå i fjor sommar kunne det sjå ut til at Franz Och, leiaren for maskinomsetjingsprosjektet til Google, vurderer å sprøyta inn litt kunnskap i omsetjinga.

Når det er snakk om korleis maskinomsetjinga kan bli betre, viser han eit døme på ein tysk langdistanseavhengnad, der hovudverbet er på slutten av setninga, og nemner at dei har byrja å sjå på korleis dei kan nytte grammatikkar for å flytta verbet fram og gjere setninga «meir engelsk» før omsetjinga:

Ideally we would want to learn that from data […] and in some sense it’s in the data and a computer should be able to do that too, but in the meantime we are looking into ways to just explicitly put that knowledge into the system. So far the automatic grammar induction work has been, eh, not…very…well working or so…

Eg har sjølv prøvd meg på induksjon av dependensgrammatikkar, og resultatet var ikkje akkurat oppløftande; men det kjem vel betre metodar med åra.

Men dette med langdistanseavhengnader er noko som lenge har vore eit kjent problem for reint datadrivne metodar, og ein kan få ganske god statistisk maskinomsetjing (SMT) trass slike problem; men eg blei meir overraska over det følgjande utsagnet:

rule-based system with proprietary access

There’s a lot of interest [in SMT], and one reason is that it’s relatively simple for a small team to build a decent MT system by taking off-the-shelf resources, and there’s open-source software, parallell corpora and standard evaluation sets. […] This was not possible ten years ago with the rule-based systems, it was a complicated system with proprietary access [for] some companies and it was very hard to do the relevant research.

Det hjalp sjølvsagt at det på nittitalet blei mogleg å handtera store mengder data komputasjonelt; men likevel er det tankevekkande at tilgang til fri programvare og open data blir nemnt som ein hovudgrunn til at det skjer så mykje forsking på SMT. Ted Pedersen skriv at du burde «Measure Your Career in Downloads and Users». Det statistiske maskinomsetjingsverktøyet giza-pp1 har i følgje heimesida blitt lasta ned 9379 gonger, ikkje inkludert andre nettsider og utgåver. Med tanke på kor komplekst2 dette verktøyet er, vil eg tru at ein stor del av desse brukarane er doktorgradsstudentar…

Situasjonen til regelbasert maskinomsetjing er heldigvis i ferd med å betra seg her; dei siste åra har det komme fleire regelbaserte system med open data og open kjeldekode (FOSMT.org har ei god oversikt), der ein del system direkte erstattar kjende proprietære system som Xerox-verktøya, medan andre, som Apertium og Matxin, er uavhengige innovasjonar. Kanskje kjem dette til å gi den historiske pendelen eit lite dytt mot meir kunnskapsbaserte metodar igjen…

Fotnoter:

1 Som faktisk er basert på eit verktøy av Franz Och igjen.

2 Det var altså ein eufemisme.

Fri programvare er essensielt for fri forsking, i alle fagfelt der programvare er ein del av forskingsprosessen.

Slik det er no, får gjerne eit forskingsprosjekt offentleg stønad sjølv om det ikkje er mogleg å testa eller validera eit forskingsresultat utan å

  1. kjøpa tilgang til ein lukka platform (programvare), og
  2. kjøpa lisens for forskingsmaterialet.

Og ofte er det ikkje mogleg å få testa resultatet sjølv om ein har kjøpt desse lisensane. Dette er feil, både praktisk, etisk og epistemisk, av fleire grunnar.

For det første: om me skal kunne stola på eit empirisk forskingsresultat må me kunne gjendriva dette («falsifying», å sjekka om det er mogleg å gjenta eit eksperiment). Før i tida var det gjerne slik at eit forskingsresultat kunne skildrast så detaljert i ein artikkel at det faktisk var mogleg å gjenskapa eit eksperiment utan meir informasjon enn det som sto i artikkelen. Dette gjeld ikkje lenger – forsking no involverer gjerne tusenvis av databaseoppslag, tekster eller liknande (dvs. materialet som blei henta inn), og spesialisert programvare til å handsama dette materialet. I tillegg til å gje ut ein artikkel som skildrar metoden og resultata, sjølve materialet og eventuell programvare som blei utvikla i forskinga vera tilgjengeleggjort – elles har me ingen grunn til å stola på forskinga.

Dette gjeld ikkje berre for andre forskarar som vil gjendrive resultat, men au for dei som sjølv gjorde forskinga. Ted Pedersen har ein fantastisk artikkel (pdf) kor han fortel om professor Zigglebottom som publiserer ein artikkel om ein ny og betre parser (dvs. eit program som finn ulike strukturar i tekst); problemet er berre at programmet var skrive og testa av ein doktorgradsstudent og er totalt udokumentert, og nokre år seinare får ikkje ei gong Zigglebottom sjølv til å køyra programmet. Eg veit sjølv om nok av akademisk arbeid som, uansett kor innovativt og elegant det ein gong var, ikkje kan brukast eller testast fordi det er udokumentert, lukka, eller avhengig av ein gamal platform som ikkje blir oppdatert lenger fordi selskapet som lagte han ikkje tener nok penger på å oppdatera denne platformen. Slike prosjekt døyr med forskarane sine. Om ein frå byrjinga av har eit ope prosjekt, kan det veksa seg langt større enn det lille instituttet der det byrja. Eit godt døme på dette er R-prosjektet, som byrja som eit lite akademisk program med ein fri lisens, men no har blitt eit av dei leiande systema for statistisk analyse.


For det andre er det eit etisk problem at me gir stønad til utvikling av lukka informasjon. For å seie det litt enkelt, kvifor skal du betala skatt for fleire professorårslønner om ikkje du sjølv – i prinsippet – kan få noko ut av forskinga? Dette er ikkje berre hypotetisk. Om data og programvare som blir utvikla får ein fri og open lisens, kan me faktisk tena på det fordi andre har tilgang til det. Me hadde t.d. aldri klart å få til såpass god dekning og presisjon i maskinomsetjing mellom nynorsk og bokmål i Apertium om ikkje det var for at Norsk ordbank (ei slags ordbok) og Oslo-Bergen-taggaren (ein slags parser, heldigvis ikkje utvikla av professor Zigglebottom) hadde frie lisensar. Det same gjeld den norske stavekontrollen i OpenOffice. Du treng ikkje vere datalingvist for å tena på at datalingvistisk forsking er open, og prinsippet gjeld sjølvsagt ikkje berre språkteknologi.

Men det må nok ei haldningsendring til. Forskarar må tørra å dela kjeldematerialet sitt, og godta at andre forskarar kan finna feil i forskinga deira. I fri programvare-modellen er ikkje ein feil eit stort tema; grunntanken må alltid vera at ingen er feilfrie. Viss du som utanforståande finn ein feil i eit prosjekt, så rapporterer du denne i den offentlege feilbasen (bugtrackaren) til dei som har ansvar for prosjektet. Enkelt og greit, og alle tener på det. Når det er snakk om forsking er dette faktisk endå viktigare, sidan slike feil kan gå ut over tidlegare publiserte resultat.

Manifestet blir altså sånn:
Ein må alltid ta spørsmålet om fri tilgang til materiale og programvare med i totalvurderinga når det er snakk om offentleg prosjektstønad til forskingsprosjekt.
Om deler av midlane skal gå til utvikling av spesialisert programvare (kanskje utført av innleigde programmerarar) må denne programvaren frigjerast. Det burde vera sjølvsagt.
Søknader som er avhengige av lukka platformar skal nedprioriterast.
Om det skal samlast inn materiale, t.d. som grunnlag til statistisk eller anna maskinell analyse, må dette materialet (der det ikkje går ut over personvernet) vera tilgjengeleggjort; helst under ein fri og open lisens slik at skattebetalarane kan få nytte av det, og slik at det fritt kan kommersialiserast.

(Dette innlegget blei delvis framprovosert av eit spørsmål på friprog.no.)

(Vil du heller lesa dette innlegget på bokmål?)

I april 2009 søkte eg på Google Summer of Code, og fekk eit stipend for å jobbe i Apertium-prosjektet saman med åtte andre studentar. Apertium er ei mengd program og språkdata som m.a. blir nytta til automatisk omsetjing, og båe språkdata og programvaren er fritt og ope. Mitt prosjekt var apertium-nn-nb – maskinomsetjing mellom nynorsk og bokmål, og eg har vel jobba omtrent kvart ledige minutt på dette i sommar. Tirilensin og Baldur har vore svært tolmodige…

Eg har no gitt ut versjon 0.6.01 av apertium-nn-nb. Dette er altså eit språkpar for Apertium som gjer at du kan omsetja tekst mellom bokmål og nynorsk. Språkparet har ca. 46000 oppslagsord for kvart språk og ca. 88% dekning på Wikipedia-artiklar (meir statistikk her); det vil seia at litt meir enn kvart tiande ord ikkje blir analysert (dei siste ti prosentpoenga er svært vanskelege, sidan jo nærare du kjem 100% dekning, jo fleire ord treng du per prosentpoeng).

Kvifor Apertium?

Eg studerer datalingvistikk og språkteknologi, så maskinomsetjing er jo ideelt for meg. Og i tillegg til at dei har fantastiske mentorar så har Apertium funne seg ein interessant nisje i maskinomsetjingsmarkedet, dei konsenterer seg om minoritetsspråk og lågressursspråk, t.d. Baskisk, Bretonsk, Galisisk og Katalansk, og då spesielt omsetjing mellom majoritetsspråket og minoritetsspråket innanfor eitt område. Dei har au ein svært pragmatisk haldning til maskinomsetjing – formålet er å få eit godt resultat2. Eit svært godt maskinomsetjingsresultat kan føra til at eit minoritetsspråk får meir tilgjengeleg tekst og dimed høgare status i samfunnet som skriftspråk. Eit middels godt resultat er au eit gode sidan dei som berre les majoritetsspråket mistar eit argument for å krevja at minoriteten er nøydt til å lesa og skriva majoritetsspråket.

Sidan Apertium ofte har å gjera med språk som har lite ferdig omsett og fritt tilgjengeleg tekst (parallellkorpora), er det vanskeleg å nytta slike reint statistiske metodar som Moses, Google eller Asia Online nyttar3, i staden kodar dei inn eksplisitt språkkunnskap. Det du treng av ressursar for å leggja til eit nytt språk er altså berre ein grammatikk og ei ordbok, og litt tid og ork. Nokre av dei involverte er lingvistar som kanskje har eit språk dei vil bidra med ressursar til, andre er heller programmerarar som jobbar meir med sjølve verktøya.

Så kor kan eg prøva dette vedunderet?

Sidan Apertium er fritt og ope, kan du gjerne køyra det på din eigen maskin. Apertium og nn-nb-paret kan installerast på GNU/Linux via t.d. apt (for t.d. Debian eller Ubuntu-brukarar) ved å skriva sudo apt-get install apertium lttoolbox apertium-nn-nb. På Arch Linux installerer du frå Arch User Repositories med yaourt -S apertium-nn-nb. På andre system må ein nok kompilera sjølv (sjå installasjonssidene på wikien).

Men det går au an å prøva nn-nb på http://apertium.org, du kan skriva inn tekst og trykkja «omsett» eller lasta opp filer i ulike format (HTML, ODF, RTF, osb.).

I tillegg går det an å få Apertium-omsetjingar inn i XChat, WordPress, Pidgin, Virtaal, OmegaT og OpenOffice ved hjelp av ulike tilleggsprogram. Nokre av desse kan henta omsetjingar over nettet (vha. eit anna sommarkodeprosjekt) så ein treng ikkje å ha installert Apertium sjølv. Eg har ikkje prøvd alle desse sjølv, så spør andre om hjelp til det ;)

Korleis fungerer apertium-nn-nb då? (Den tekniske biten)

(Dette er basert på ein presentasjon (pdf, manus her) eg heldt for workshopen om føringsgrammatikk i Odense på Nodalida 2009.)

Apertium er eit hovudsakleg regelbasert system, med lite syntaktisk informasjon. Kvart språkpar består av ulike modular, der kvar modul tek inn tekst, gjer noko med denne og spyttar ut igjen meir tekst. For å laga eit språkpar treng du minimum tri ting:

  • ei bøyingsordbok for det eine språket
  • ei bøyingsordbok for det andre språket
  • ei omsetjingsordbok mellom dei to språka
Apertium XML (av ebemenelli)

Apertium XML (av ebemenelli)

Den vanlegaste måten å laga Apertium-ordbøker er ved å skriva dei i XML-formatet til lttoolbox. Desse ordbøkene gir informasjon som at ordet kvalp er eit substantiv, og har eit visst bøyingsparadigme (endinga -en står for bunden form eintal, osb.), og i omsetjingsordbøkene at substantivet kvalp i språk 1 kan omsetjast til substantivet valp i språk 2; XML-en blir kompilert til svært raske endelege tilstandsmaskinar som kan lesa ordet kvalpen og spytta ut teksta

kvalp_substantiv_hankjønn_eintal_bunden

som altså er bøyingsanalysen av ordforma, eller lesa denne analysen og spytta ut

valp_substantiv_hankjønn_eintal_bunden

Ordbøkene kan au nyttast til generering, så

valp_substantiv_hankjønn_eintal_bunden

sendt til bokmålsordboka gir valpen.

Men det kan jo henda at du jobbar med eit språk der lttoolbox-formatet ikkje passar så bra, t.d. Georgisk. Då kan du, om du vil, skriva dei einspråklege ordbøkene i det meir uttrykksfulle, men treigare, HFST-formatet – eller eigentleg kva som helst, så lenge du kan få det formatert slik som døma over.

Det som er kjekt med å basera seg på denne typen data er at det ofte finst slikt tilgjengeleg allereie. Det er nemleg ofte slik informasjon som går inn i stavekontrollar og liknande; i mitt tilfelle konverterte eg fullformsordlistene til Norsk ordbank (med litt hjelp av ordbokprogrammet Ordbanken) til Apertium-formatet. Norsk ordbank har svært mange oppslag og svært god informasjon, og er i tillegg fri programvare så eg kunne nytta den informasjonen med godt samvit. Konverteringa var ein del arbeid; i tillegg måtte eg ha ei omsetjingsordbok. Denne var først lagt automatisk ved å omsetja alle ord som fantest i båe ordbøker. For å utvida desse nytta eg au det statistiske verktøyet Giza++ saman med ReTraTos for å henta ut omsetjingar frå http://noreg.no og bokmåls- og nynorskomsetjingane av KDE4 (her køyrte eg au poterminology og poswap for å henta ut omsetjingar av «terminologi»). Men eg har nok fått mest ut av halvmanuelle metodar når det gjeld denne ordboka (skripting, emacs-makroar, …), sidan statistiske metodar ikkje gir så gode resultat på så små parallellkorpora.

Men du kjem ikkje så langt med ordbøker åleine. Det er (minst) to andre hovudproblem i maskinomsetjing:

  1. ordformer kan ha ulike tydingar
  2. ulike språk har ulik ordfølgje og bøying

For å takla det første problemet treng me i det minste ein taggar. apertium-nn-nb har to, faktisk. Først ein føringsgrammatikk, dette er ei stor mengd reglar av typen «viss ordboka seier at dette kan vera anten partisipp eller fortidsverb, og det kjem rett etter bli, ha eller vera, så er det ikkje eit fortidsverb» (med eit par andre atterhald…). Heldigvis for meg fantest det allereie ein fritt tilgjengeleg føringsgrammatikk i form av Oslo-Bergen-taggaren, denne måtte konverterast ein del for å passa inn i Apertium, men kvaliteten på systemet er svært mykje høgare enn det hadde vore om eg måtte skriva alle reglane sjølv. Eg har i tillegg utvida denne til å takla problem som han ikkje takla frå før av, slik at dei som jobbar med Oslo-Bergen-taggaren au får eit betre produkt. Etter føringsgrammatikken kjem ein statistisk taggar som tek det endelege valet etter at føringsgrammatikken har fjerna det han kan.

Problem nummer to blir løyst i transfer-modulen. Her finst reglane som sørgjer for at adjektiv og substantiv har same kjønn og tal (t.d. om me vil at «en liten jente» på bokmål skal bli «ei lita jente» på nynorsk), og meir kompliserte reglar som sørgjer for at «mannens røde bil» blir til «den raude bilen til mannen», eller at «bøker skrives» blir til «bøker blir skrivne» medan «bøker kan skrives» blir til «bøker kan skrivast». Desse reglane måtte eg skriva heilt for hand (au i XML), og dei er nok enno langt frå ferdige (prøv t.d. «bøker leses ikke»).

Det finst enno store utfordringar, t.d. har me ingen anaforoppløysing og så godt som ingen orddisambiguering (t.d. forskjellen mellom bokmålsordet ville i tydinga ha lyst til versus tydinga forville); i tillegg bør ordbøkene utvidast og det finst jo nok av ting ein kan pussa på i dei andre modulane…

Om det er andre som er interessert i å bidra til prosjektet vil eg rå dei til å sjå på http://wiki.apertium.org/wiki/Norsk, og ta kontakt med meg eller dei andre i Apertium, miljøet der er svært venleg mot nye bidragsytarar :-)

Fotnotar:

1 Dette er visst det tradisjonelle førsteversjonsnummeret i Apertium…

2 Alternativet er å prøva å først oppnå den mest korrekte lingvistiske skildringa, og så sjå kor gode maskinomsetjingsresultat det kan gi.

3 Men, litt statistikk kan involverast likevel, det er ofte lett å få tak i einspråkleg tekst.

Følg

Få alle nye innlegg levert til Innboksen din.