SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

svensk ordlista



Jag tänkte berätta lite om hur det går med min svenska ordlista.
Jag är inte klar att publicera än, men här är en statusrapport.
På slutet kommer en frågeställning angående publiceringen.

== Affärsmodell ==

Min rundfråga på Gnuheter.org om affärsmodell ledde inte till några
konkreta resultat.  http://gnuheter.org/article.php?sid=2244
Jag förmodar att det inte finns någon affärsmodell i en svensk
ordlista, och det är ju lite trist.  Men det behöver inte hindra mig
från att gå vidare.  Med min nuvarande affixfil (se nedan), har jag en
användbar miljö för att fortsätta bygga ut ordlistan med nya ord.

== Aspell och run-together ==

Mitt arbete började med att jag plockade hem Aspell och den nuvarande
svenska ordlistan från sv.speling.org.  Denna har 119.000 ordformer
och är en textfil med 119.000 rader.  Jag var genast frustrerad över
att den godkände alla tänkbara sammansättningar av dessa (tomater +
gurka = "tomatergurka" är ett godkänt ord!), så jag kommenterade bort
funktionen "run-together" från /usr/local/share/aspell/sv.dat

== Utbyggnad ==

Med run-together avstängd, fick jag i stället stavningsanmärkningar på
väldigt många sammansatta ord, och jag började lägga till dessa i
ordlistan.  Jag kör inte någon interaktiv funktion för att lägga till
ord, utan jag skriver i textfilen och bygger om med "aspell create
master" med jämna mellanrum.  Jag blev snabbt fingerfärdig på att
lägga till alla böjningsmönster (gurka, gurkans, gurkorna, ...) och
kompletterade även listan med de böjningsmönster som saknades.

== susning.nu ==

Jag lade in stavningskontroll på susning.nu, baserat på aspell med min
egen ordlista, den 29 december.  Susning.nu har en någorlunda stor
textmassa som är rätt välstavad, en lämplig källa att hämta nya ord
ur.  Men det var ingen automatisk insamling, utan jag kompletterade
manuellt varje ord med alla böjningsformer.

== ispell-formatet ==

När de 119.000 orden hade vuxit till 150.000 eller så, började det
kännas ohanterligt att manuellt skriva in alla böjningsvarianter.  Jag
var inte heller riktigt säker på om jag hade fått med alla
böjningsvarianter.  Jag började då titta mig omkring efter alternativa
inmatningsformat.  Varken Göran Anderssons XDtools eller Jacob Sparres
SQL- och webbaserade programvara tilltalade mig.  I stället fastnade
jag för den väletablerade ispell.  Genom att köra "ispell -e" kan en
ispell-ordlista (källkod) omvandlas till aspells format (objektkod).

Men ispells format har också brister, främst den att det saknas en
syntax för kommentarer.  Om ordet "datja" står med, och jag inte
känner till det ordet, så kanske jag tror att det ordet har kommit med
av misstag, och borde tas bort.  Men om en kommentar upplyser om att
det är en rysk sommarstuga, så kan jag lättare verifiera i ett
uppslagsverk att detta stämmer.  Det format jag fastnade för var
ispells format med tillägg av #-inledda kommentarer.  Först låter jag
sed(1) strippa bort kommentarerna och sedan kör jag "ispell -e" för
att få ut en lista som aspell kan använda.  En Makefile används för
att skapa de olika halvfabrikaten utifrån min källkod.

== Göran Anderssons affixfil ==

Till ispell finns en affixfil som anger vilka flaggor som ska
resultera i vilka böjningsmönster.  Till exempel betyder /A att ett
genitiv-s ska läggas till på ordet.  Det är det vanligaste mönstret,
tillämpbart på egennamn (utom dem som redan slutar på s eller z),
t.ex. kommer "Linköping/A" att resultera i "Linköping" (grundform) och
"Linköpings".  Den här affixfilen är daterad 1997, Göran Andersson.
Programmet munchlist kan ta en rak aspell-lista och krympa ihop den
enligt angiven affixfil, men då får man med en massa falska
gissningar.  Den distribuerade "iswedish-1.2.1" (svensk ordlista för
ispell av Göran Andersson, 1997) har en "svenska.datalista" som
exempelvis innehåller raden "accentuera/ABCDMNP", där

  /A står för ändelsen -s,
  /B står för ändelserna -nde, -ndet, -ndets
  /C står för ändelserna -t, -ts, vilket egentligen är avsett för
     bestämd form av vissa substantiv, men här tillämpas för perfekt
     av verbet i aktiv respektive passivum.
  /D står för ändelsen -nde
  /M står för "första och tredje konjugationerna", vilket för verb
     som slutar på a betyder -r, -de och -t.
  /N står för passivformerna av desamma, dvs -des och -ts.
  /P står för perfekt particip, nämligen -d, -de och -t.

Katter bland hermelinerna är /C och /D som är överflödiga när vi
redan har /B, /M och /N.  Detta är ett klart tecken på att filen har
skapats med munchlist och inte redigerats för hand.  Det som störde
mig mest var att jag inte har koll på vad "tredje konjugationen" är
och att bokstäverna som används för flaggorna verkar omöjliga att
minnas.  Jag har all respekt för Göran, men här tyckte jag att
affixfilen är en alltför teoretisk och inte särskilt praktisk
skapelse.  Om jag manuellt ska sitta och redigera ordlistan på ispells
format, så måste flaggorna vara konstruerade så att jag kan hålla
samtliga i minnet.

== Lars Aronssons affixfil ==

Jag tog den aspell-ordlista jag hade, och körde statistik på den.  Den
vanligaste ändelsen var -s, så den förtjänade en egen flagga.  Men i
stället för /A kallade jag den /s.  I min ordlista står det alltså
"Linköping/s" och inte "Linköping/A".  För att det ska fungera, måste
man använda rätt affixfil med rätt ordlista.

Näst vanligaste böjningen var bestämd form med -n och -ns, eller -en
och -ens.  Det finns former som "akademien", men för det mesta följer
-n på vokal och -en följer på konsonant.  Detta mönster fick flaggan
/n, vilket ska vara lätt att minnas.  Ett sådant ord är
"vattenförsörjning/ns" (det förekommer inte i pluralis), ett annat är
"vila/ns".  Orden som ska ha -n efter konsonant (doktorn, fågeln) är
tillräckligt många för att också ha en flagga, vilket blev /m, och då
kan akademien åka snålskjuts på samma flagga.  På samma sätt skapas
bestämd form neutrum vanligen med /t (öra-t, redskap-et) och de
avvikande formerna med /u (skafferi-et).  Flaggan /u har också en
speciell användning för ord på -um: museum/u blir museet.  Sedan finns
bestämda former som möblerar om några bokstäver i grundformens slut,
och dessa mönster har fått flaggorna /N och /T, t.ex.
nummer/N = numren, man/N = mannen, historia/N = historien.
Man kan tycka att museum-museet borde täckas av /T, men /T behövs för
rum-rummet, alltså får museum-museet täckas av /u - en kompromiss.

Pluralformer skapas med /r (-erna) och /o (-arna, -orna).  Även här
finns motsvarande versala flaggor som täcker specialfallen där
ordstammens slut ska möbleras om: /R (formel - formlerna) och /O
(fågel, fåglarna).  För ord som bara förekommer i pluralis (t.ex.
kläder), behövs en flagga som skapar ändelserna -na, -nas och den har
fått bokstaven /p (som i pluralis), mest för att den bokstaven råkade
vara ledig.  Ingen av flaggorna hanterar omljud, utan dessa måste
anges som egna ordstammar, t.ex. strand/ns, stränder/ps

Några exempel:

  barn/nst
  flicka/nos
  läger/NTs    lägren, lägret, lägers
  lämmel/mOs   lämmeln, lämlarna, lämmels
  museum/Rus   museerna, museet, museums
  pojke/nos
  salut/nrs
  strand/ns
  stränder/ps
  ärende/npst   -n -ns, -na -nas, -s, -t -ts

Genomgående gäller att grundflaggorna (/n /t /r /o) är *mycket*
vanligare än undantagsfallen (/m /N /u /T /R /O).  Därför ska de också
vara lättare att minnas.  Efter hand lär man sig också de vanligaste
flaggkombinationerna, t.ex. /nrs och /npst.  Notera att /n anger
bestämd form singularis av pojke men bestämd form pluralis av barn.
Flaggan anger ju bara n-ändelse, och vet inget om grammatik.

För verb och adjektiv har jag lyckats skapa flaggor som bättre täcker
de grammatiska klasserna.

Flaggan /v används för aktiv form av verb, /w för passiv form och /x
för participformer.  Detta gäller svaga verb, och de starka verben har
i stället /V, /W och /X.  I affixfilen har starka verbböjningen de
mest komplicerade definitionerna, eftersom de har specialfall för
-inga, -ang, -ungit med mera.  Som ordstam för verben har jag använt
imperativformerna, vilket gör det lätt att skilja slut-sluter (som
betyder stänger, stark böjning, alltså slut/V) från sluta-slutar (som
betyder upphöra, svag böjning, alltså sluta/v).  Generellt gäller att
imperativer som slutar på -a får -ar i presens, medan imperativer som
inte slutar på -a får -er i presens. Dock slutar alla infinitiver på
-a, vilket gör dem olämpliga som ordstam, eftersom ispell då skulle
behöva olika flaggor för att skilja fallen åt.  Och jag vill ju ha så
få flaggor som möjligt, så att de går att minnas. Notera att en del
verb, t.ex. "förstå", är starka verb (förstå, förstod, förstått), men
dess participform böjs svagt (förstådd, förstått, förstådda).
Flaggorna blir alltså "förstå/VWx".

Adjektiv böjs i nominativ med /a (snäll, snällt, snälla), utom
några "ommöbleringsfall" som får /A (mulen, mulet, mulna).
Komparationerna klaras med /c (snällare, snällast, snällaste) och
maskulinformer med /e (snälle).  De båda senare inkluderar fallen med
ommöblering (mulnare, mulne).  Således "snäll/ace" och "mulen/Ace".

En sista flagga är /z som lägger -son, -sson på pojknamn för att bilda
vanliga svenska efternamn.  Den flaggan är inte speciellt vanlig
jämfört med övriga flaggor, utan tillagd mest på skoj.

Det är allt:

  S-ändelse:   /s
  Substantiv:  /n /m /N   /t /u /T   /r /R   /o /O
  Verb:        /v /w /x   /V /W /X
  Adjektiv:    /a /A      /c         /e
  Efternamn:   /z

Egentligen är nog min affixfil rätt så lik Göran Anderssons, och den
största skillnaden är väl att flaggorna har andra bokstäver.  För mig
var det hur som helst värdefullt att få bygga en affixfil från
grunden, för att få komplett överblick över den.

== Införandet av affix i ordlistan ==

Ordlistan, som innehöll 150-170 tusen ord när affixfilen fått sin
form, började nu krympas genom att nya ord lades in med affix och de
gamla slogs ihop genom att införa affix.  Varje gång jag kör "make" så
avslutas körningen med en "wc" (word count) på källkodsfilen, den
skapade aspell-filen, och den ispell-fil som munchlist kan skapa.
Vid varje körning jämför jag manuellt aspell-filen med föregående
version, för att se vilka verkliga ordformer som ändrats.  Samtidigt
som aspell-filen har vuxit från 150-170 upp mot 200 tusen ord, har
källkodsfilen krympt ner i riktning mot den munchlist-skapade filen,
som hela tiden legat mellan 30 och 40 tusen ord.

Härom dagen blev jag färdig med införandet av affix i hela filen.
Då var källkodsfilen 41000 rader och munchlist lyckades klämma ihop
detta till 39500 rader.  Den lilla skillnaden är fullt förståelig,
eftersom källkoden listar varpa/nos (kastsport på Gotland) och
varpa/vwx (spänna trådar i en vävstol) som två olika ord med olika
kommentarer, medan munchlist givetvis skapar varpa/nosvwx.
Aspell-listan har då cirka 200 tusen ordformer, en utväxling på i
medeltal fem ordformer per rad i källkodsfilen.  Som jämförelse har
Göran Anderssons iswedish-1.2.1/svenska.datalista 24208 ordstammar,
vilket expanderas till de välkända 119.629 böjningsvarianterna.

Min flagga /a för adjektiv tar med genitivformerna, vilket gör sex
former för varje adjektiv (rolig, roligs, roligt, roligts, roliga,
roligas), medan listan på sv.speling.org saknar genitivformerna.
Detta är en av anledningarna till att jag får många ord i den
expanderade aspell-listan.  Men i praktiken är ju ordet "roligts" inte
speciellt vanligt.  Det förekommer nästan bara i konstruerade exempel
som "ett tråkigt skämts värde är inte hälften av ett roligts".  Inte
desto mindre är det ett giltigt svenskt ord och bör finnas med i en
ordlista.  Jag tar upp detta enda exempel för att förekomma eventuell
kritik om att jag blåst upp ordlistan med orimliga stavningsformer.
Om min ordlista innehåller dubbelt så många ordformer som den
ursprungliga, så hävdar jag inte att den är dubbelt så bra.  De
*vanligaste* orden finns ju redan i den gamla listan.

Mina källor för nya ord till listan är flera, bland annat texter
på susning.nu, mina egna brev, inlägg och kommentarer som jag skriver
i LysKOM (en BBS), texter från svenska dagstidningar, med mera.  De
flesta nya orden är sammansättningar (eftersom run-together är
avstängt).  Det märks tydligt hur ofullständigt ordförrådet är, och
att det har en slagsida mot moderna ämnen (t.ex. terrorism och Irak)
och datateknik (webben, programutveckling).  Men detta är inte enbart
en nackdel: Ordlistan ska ju användas nu och förmodligen av oss som
arbetar med datorer.

== Publicering ==

Hur bör jag publicera min nya ordlista?  För aspell är det ju rätt
lätt att ersätta den gamla på sv.speling.org med min nya.  Det är ju
bara en lång lista av ord, och min lista har fler ord.  (Några gamla
ord har försvunnit, t.ex. "abborr", "kennlarnass", "officrar", och
"snörade"!)

För ispell blir det krångligare, eftersom det handlar om att byta
affixfil. Kanske ska vi i stället ta min nya aspell-lista och köra
munchlist med den gamla affixfilen?  Då får vi på nytt en
"accentuera/ABCDMNP" i stället för min "accentuera/vwx".  Det är inte
vackert, inte "källkod", men det blir ju minst lika användbart som den
förra.  Den befintliga affixfilen heter /usr/lib/ispell/svenska.aff.
Kan jag distribuera min nya affixfil under ett annat namn, så att båda
kan existera sida vid sida?  Eller hur ska man bära sig åt?

För MySpell, som används av OpenOffice.org, gäller samma
frågeställning som för ispell.  Om min affixfil ska spridas, så måste
den konverteras från dagens ispell-format till MySpell-formatet.
Finns det något program som gör detta automatiskt, eller finns det
någon frivillig som kan utföra konverteringen manuellt?

Oavsett program, så är det kanske bäst att publicera med run-together
aktiverat, eftersom man annars får alltför många felrapporter på
okända sammansättningar.  Svenska användare tar illa upp av detta,
eftersom de uppfattar det som om programmet uppmanar dem till
särskrivningar.  Programmen är inte tillräckligt ödmjuka inför
bristerna i sina egna ordförråd, och detta upplevs som arrogant.

Om man ändå ska publicera med run-together aktiverat, så kan man också
köra min aspell-lista genom stavningsprogrammen med nuvarande
ordlistor, för att få ut enbart de ord som underkänns idag, och sedan
lägga till dem i dagens ordlistor.  Då slipper man ju att lägga in
alla triviala sammansättningar i de publicerade ordlistorna.

Kanske ska jag publicera min lista som ett separat projekt, och så får
någon annan uppdatera de officiella ordlistorna på sv.speling.org?

Vad sägs?


-- 
  Lars Aronsson (sslug@sslug)
  Aronsson Datateknik - http://aronsson.se/



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 20:54
Denne side vedligeholdes af MHonArc .