Skåne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Sitemap   Kalender   Søg
 

UNMAINTAINED - Vedligeholdes ikke længere !

Utveckling av SSLUG:s ispell-ordlistor

Programmet ispell används för att kontrollera och rätta stavning. Programmet kan hämtas på adressen http://fmg-www.cs.ucla.edu/geoff/ispell.html. För att programmet ska vara användbart måste man också ha en ordlista för det språk man talar/skriver. SSLUG utvecklar ordlistor för danska och svenska. Syftet med denna webbsida är att berätta om hur utvecklingen går till. Alla som vill är välkomna att hjälpa oss att förbättra ordlistorna! Följ denna länk om du vill veta vad som behöver göras.

Hashkodade ordlistor

En ispell-ordlista består av en fil som innehåller en "hashkodad ordlista". De hashkodade ordlistorna installeras vanligtvis i katalogen /usr/lib/ispell. SSLUG:s ispell-ordlistor heter svenska.hash och dansk.hash.

Vid utvecklingen av en ispell-ordlista skapar man inte den hashkodade ordlistan direkt. I stället ska man ha dels en "rå" ordlista och dels en så kallad affixtabell. Med en rå ordlista menas en fil som innehåller enbart en massa ord, ett per rad. De råa ordlistor som används till SSLUG:s ispell-ordlistor är dansk.ordlista (312716 ord) och svenska.ordlista (118270 ord). En affixtabell är en fil som beskriver de vanligaste böjningsformerna i den råa ordlistan. Affixtabellerna som SSLUG använder är dansk.aff och svenska.aff. Affixtabellen ger ett visst mått av språklig logik åt ispell-ordlistan.

Med hjälp av affixtabellen reducerar man den råa ordlistan till en "datalista", som motsvarar exakt samma ord som den råa ordlistan. På varje rad i "datalistan" finns ett ord i sin grundform, samt ett antal så kallade flaggor som anger vilka böjningsformer ordet har. Vad flaggorna betyder definieras i affixtabellen. SSLUG:s datalistor är dansk.datalista (55485 ord på grundform) respektive svenska.datalista (24208 ord på grundform). Datalistan är betydligt mer kompakt än den råa rodlistan. Datalistan skapas från affixtabellen och den råa ordlistan med programmet munchlist. Den hashkodade ordlistan skapas från affixtabellen och datalistan med hjälp av programmet buildhash. Såväl munchlist som buildhash följer med källkoden till ispell.

Ord och böjningar

I filen svenska.datalista står det bland annat

brasa/EGSZ
klase/AEGSZ
tupp/DGS

Här anges tre ord på grundform. Efter varje ord står ett snedstreck följt av ett antal bokstäver. Bokstäverna efter snedstrecket är de flaggor vi talade om ovan. Lägg märke till att de tre ord jag här valt ut alla har flaggan G.

Betrakta nu följande utdrag ur den svenska affixtabellen:

flag *G:
# Som stol: stolar, stolarna, stolarnas, stolars
        [^AE]           >       AR
        [^AE]           >       ARNA
        [^AE]           >       ARNAS
        [^AE]           >       ARS
# Som timme: timmar, timmarna, timmarnas, timmars
        E               >       -E,AR
        E               >       -E,ARNA
        E               >       -E,ARNAS
        E               >       -E,ARS
# Som fara: faror, farorna, farornas, farors
        A               >       -A,OR
        A               >       -A,ORNA
        A               >       -A,ORNAS
        A               >       -A,ORS

Koden ovan definierar flaggan G. Den beskriver några pluralisböjningar av substantiv. Den tredje raden säger att ord som markerats med flaggan G och som inte slutar på A eller E, kan böjas genom tillägg av bokstäverna AR. Från "tupp" bildas på det sättet böjningsformen "tuppar". Raderna fyra, fem och sex ger på samma sätt böjningsformerna "tupparna", "tupparnas" och "tuppars". Rad åtta säger att ord som markerats med flaggan G och som slutarlutar på E, kan böjas genom att E tas bort och AR läggs till. Motsvarande gäller för de tre följande raderna. Att "klase" markerats med flaggan G innebär alltså att ordet har böjningsformerna "klasar", "klasarna", "klasarnas" och "klasars". Helt analogt gäller att "brasa" har böjningsformerna "brasor", "brasorna", "brasornas" och "brasors".

Egentligen är det tre helt olika slags böjningar som beskrivs med flaggan G. Det vore bättre och klarare att ha tre olika flaggor för dessa böjningar. Anledningen till att vi har klumpat ihop dem så här är att ispell bara tillåter ett begränsat antal flaggor. Hur många som tillåts beror på ett val man gör vid kompileringen av ispell; man får välja mellan 26, 32, 64 eller 128. Då många använder förkompilerade binärer som bara klarar 26 flaggor, har vi i SSLUG strävat efter att begränsa oss till 26 flaggor i våra affixtabeller. (Den ispell-binär som används i Debian GNU/Linux klarar dock 64 olika flaggor.)

Inga (eller åtminstone ytterst få) svenska ord som slutar på A eller E böjs genom tillägg av AR, ARNA, ARNAS eller ARS. (Det skulle då bli ord som slutar på AAR eller EAR, vilket såvitt vi vet är högst ovanligt :-) Därför offar vi just inget (mer än läsbarheten) då vi klumpar ihop de tre olika slagen av böjningar i den enda flaggan G. Däremot tjänar vi in två flaggor, något som är värdefullt då vi på grund av vår strävan att inte använda fler än 26 olika flaggor hela tiden "ligger på gränsen".

Många andra flaggor än G beskriver på motsvarande sätt flera fullständigt olika slags böjningar.

Här är ett mer komplicerat exempel, definitionen av flaggan F:

flag *F:
# Som fönster, fader
        [^M] E R        >       -ER,REN
        [^M] E R        >       -ER,RENS
# Som nummer
        M E R           >       -MER,REN
        M E R           >       -MER,RENS
# Som exempel
        [^M] E L        >       -EL,LEN
        [^M] E L        >       -EL,LENS
# Som vimmel, himmel
        M E L           >       -MEL,LEN
        M E L           >       -MEL,LENS
# Som tecken: tecknen, tecknens
# Som socken: socknen, socknens
        E N             >       -EN,NEN
        E N             >       -EN,NENS
# Som hem, rem
        M               >       MEN
        M               >       MENS
# Som ton, man
        [^E] N          >       NEN
        [^E] N          >       NENS
# Som täcke, bi, kilo, knä
        [EIOÄ]          >       NA
        [EIOÄ]          >       NAS
# Substantivformer av verb:
# Som avslöja: avslöjandena, avslöjandenas
        A               >       NDENA
        A               >       NDENAS

Raderna tre och fyra beskriver böjningar av ord som slutar på ER men inte MER. Exempel är böjningsformerna "fönstren" och "fönstrens" av ordet "fönster". Raderna sex och sju behandlar ord som slutar på MER; till exempel har "nummer" böjningsformerna "numren" och "numrens". Längre ner beskrivs att ord som som slutar på E, I, O eller Ä kan böjas genom tillägg av NA eller NAS (ifall de är markerade med flaggan F). Av "täcke" blir det då "täckena" och "täckenas".

Sammansatta ord

I svenska och danska förekommer ofta sammansättnignar av ord. Av "bild" och "skärm" bildas till exempel ordet "bildskärm". Av "Öresund" och "bron" bildas ordet "Öresundsbron". Av "ränta" och "höjning" bildas "räntehöjning", av "gruva" och "arbetare" bildas "gruvarbetare".

I en rå ordlista kan man ta med många av de vanligaste sammansättningorden, men det är omöjligt att ta med alla eftersom sammansättningar får bildas relativt fritt inom vissa ramar. Exempelvis användes nyligen sammansättningsordet "tunnelgiftet" upprepade gånger i svenska massmedia. Detta ord finns inte i SSLUG:s råa svenska ordlista. Men ändå accepterar den hashkodade ordlistan det som rättstavat. Hur kan det komma sig? Jo, i början av den svenska affixtabellen står det

compoundwords controlled S
compoundmin 3

Detta betyder att ispell ska godkänna sammansättningar av ord som är markerade med flaggan S i datalistan och som har minst tre bokstäver. ispell kan bara hantera sammansättningar av två ord, inte av tre eller flera. Såväl "tunnel" som "gift" är markerade med flaggan S i svenska.datalista:

gift/ABDQS
tunnel/AEIS

Därigenom godkänns "gifttunnel", "gifttunneln", "tunnelgift", "tunnelgiftet" osv. Däremot godkänns inte det felaktiga ordet "giftettunneln", för det första ordet i sammansättningen måste vara på sin grundform.

Det sista påståendet ovan är inte riktigt sant, "parkeringsvakt" är en tillåten sammansättning av "parkering" och "vakt". Skälet är att ordet "parkering" i svenska.datalista är markerat med flaggan V. Definitionen av flaggan V ser ut så här:

flag ~V:
# Som pepparkaka: pepparkaks- (hus)
        A       >       -A,S
# Som ansikte: ansikts- (uttryck)
        E       >       -E,S
# Som förhand: förhands- (granskning)
        [^AE]   >       S

Tildetecknet före bokstaven V ovan betyder att flaggan V bara gäller för ord som står som första ord i en sammansättning. Ord som slutar på E och som är markerade med flaggan V får, när de står som första ord i en sammansättning, böjan genom att E tas bort och S läggs till. Därigenom blir "ansiktsuttryck" en godkänd sammansättning av "ansikte" och "uttryck". Och "parkeringsvakt" blir som sagt en tillåten sammansättning av "parkering" och "vakt".

Tux was here

 
Forside   Tilmelding   Postarkiv   Sitemap   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret Monday, 01-Oct-2007 10:03:49 CEST
Denne side vedligeholdes af Jacob Sparre Andersen .