Den 9. feb. 2009 kl. 17.43 skrev Karl Ove Hufthammer:
Petter Reinholdtsen:
Nedlastingssida på no.speling ord var ikkje so lett å forstå.
Hva gjorde det vanskelig? Forslag til forbedringer?
Det var for eksempel to pakkar (no_NO-pack1-2.0.10.zip) og no_NO- pack2-2.0.10.zip) utan nokon informasjon om kva forskjellen var, eller kven av dei eg skulle velja.
Eg hadde same problemet.
Eg prøvde å finna ferdigpakka versjonar av ordlista som fungerer for Aspell eller Hunspell, ev standard ispell, men fann ikkje noko som klart og eintydig identifiserte seg som det (men det er godt mogleg at eg ikkje sjekka godt nok). Kjeldekodepakka inneheldt ei lang rekke modifikasjonar og lappverk som eg sjølv skulle byggja, og som kravde program som ikkje er standard på Unix-maskina mi (MacOS 10.5). Det er nokre dagar sidan eg såg på det, så eg hugsar ikkje lenger nøyaktig kva som ikkje fanst, men hovudinntrykket var at det vart alt for komplisert å byggja noko sjølv.
Lappverket var fyrst og fremst modifikasjonar av iSpell for å få han til å fungera betre med norsk, og demonstrerer svært tydeleg eit grunnleggjande problem med både iSpell og dei andre arvtakarane etter han, slik eg nemnde i ein tidlegare e-post.
Ja, det stemmer. Det eg reagerte på, var at ho inneheldt «bokstaven» þ, som me vel ikkje brukar på norsk, samt at store og små bokstavar sto hulter til bulter.
Må innrømme at jeg ikke vet hvordan bokstavlisten er satt sammen. Tror den ble kopiert fra en pakke andre har laget.
Det står nemnt i kommentaren over lista korleis ho er laga. Datagrunnlaget inneheld tydeligvis eit ord med ein þ, av éin eller annan grunn.
Truleg islandske (stad)namn, dei bør skrivast slik islendingane skriv dei, òg på norsk.
Kan for øvrig melda at arbeidet med nynorskstavekontrollen min går godt. Eg arbeida litt på han i helga, og har no ein stavekontroll som kjenner att alle orda i Ordbanken, og som ser ut til å gje veldig gode forslag på feilstavingar. For eksempel er rette skrivemåtar av orda i feilstavingslista (som er på bokmål!) for det meste forslag 1, og nesten alltid blant dei 5 øvste.
Bra:)
Om eg forstod deg rett, bruker du Hunspell. Sidan vi har ferdig støtte for hunspell i testbenken vår, skulle det vore artig å testa stavekontrollen din der. Har du høve til å gjera han tilgjengeleg slik han er no, dvs utan samansetjingar, og berre med ordbanksorda inne? Det kan bli ein god referanse for kor dekkjande ordbanken er i høve til "vanleg tekst". Det krev sjølvsagt at eg finn ein tekst som på rimeleg vis kan kallast "vanleg" - det skulle kunna vera t.d. e- postmeldingar eller bloggar.
Når eg tenkjer på det, kunne det vera bra å gjera den same teksten for fleire ulike tekstsjangrar: - e-post - blogg - offentleg utgreiing - nyhendetekst
Dei to fyrste vil truleg ikkje vera korrekturlesne, i alle fall ikkje så nøye, og dei to siste vil vera det, i ulik grad.
Dersom nokon kan visa meg til ei ferdig pakke av ordlistene for anten Hunspell eller Aspell, basert på siste versjon av ordlistene, vil eg svært gjerne køyra den same testen for den versjonen òg. Då får vi ein god peikepinn på i kor stor grad dei to variantane skiljer seg frå kvarandre.
No gjenstår det hovudsaklig attkjenning av samansette ord, samt mykje testing. Dette krev ein del manuelt arbeid, for å unngå overgenerering, men eg er forsiktig optimistisk på at eg skal få i stand ein ganske brukbar stavekontroll.
Eg trur det er no du vil møta bøygen, dvs dei samansette orda. Det er fleire problem, og nokre av dei uløyselege innanfor Hunspell- formalismen. Her er ei kort liste over nokre av utfordringane:
- samansetjingsinformasjon er leksikalsk, dvs spesifikt for kvart enkelt ord, sjølv om det finst klasser med ord som oppfører seg likt (substantiv på -ing, avleidde frå verb, skal alltid ha -s- på grensa til neste ord, -ing frå adjektiv skal ikkje ha det)
- samansetjingsfugen (dvs -s-, -e- eller null) kan variera etter posisjon i samansetjinga. Dette kjem mest tydeleg fram ved tre- eller fleirledda samansetjingar. Paradeeksemplet mitt er 'by+trikk+tur', der 'trikk' får ulik samansetjingsending avhengig av om det er ein 'tur med bytrikken' (=bytrikktur) eller ein 'trikketur i byen' (=bytrikketur) som er meint. Eksemplet er sjølvsagt konstruert, men illustrerer poenget: datamaskina (stavekontrollen) kan ikkje vita intensjonen til forfattaren, og må tillata begge delar, og vil dermed overgenerera, som i sin tur vil føra til at mange skrivefeil ikkje blir oppdaga. I akkurat dette eksemplet er det nærmast uråd å laga eit korrekturprogram som kan avsløra ein ev skrivefeil, i andre tilfelle er det fullt mogleg, men krev ein grammatisk analyse som går langt ut over det som Hunspell (eller andre stavekontrollar for den del) kan klara. Som ein kompliserande faktor til kan eg berre nemna at desse bindeendingane varierer noko med dialekt, og at norske språkforskarar har vore lite interesserte i emnet, slik at vi i dag (enno) veit alt for lite om samansetjing.
- i norsk ortografi har vi ein regel som seier at der to like sluttkonsonantar møter ein lik fyrstekonsonant i neste ord i ei samansetjing, så skal ein av dei tre like konsonantane ein då får strykast, eller ordgrensa skal gjerast synleg med ein bindestrek. Døme: buss+stasjon = busstasjon eller buss-stasjon, *ikkje* bussstasjon. Ein enkel og likefram regel for eit menneske, men heilt uråd for Hunspell - i det minste har ikkje ein svært dyktig datalingvist eg kjenner ikkje klart å få det til (men eg veit ikkje kor mykje han prøvde). Bindestrek(s?)varianten er sjølvsagt enkel, den andre derimot alt anna enn triviell i ein formalisme som Hunspell. Om eg hugsar rett frå Hunspell-dokumentasjonen så skal det vera mogleg å uttrykkja slike endringar, men det er som nemnt vanskeleg å få det til å fungera. Innanfor ein tonivåformalisme er dette problemet heilt trivielt - der kan ein kopla i hop dei to "synlege" variantane (overflateformene) med éin underliggjande representasjon, og skriva ein kort regel som bind dei to i hop.
- norsk (og svensk og dansk) har mange korte substantiv, som har ein tendens til å laga store problem for samansetjingar. Fordi dei er korte, har dei lett for å maskera reelle skrivefeil som ei samansetjing av fleire korte ord. Det finst fleire måtar å møta dette problemet på, men ingen av dei er heilt optimale. Den norske stavekontrollen i Word er laga etter ein brukbar strategi, men lir stygt av at det ikkje var tid til å arbeida skikkeleg med eit tilstrekkeleg stort korpus for at resultatet skulle bli bra. Her er dei strategiane eg har støtt på i karriera mi:
- ikkje opna for samansetjingar i det heile, berre leggja dei inn som heile ord etter kvart som ein finn dei (dette prinsippet blir brukt av norske aviser, dvs at korrektursystemet Tansa, med litt intelligens på toppen for å analysera ukjende ord som potensielle samansetjingar; dette er i praksis det som òg gjeld ordlista som ligg til grunn for den norske stavekontrollen bygd på open kjeldekode, truleg mest av tradisjon og nedarva tekniske hindringar i iSpell m.fl.) - opna for samansetjingar med ***maksimalt 2 ledd***, dvs "dodør", men ikkje "dodørhandtak" (med mindre både "dodør" og "handtak" er lagt inn som enkeltord kvar for seg) - slik var stavekontrollen i MS Word fram til Word 97 - opna for fri samansetjing, men med ei grense for kor korte ord som blir akseptert i samansetjinga, rekna ut etter ein formel som tek omsyn til lengda på heile ordet, slik at korte ord kan laga samansetjingar i ord som i seg sjølv ikkje er spesielt lange eller har mange ledd, men blir avviste i lengre ord - dette er oppførselen i den svenske stavekontrollen for MS Word, og speglar ein reell tendens til at lange ord vanlegvis ikkje inneheld svært korte ord som ein del av samansetjinga - opna for fri samansetjing, men med ei grense for kor korte orda kan vera for å få lov til å vera del av ei samansetjing, typisk går grensa mellom 3 og 4 bokstavar, slik at ord på 3 bokstavar eller mindre ikkje blir aksepterte i samansetjingar, medan lengre ord blir aksepterte. Eit slikt system blir litt i stivaste laget, og må komplementerast med delvis å leggja inn vanlege samansetjingar av korte ord, og delvis opna for at spesifikke korte ord kan laga samansetjingar. - Dette er slik dei norske stavekontrollane i Word fungerer, men der fungerer det som sagt ikkje bra nok, fordi korte ord som er vanlege i samansetjingar ikkje vart godkjende, t.d. 'båt' ('ubåt' er derimot på 4 bokstavar, slik at eit ord som 'fiskebåt' ikkje blir akseptert, og får som forslag 'fiskeubåt' :/ ).
Den *beste* strategien etter mitt syn, er å byggja vidare på det siste alternativet over, men komplettert med 2 ting: 1) grundige korpusstudiar, slik at ein får eit tydeleg bilete av kva for korte ord som er vanlege i samansetjingar; og 2) posisjonsbestemt samansetjing (korte ord er vanlege fyrst og sist i samansetjingar, midt inne i ei samansetjing er dei mindre sannsynlege, og er meir sannsynleg ein skrivefeil), slik at eit ord som 'båt' berre kan laga samansetjingar som 'fiskebåt' ('båt' står sist) eller 'båttur' ('båt' står fyrst). Etter ein slik strategi vil eit ord som 'fiskebåtflåte' *ikkje* bli godkjent, fordi 'båt' her står i midten (dersom ein legg inn 'fiskebåt' er det sjølvsagt ingen problem).
Med ein slik strategi trur eg at ein får det beste kompromisset mellom ein tilstrekkeleg dynamisk samamsetjingsmekanisme, utan at ein får alt for mykje (problematisk) overgenerering.
Hunspell har verkty for å handtera i det minste delar av ein slik strategi, men eg er usikker på om det går å implementera alt. Hunspell har derimot ikkje dei verktya vi treng for å handtera samansetjing i samisk, der det finst enno meir kompliserte mønster (t.d. at det fyrste ordet vanlegvis lagar samansetjing i nominativ, dvs vanleg grunnform, men det etterfylgjande ordet krev at det føregåande ordet står i genitiv eintal eller fleirtal - det er i praksis uråd for oss å formulera dette programmatisk i Hunspell). Vi kjem derfor truleg til å gje opp Hunspell, og satsa på ein ny stavekontroll vi sjølve kjem til å vera med på å utvikla (open kjeldekode, sjølvsagt).
Det prosjektet er enno litt laust definert, så eg vel å koma attende til det litt seinare. Men konklusjonen vår er altså at Hunspell ikkje er ein farande veg, sjølv om det er ein mykje betre veg enn resten av Xspell-klanen:)
Beste helsing Sjur N. Moshagen Samediggi · Sametinget Prosjektleiar for Divvun-prosjektet http://www.divvun.no/ http://www.samediggi.no/ +358-9-49 75 29 (a) +358-505 634 319 (m)