SCARRIE:
Automatisk korrekturlesning for skandinaviske språk

Victoria Rosén og Koenraad de Smedt

Publisert i: Faarlund, J.T., Mæhlum, B. & Nordgård, T. (red.) Mons 7: Utvalde artiklar frå det 7. Møtet Om Norsk Språk i Trondheim 1997 (ss. 197-210). Oslo: Novus forlag, 1998.


1. Innledning

I et innslag i programmet 'Språkteigen' i NRK P2 fortalte Dag Gundersen at han hadde sett en plakat utenfor en restaurant der man reklamerte med:
internasjonalt mat
Og han mente at dette avslørte at det var en som ikke hadde norsk som morsmål som hadde skrevet plakaten, for ingen nordmann ville skrive noe sånt. Men fra det norske feilkorpuset til SCARRIE-prosjektet har vi plukket ut følgende representative eksempler:
sin filmroller
ny bøker
slike konvoluttene
en ufordragelig støyende sted
den samlede museflokkene
den grønne nylonklessnorene
den forferdede nyhetsoppleserne
årets midtsommerfesten
et halvt nedbrente lyset
en helt nye vestfløy
den IT-teknologisk forskning og utvikling omkring et multimedia-universitet
en rekke sterkt kvinnediskriminerende reklamekampanje
andre av lokalsamfunnets støttespiller
de mest forunderligste ting
Det er riktig at nordmenn sjelden sier ting som internasjonalt mat. Men det er absolutt ikke uvanlig at folk skriver ting som de uten problemer ville gjenkjenne som ugrammatikalske hvis de bare hadde hatt tid til å lese skikkelig korrektur. Den lingvistiske problemstillingen i denne artikkelen er å undersøke hvorvidt ulike feiltyper opptrer i skriftlig norsk og hvordan lingvistisk kunnskap kan bidra til å rette disse feil automatisk.

Korrekturlesning utført av mennesker er en tidkrevende og kostbar prosess. I forlagsbransjen er det derfor stor interesse for programmer for automatisk korrekturlesning. Spesielt avisene, som produserer store tekstmengder på svært kort tid, har bruk for god og effektiv automatisk korrekturlesning. I denne artikkelen ønsker vi å presentere SCARRIE, som er et EU-støttet forskningsprosjekt som er rettet mot hvordan lingvistiske kunnskaper kan forbedre automatisk korrekturlesning.

Utgangspunktet for SCARRIE er et ferdig system for nederlandsk som heter CORRie (Vosse 1994). Nederlandsk er et språk som har mange trekk til felles med de skandinaviske språkene, bl.a. problemer med homofoni og produktive sammensetninger. Ett aspekt av den lingvistiske problemstillingen i dette prosjektet er å undersøke hvorvidt lingvistiske teknikker utarbeidet for nederlandsk kan overføres til norsk. Men siden det også er mange forskjeller mellom nederlandsk og de skandinaviske språkene (og de skandinaviske språkene seg i mellom), er det viktig å undersøke hva slags skrivefeil som er spesifikke for norsk. Vi har derfor samlet et korpus med skrivefeil.

I denne artikkelen vil vi først vise hva slags skrivefeil en finner i norske tekster. Deretter vil vi illustrere hvordan lingvistiske kunnskaper kan føre til vesentlige forbedringer i programmer for automatisk korrekturlesning på tre områder: fonologisk analyse, morfologisk analyse og syntaktisk analyse.

2. Et feilkorpus for norsk

Vi har samlet ca. 630 skrivefeil fra norske aviser og romaner, mange med rettelser foreslått av profesjonelle korrekturlesere. Avismaterialene kom fra Stavanger Aftenblad, Trønder-Avisa og Bergens Tidende. To korrekturleste romaner fra Gyldendal var også med.

For analyse av dette materialet tok vi utgangspunkt i en typologi for svenske skrivefeil (Wedbjer Rambell 1998). Vi fant at denne typologien ikke helt dekker behovet for norsk, og derfor har vi utviklet en egen versjon av typologien. Alle feil i korpuset er kategorisert i fire hovedtyper:

1 Grammatiske feil: feil som ikke kan oppdages ved å kontrollere enkeltord, men som muligens kan rettes ved en automatisk grammatisk analyse av setningen (se nedenfor). Eksempler er kongruensfeil, som f.eks. ny bøker.

2 Tegnsettingsfeil: feil som har å gjøre med skilletegn. Dette inkluderer feil orddeling, som f..eks. monopolt- ankegang, som er temmelig frekvent i aviser.

3 Stavefeil: feil i ordets stavemåte som kan oppdages ved å se på ordet utenfor kontekst. Disse feilene resulterer altså alltid i ikke-eksisterende ordformer, f.eks. hade istedenfor hadde. Legg merke til at f.eks. forvekslingen mellom og og å ikke betraktes her som en stavefeil, men som en grammatisk feil.

4 Stilmessige feil: feil som verken kan oppdages ved å se på enkeltord eller ved å analysere setningen. Disse inkluderer:

Det er viktig å forstå at disse feiltyper ikke går ut på tradisjonelle karakteriseringer av hva som utgjør ortografiske eller grammatiske feil, men tar utgangspunkt i hvilken form av lingvistisk kunnskap som er nødvendig for å takle feilen automatisk.

En foreløpig analyse av feilkorpuset viser interessante ting. Blant de 630 samlete feil er det 164 grammatiske feil, 221 tegnsettingsfeil, 199 stavefeil og 46 stilmessige feil. Fra et lingvistisk perspektiv er det interessant at det er et temmelig stort antall grammatiske feil. En god del av disse feil ser ut som om de kunne ha blitt skrevet av utlendinger, som nevnt i innledningen. Men faktum er at de forekommer i stor utstrekning i tekster skrevet av nordmenn. Grunnen til det er at en feilstaving ofte resulterer i et annet eksisterende ord, f.eks. er istedenfor et, eller at forfatteren ombestemmer seg i løpet av skrivingen og glemmer å rette opp hele frasen.

Selv om det nåværende korpuset er veldig begrenset, tror vi at det er viktig for utarbeidelse av strategier for identifisering og retting av feil. I resten av denne artikkelen vil vi diskutere disse strategiene.

3. Fonologisk analyse

Vi vil først vise hvordan fonologisk analyse kan forbedre selve stavekontrollfunksjonen. Det er svært enkelt for en datamaskin å sjekke om en gitt streng (rekke bokstaver) finnes i en ordliste. Men et stavekontrollprogram skal helst ikke bare gi beskjed om at et ord er feilskrevet, den skal også foreslå den korrekte stavemåten. Dette er ingen enkel oppgave. Vi ser med en gang at en vokal er utelatt i:
økonmiske
Men datamaskinen aner ikke hvor feilen ligger. Den vet bare at den ikke finner strengen i ordlisten. For å kunne foreslå korrekt stavemåte, må programmet kunne finne andre strenger i ordlisten som ligner på feilstrengen. Det finnes mange forskjellige teknikker for hvordan dette kan gjøres; her vil vi bare kort skissere metoden CORRie bruker. For det første brukes den såkalte trigrammetoden, en metode utviklet av Angell, Freund og Willett (1983). Strengen deles opp i trigrammer, dvs. strenger som består av tre bokstaver etter hverandre.
 
økonmiske
##ø
 #øk
  øko
   kon
    onm
     nmi
      mis
       isk
        ske
         ke#
          e##      
Man bruker et spesielt tegn (#) for ordgrense. For at også de første og siste bokstavene i et ord skal ha samme vekt i beregningen av trigrammer som bokstavene i midten av ordet, må man bruke to slike tegn i begynnelsen og to i slutten av ordet; da forekommer hver bokstav i tre trigrammer. Strengen økonmiske består da av elleve trigrammer. Vi kan også se på trigrammene som den intenderte strengen økonomiske består av.
 
økonmiske
##ø
 #øk
  øko
   kon
    onm
     nmi
      mis
       isk
        ske
         ke#
          e##
økonomiske
##ø
 #øk
  øko
   kon
    ono
     nom
      omi
       mis
        isk
         ske
          ke#
           e##
Denne strengen er en bokstav lengre, og har derfor tolv trigrammer. De to strengene har ni trigrammer felles. Det gir et høyt mål på likhet. Mer presis er likheten definert slik: to ganger antallet felles trigrammer dividert med summen av antallet trigrammer i de to strengene. For økonmiske og økonomiske vil det si 2*9/(11+12)=0,78. Hvis to strenger ikke har noen trigrammer felles vil det gi 0; hvis de har alle trigrammer felles får vi 1. Jo nærmere 1-tallet vi kommer, jo større likhet er det mellom strengene.

Hva med et feilstavet ord som sjeneser? Det finnes flere ord i ordlisten vår som vil få samme mål på likhet (0,7) etter trigrammetoden: både sjenever og sjenerer har sju av ti trigrammer felles med sjeneser. Men hvis vi ser denne strengen i sin kontekst:

Du store sjeneser!
så skjønner vi umiddelbart at den intenderte strengen var kineser. Men den riktige strengen har bare fem trigrammer felles med den intenderte, og forholdet her blir bare 0,53.
 
sjeneser
##s
 #sj
  sje
   jen
    ene
     nes
      ese
       ser
        er#
         r##
kineser
##k
 #ki
  kin
   ine
    nes
     ese
      ser
       er#
        r##
Hvis vi bare bruker trigrammetoden, virker det mye mer sannsynlig at sjenerer eller sjenever var intendert, mens kineser deler likhetsgraden 0,53 med ord som sjenert, sjenere og sjanser. Disse er bare litt bedre enn sjenerøs, siameser og løsneser, som alle får 0,5.

Hvordan kan vi da forbedre rettestrategien slik at likheten mellom sjeneser og kineser kommer fram? Likheten ligger selvfølgelig på det fonologiske planet. Dette kan vi få fram hvis vi bruker trifonanalyse slik det er foreslått av Berkel og de Smedt (1988). Vi transkriberer da ordene tilnærmet fonemisk.
 

sjeneser
##S
 #Se
  Sen
   ene
    nes
     ese
      ser
       er#
        r##
kineser
##ç
 #çi
  çin
   ine
    nes
     ese
      ser
       er#
        r##
Vi ser at strengene har fem trifoner felles, altså samme antall som var tilfellet med trigrammene. Men siden de nå har et likt antall trifoner, er tallet litt høyere: 0,56. Men dette hjalp ikke noe særlig. Problemet er jo at den som skriver sjeneser antagelig har fonemsammenfall mellom [S] og [ç]. For at en fonologisk analyse skal hjelpe oss til å lage et bedre stavekontrollprogram, må vi ha informasjon om at ord med [ç] også kan uttales med [S].
 
sjeneser
##S
 #Se
  Sen
   ene
    nes
     ese
      ser
       er#
        r##
kineser
##S
 #Si
  Sin
   ine
    nes
     ese
      ser
       er#
        r##
Nå begynner det å hjelpe. Vi har nå seks trigrammer felles og får 0,67 som mål på likhet. Vi nærmer oss altså sjenever og sjenerer. Hvis vi gjør transkripsjonen enda litt grovere og bruker schwa for den trykksvake vokalen i første stavelse, får vi alle ni trifoner felles, altså likheten er fullstendig.
 
sjeneser
##S
 #Se
  Sen
   ene
    nes
     ese
      ser
       er#
        r##
kineser
##S
 #Se
  Sen
   ene
    nes
     ese
      ser
       er#
        r##
Nå vil kineser kunne foreslås som svært sannsynlig korrekt stavemåte.

Denne metoden forutsetter at alle ordene i ordlisten på forhånd automatisk omsettes til trifoner med hjelp av grafem-til-fonemregler. Når korrekturprogrammet finner en ikke-eksisterende streng, omsettes den med de samme reglene til trifoner, og så søkes disse blant trifonene fra ordlisten. Gjennom å bruke en kombinasjon av trigramanalyse og trifonanalyse kan vi vesentlig forbedre stavekontrollfunksjonen.

4. Morfologisk analyse

Ett av problemene med dagens stavekontrollprogrammer er at man får altfor mange falske alarmer, altså at programmet stopper opp ved riktig skrevne ord fordi det ikke kjenner dem igjen. Mange mennesker har det vel felles at de ikke gidder å bruke stavekontrollen som følger med tekstbehandlingsprogrammet nettopp av denne grunnen. For å se hvordan et vanlig brukt stavekontrollprogram fungerer, ble manuskriptet til denne artikkelen kjørt gjennom programmet som følger med Word 5.1. Resultatet var nedslående; det viste seg at svært mange ord ikke ble gjenkjent av programmet.

Det er tre hovedgrunner til at stavekontrollprogrammer ikke kjenner igjen ord som er skrevet riktig. For det første kan det være egennavn eller neologismer som av naturlige grunner ikke finnes i ordlisten. Det er viktig at brukeren skal kunne legge til egne ord til ordlisten, både egennavn, fagtermer, o.l. De fleste programmer har en god del egennavn nå. Words program kjente igjen Victoria, men ellers ble det mange forslag til endringer for tittelen og forfatterne, f.eks.:

SKARRE: Automatisk korrekturlesning for skandinaviske språk

Victoria Rosin og Korneal de Smelt

Noen andre morsomme forslag var at CORRie kunne rettes til Sorry, og at UiO kunne rettes til ufo, alternativt Rio. Dette virker komisk når man er i godt humør, men kan også være uhyre irriterende. En journalist i Bergens Tidende fortalte om et program som ikke engang kjente igjen navnet Olsen, men foreslo at det kunne rettes til oksen. Dette kan som sagt lett ordnes gjennom at man har en omfattende liste av egennavn og at det er lett for brukeren selv å legge til nye ord.

Mer lingvistisk interessante er de andre grunnene til at riktige ord ikke blir gjenkjent. Den andre grunnen er at programmet ikke kjenner igjen bøyningsformer. Dette aspektet av morfologisk analyse er det som Words program klarte best. Men det var likevel en del underlige feil. Det kjente ikke igjen fonologiske, men foreslo at det skulle rettes til fonologisk. Det kjente heller ikke igjen ugrammatikalske, og hadde denne gang ikke noe forslag til retting. Men da programmet i stedet fikk ordet ugrammatikalsk, foreslo det at det kunne rettes til grammatikalsk. Rarest av alt var vel stavemåte, som ble foreslått rettet til stavemåten. Slike feil bør ikke forekomme i et stavekontrollprogram, og vi bestreber oss på å ha en mest mulig fullstendig ordliste med alle ordformer.

Den tredje grunnen til at ord ikke blir gjenkjent er at de er sammensetninger som ikke finnes i ordlisten. Sammensetning i norsk er svært produktiv, og den presenterer den største morfologiske utfordringen for automatisk korrekturlesning. Noen eksempler av sammensetninger fra dette manuskriptet som Word ikke kjente igjen er følgende:

feilkorpus
museflokk
nylonklessnor
nyhetsoppleser
midtsommer
vestfløy
reklamekampanje
forlagsbransje
løsnese
Disse bør kunne analyseres av en skikkelig sammensetningskomponent. For SCARRIE vil regler for sammensetning bli utarbeidet av Tekstlaboratoriet ved UiO. Det er viktig at sammensetningsreglene er gode, slik at flest mulig sammensetninger blir gjenkjent. Samtidig er det viktig at disse reglene ikke er for liberale. Vosse (1994) sier at man må være svært varsom med å tillate sammensetningsledd som består av tre eller færre bokstaver. Hvis man tillater så korte sammensetningsledd kan mange feilstavede ord feilaktig bli analysert som sammensetninger. Øystein Vangsnes har gitt oss et godt eksempel på dette. Han oppdaget at Words stavekontrollprogram aksepterte både den riktige appetitt og den feilaktige apetitt, og han foreslo at Word trodde apetitt var en sammensetning. Dette er alvorlig, siden apetitt er en svært sannsynlig feilstaving av appetitt, og i hvert fall slike feil forventer vi at programmet skal rette. En god sikring mot slike feil er at man har en liste av vanlige feilstavinger som også sjekkes.

5. Syntaktisk analyse

Til slutt vil vi si noe om betydningen av syntaktisk analyse for automatisk korrekturlesning. Som vi så innledningsvis, resulterer svært mange skrivefeil i eksisterende ord, bare andre ord enn de intenderte. Flere slike eksempler har vi her:
Deng har gjort oss en stor tjeneste ved å død over tre år.
som hadde ne hvit bandasje
fikk oss til ås ynke
som omen farlig malstrøm virvlet
Da jeg likte plutselig som ufrivillig fikk se
Men som helhet virket disse frastøtende fysiske trekkende uimotståelig på meg
En menneskelig korrekturleser retter slike feil enkelt fordi han forstår av konteksten hvilke ord som var intendert. Men det er klart at hvis automatisk korrekturlesning skal ha noen mulighet til å oppdage slike feil, må vi ha en syntaktisk komponent. Vanligvis utføres automatisk syntaktisk analyse ved hjelp av en parser, et program som finner en grammatisk analyse på grunnlag av grammatiske regler. En vanlig parser gir imidlertid en analyse bare for korrekte setninger. For å kunne takle grammatisk ukorrekte setninger må parseren derfor være utstyrt med spesielle regler som fanger opp feil. Kongruensfeil, som f.eks. ny bøker, behandles ved å tillate og samtidig markere trekk som ikke stemmer overens. Slike regler kodes i SCARRIE ved hjelp av en trekkbasert grammatikk (Vosse 1994).

Vi har rettet spesiell oppmerksomhet mot feil som gjelder forvekslinger av og og å. Dette er et problem som er spesielt for norsk, og det er en svært skjemmende feil. Denne forvekslingen kan i stor grad rettes opp ved å se på den umiddelbare syntaktiske konteksten. Den svært begrensede distribusjonen til infinitivsmerket er nøkkelen til strategien vår. Noe forenklet kan man si det slik:

  • Finner man å og det ikke følger en infinitiv etter, er det sannsynlig at å bør rettes til og.
  • Finner man og fulgt av en infinitiv, er det sannsynlig at og bør rettes til å.
  • Dette er selvfølgelig en overforenkling. For det første behøver ikke infinitiven å komme rett etter infinitivsmerket; visse adverb kan komme i mellom. Følgende eksempler er fra Norsk referansegrammatikk:
    å aldri unne seg nokon ting
    å berre måtte ta imot kjeft
    å ikke forsikre i hvert fall innboet i sitt hjem
    å likevel si
    Finner vi ikke infinitiv eller adverb pluss infinitiv etter å, kan vi være relativt sikre på at å skal rettes til og. Dette gjør det mulig å håndtere feil som:
    Hvem har vært å brukt min maskin?
    Men selv om det finnes en infinitiv etter infinitivsmerket, er det ikke sikkert at det er riktig, som følgende eksempel viser:
    Vi trenger å vaske å tørke.
    Infinitiver kan nemlig også koordineres, så for å være sikre på at å skal stå foran en infinitiv, må vi sjekke at det ikke også står en infinitiv like foran infinitivsmerket. Verbet vaske kan ikke ta en infinitivsfrase som komplement; derfor kan vi trygt rette å til og.

    Den andre delen av strategien er at og fulgt av en infinitiv med stor sannsynlighet bør rettes til å. Igjen er problemet at infinitiver kan koordineres. Men hvis vi kontrollerer for det, kan strategien likevel hjelpe oss til å korrigere mange og for å feil, f.eks.:

    Det er en stor utfordring og favne publikum utendørs.
    Til slutt bør vi nevne at ikke alle feil av denne typen kan rettes automatisk, ikke en gang med en fullstendig syntaktisk analyse. Se for eksempel på følgende fra en annonse i Bergens Tidende:
    Hjelp oss og nå målet
    Vi skjønner at det her skulle ha stått å, men setningen er grammatisk tvetydig, og derfor umulig å rette automatisk.

    6. Konklusjon

    I denne artikkelen har vi rettet oppmerksomhet mot de lingvistiske problemstillinger som er sentrale i automatisk korrekturlesning for norsk. Vi har tatt utgangspunkt i en analyse av faktisk forekommende feil slik de viser seg i SCARRIEs feilkorpus fra norske avis- og romantekster. Dette korpuset har gitt oss et innblikk i hvordan lingvistisk motiverte strategier for automatisk korrekturlesning kan lages. Vi har deretter rettet oppmerksomhet mot noen av disse strategiene på tre nivåer: fonologi, morfologi og syntaks. På fonologisk nivå har vi foreslått å bruke en metode som er basert på noenlunde "grov" fonologisk sammenlikning, som f.eks. i trifonmetoden. På morfologisk nivå har vi pekt på nødvendigheten av sammensetningsanalyse. På syntaktisk nivå har vi foreslått bruk av en parser som tillater og markerer visse grammatiske feil. Metodene som vi har skissert her vil bli utarbeidet og testet i resten av prosjektperioden.

    Referanser

    Angell, R., G. Freund og P. Willett (1983) "Automatic spelling correction using a trigram similarity measure", i Information Processing and Management 19.

    Berkel, B. van og K. de Smedt (1988) "Triphone analysis: a combined method for the correction of orthographical and typographical errors", i Proceedings of the Second Conference on Applied Natural Language Processing, Austin, Texas: Association for Computational Linguistics.

    Faarlund, J.T., S. Lie og K.I. Vannebo (1997) Norsk referansegrammatikk, Universitetsforlaget, Oslo.

    HIT-programmet, SCARRIE-prosjektet: http://fasting.hf.uib.no/~desmedt/scarrie/

    Vosse, T.G. (1994) The Word Connection: Grammar-based Spelling Error Correction in Dutch, Neslia Paniculata, Enschede.

    Wedbjer Rambell, Olga (1998) Error Typology for Automatic Proof-reading Purposes. SCARRIE Deliverable 2.1, version 1.1.