Maskinomsetjing mellom nynorsk og bokmål i Apertium, første utgåve!

19 august, 2009

(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.

4 Responses to “Maskinomsetjing mellom nynorsk og bokmål i Apertium, første utgåve!”


  1. [...] av nynorsk–bokmål-paret i Apertium, om det er nokon som er interessert i detaljane har eg eit innlegg her. Elles er det mogleg å teste det på http://apertium.org, utviklingsdetaljar er på [...]


  2. [...] Maskinomsetjing mellom nynorsk og bokmål i Apertium, første utgåve! « Lemurbataljonen [...]


  3. [...] dei som likar bokmål, fins det derimot eit alternativ; nemleg Kevin Brubeck Unhammers flotte arbeid med maskinomsetjaren Apertium. Eg hev derfor lagt til ein bokmålslenke i menyen til høgre. Samtidig vil eg oppfordra folk som [...]


  4. [...] Apertium er eit prosjekt med open kjeldekode som først vart starta for å kunne omsette mellom spansk (kastiljansk) og katalonsk. Spanske og katalanske styresmakter betalte for utviklinga. Det fungerer godt for nærskylde som språk, som vi vel må seie at nynorsk og bokmål er. Du kan lese meir om det tekniske hos Lemurbataljonen [...]


Legg att eit svar

Fill in your details below or click an icon to log in:

WordPress.com logo

Du kommenterer no med WordPress.com-kontoen din. Logg ut / Endre )

Twitter-bilde

Du kommenterer no med Twitter-kontoen din. Logg ut / Endre )

Facebook-foto

Du kommenterer no med Facebook-kontoen din. Logg ut / Endre )

Google+ photo

Du kommenterer no med Google+-kontoen din. Logg ut / Endre )

Koplar til %s

Følg

Få alle nye innlegg levert til Innboksen din.

%d bloggers like this: