Automatisk korrekturlesing

Forfattar

Karl Ove Hufthammer

Innleiing

Me har eit system for automatisk/maskinell korrekturlesing av omsetjingane våre, basert på Pology-rammeverket. Det kan blant anna brukast for å sjekka at omsetjingane følgjer dei språklege retningslinjene våre.

Systemet finn mange av dei vanlegaste feila, både når det gjeld ordval, bøying og teiknsetjing – og til og med litt grammatikk. Her er eit eksempel på korleis det fungerer:

Eksempel på resultatet av automatisk korrekturlesing i eit terminalvindauge.

Installering og bruk

For å ta systemet i bruk må me først lasta ned Pology (korrekturlesingsfilene våre følgjer med). Når du står i mappa du vil leggja programmet i (for eksempel /home/brukarnamn/utvikling/), skriv:

git clone https://invent.kde.org/sdk/pology.git

Du treng ikkje installera programmet, men det greitt å kunna køyra det uansett kva mappe du står i. Legg derfor undermappa pology/bin i PATH-variabelen. Brukar du Bash, ordnar du det ved å leggja dette i fila ~/.bashrc:

export PATH=$PATH:/home/brukarnamn/utvikling/pology/bin

Når du har starta terminalen på nytt, kan du no korrekturlesa ei omsetjingsfil eller ei heil mappe med omsetjingsfiler med kommandoar som

posieve check-rules omsetjing.po
posieve check-rules mappe

For at dette skal verka, må omsetjingsfilene ha innebygd informasjon om kva som er omsetjingsspråket (slik at programmet veit kva språkreglar det skal bruka). Har dei ikkje det, kan du oppgje det manuelt med -slang:-argumentet, slik for nynorsk:

posieve check-rules -slang:nn omsetjing.po

Bruk språkkoden nb for bokmål.

Integrering med Lokalize

Det finst to måtar å bruka korrekturlesinga på i Lokalize. Den enklaste er å leggja til argumentet -slokalize når du køyrer kommandoen. Så lenge Lokalize er ope, vert alle filene som korrekturlesinga meiner har feil, automatisk opna i programmet. Lista over omsetjingar vert òg filtrert til berre å visa dei som har feil.

Resultatet av automatisk korrekturlesing vist i Lokalize. Informasjon om feila står i ruta «Einingsmetadata».

Den andre måten er å slå på automatisk sjekk under «Innstillingar → Set opp Lokalize → Pology»:

Oppsettvindauge for Pology-basert korrekturlesing i Lokalize.

Med denne varianten må du venta litt ved kvar oppføring for at resultatet av testen vert tilgjengeleg. Personleg føretrekkjer eg derfor den første løysinga.

Ekstra argument og eit nyttig alias

Det finst fleire andre argument ein kan bruka. Blant anna kan ein inkludera og ekskludera utvalde reglar. Skriv

posieve check-rules -H
# og
posieve --help

for ei oversikt over alle argumenta. Eitt argument ein godt kan ha med som standard, er --skip-obsolete, som gjer at kontrollen hoppar over utdaterte (utkommenterte) oppføringar.

For å spara ein del tastetrykk er det greitt å laga eit alias som køyrer programmet med dei argumenta ein vanlegvis brukar. Viss du for eksempel alltid korrekturleser nynorskfiler, kan du leggja dette i ~/.bashrc (tilpass viss du brukar eit anna skal enn Bash):

alias sjekk="posieve --skip-obsolete check-rules -slang:nn -slokalize"

No held det å skriva

sjekk mappe

for å korrekturlesa alle filene i mappa mappe og opna feila som vart funne, direkte i Lokalize for retting.

Falske positivar

Korrekturlesingsreglane er skrivne for å avdekkja moglege feil. Dei er ikkje perfekte, og av og til får me falske positivar. Då kan me markera at regelen ikkje skal gjelda for den aktuelle omsetjinga.

Me såg tidlegare at programmet reagerte på ordet «søketillegg», som skulle vera «søkjetillegg»:

Det er basert på ein regel som ser etter teksten «søke» inni eit ord. Men viss me har teksten «søket» (bunden form eintal av substantivet «søk») og regelen reagerte, har me ein falsk positiv. Då ser me om det står ein ID for regelen. Det gjer det, id=verb-søke. Me kan då leggja til ein omsetjingsmerknad (lenkja «Legg til merknad» i Lokalize) og skriva inn ID-en med skip-rule: framfor seg:

skip-rule: verb-søke

Neste gong ein køyrer korrekturlesinga, vil ho ikkje bruka regelen på denne teksten.

(Regelen verb-søke er faktisk litt smartare, så ein slik skip-rule er ikkje nødvendig. Regelen har alt eit unntak for «søke» etterfølgt av bokstaven «t» etterfølgt av ordslutt. Han vil altså ikkje reagera på «søket», men vil reagera på for eksempel «søketreet».)

Køyring av enkeltreglar

Det er òg mogleg å køyra enkeltreglar i staden for alle reglane. Til dette brukar me -srule:-argumentet. Det finst ein regel bokmålsord som sjekkar om det er brukt eit ord i omsetjinga som står i Bokmålsordboka, men ikkje i Nynorskordboka, og viss me vil køyra berre denne regelen, gjer me det slik:

posieve check-rules -srule:bokmålsord

Viss me vil køyra fleire namngjevne reglar, kan me oppgje dei i same argument, skilde med komma:

posieve check-rules -srule:bokmålsord,klammeform

Viss me vil køyra alle reglane utanom éin eller fleire spesifikke reglar, kan me heller bruka -snorule:-argumentet, som har same syntaks.

Reglar for nynorsk og bokmål

For nynorsk har me svært mange reglar, utvikla over fleire år. Men for bokmål finst det nesten ingen. Så førebels er korrekturlesinga mindre nyttig for bokmål.

Bokmålsomsetjarane har altså her ein jobb å gjera! Ein grei start kan vera å ta dei nynorske reglane og prøva å tilpassa dei til bokmål (der det høver). Ta kontakt på e-postlista vår l10n-no for teknisk assistanse.

Korleis fungerer dette teknisk sett?

Dei fleste reglane er enkle søk etter tekstbitar. Her er eit eksempel:

[gjennomsynleg]i
hint="gjennomsynleg → gjennomsiktig"

Denne regelen seier at dersom ein finn teksten «gjennomsynleg» (i-en tyder at ein ikkje skal skilja mellom store og små bokstavar), slår regelen til, og ein får vist feilmeldinga «gjennomsynleg → gjennomsiktig».

Men søkjeteksten er litt meir avansert enn berre ord. Han er det me kallar eit regulært uttrykk. Det gjer at me kan laga meir fleksible søk. Følgjande vil for eksempel reagera på blant anna både «trådd i kraft» og «trø i kraft»:

[(trå|trår|trått|trådd|trådde|trø|trør|trødde|trødd) i kraft]i
hint="trå/trø i kraft → tre i kraft"

Og denne vil finna alle setningar som startar med ordet «Viss» eller «Dersom», men som ikkje har komma ein eller annan plass:

[\b(Viss|Dersom) [^,]+$]
id="komma-leddsetning-viss"
hint="Skal alltid vera komma etter leddsetning som står først i heilsetning"

Me kan òg leggja til unntak. Denne regelen vil reagera på «forlaup» og «livslaup» (som bør vera «forløp» og «livsløp»), men ikkje på «bryllaup»:

[laup]i
hint="laup → løp"
valid after="[Bb]ryl"

Me kan òg bruka den engelske originalteksten. Her finn me tekstar der originalen brukar ordet «please» og der me har for eksempel «vennleg(st)», «ver snill» eller «ver så snill» i omsetjinga:

{\bplease\b}i
hint="Ikkje bruk venlegst / ver så snill e.l. på norsk [avsnittet «Høflegheit» i retningslinjene]"
valid !msgstr="[Vv]enn?leg"
valid !msgstr="[Vv]er (så )?snill"

Reglane kan òg bruka ordlister. På nynorsk har me for eksempel ein regel som sjekkar at me har brukt rett kjønn på orda. Denne er basert på ei liste over nynorske substantiv og vil reagera på tekst som for eksempel «eit parameter» (parameter er hankjønn) og «ein attributt» (attributt er inkjekjønn).

Til slutt er det mogleg å programmera reglar via programmeringsspråket Python. Då kan me laga svært sofistikerte reglar, men det vert òg mykje arbeid. Heldigvis kjem me langt med enkle reglar.