

	   Lietuviškų ispell afiksų lentelių README failas

		 Albertas Agejevas <alga@uosis.mif.vu.lt>
                 Gediminas Paulauskas <menesis@delfi.lt>

			   2002 m. balandžio 6 d., v. 0.4

		1. Kas čia yra ir kam to reikia?

lietuviu.aff yra afiksų lentelė ispell programai.  ispell yra spell
checkeris (rašybos tikrinimo programa) Unix sistemoms.  Jis
veikia labai primityviai: ima iš teksto po vieną žodį ir tikrina, ar
toks žodis yra žodyne.  Jei nėra, pasiūlo panašiausius žodžius iš
žodyno.  "Panašūs" žodžiai gaunami sukeičiant gretimas raides
vietomis, pakeičiant kokią nors vieną raidę, arba įterpiant tarpą
ar kokią raidę.

Lietuvių kalba yra sintetinio tipo, tai yra žodžio reikšmė priklauso
nuo jo formos, priešingai negu anglų arba vokiečių kalbos, vadinamos
analitinėmis, kuriose žodžio reikšmė išaiškėja tiktai kitų žodžių
kontekste.  Dėl to anglų kalboje pakanka tiesiog tikrinti kiekvieną
žodį, ar jis yra žodyne.  O štai lietuvių kalbos žodynuose
nepateikiamos visos įmanomos žodžių formos.  Lietuvių kalboje yra
tokios kaitomos žodžių klasės:

* daiktavardis (kaitomas skaičiais ir linksniais);
* būdvardis (giminė, skaičius ir linksnis);
   - įvardžiuotinės formos (giminė, skaičius ir linksnis);
   - laipsnių formos (giminė, skaičius ir linksnis);
   - ypatybės su priesaga -umas (gerumas) (skaičius ir linksnis);
   - vediniai su priesaga -okas -a (giminė, skaičius ir linksnis);
* įvardis (giminė, skaičius, linksnis);
   - keletas įvardžiuotinių formų;
* veiksmažodis
   - asmenuojamos formos: esamasis, būsimasis, būtasis kartinis ir
     dažninis laikai;
   - dalyviai, jų įvardžiuotinės formos, pusdalyviai (giminė, skaičius
     ir linksnis)
* skaitvardis (kiekiniai ir kelintiniai, kurie panašūs atitinkamai į
  daiktavardžius ir būdvardžius)

Kokybinis būdvardis turi apie 170 formų, o pridėjus priešdėlį ne-, jų
kiekis iškart padvigubėja.  Taigi, jeigu norėtume padaryti failą su
visomis visų žodžių formomis, jis būtų nepagrįstai didelis.  Laimei,
ispell palaiko dalyką, vadinamą afiksų sutraukimu.  Tai reiškia, kad
žodyne laikomas tiktai šakninis žodis su nuorodomis, kokios galūnės ar
priesagos prie to žodžio gali būti kabinamos.

Čia pateikiamoje afiksų lentelėje yra surašytos visų kaitomų lietuvių
kalbos žodžių kaitymo taisyklės, taigi žodyne tereikia nurodyti
šakninį žodį, o visos formos bus generuojamos automatiškai.


	2. Kaip naudotis ispell'u?

buildhash programos pagalba iš žodyno failo ir afiksų failų padaromas
hash failas, kuris vėliau ispell'o visada ir naudojamas.  Pakeitus
žodyną ar afiksus hash'ą reikia „surinkti“ iš naujo, norint, kad
pakeitimai įsigaliotų.

	buildhash lietuviu.dict lietuviu.aff lietuviu.hash

Norėdami padaryti hash'ą iš visų žodynų, įskaitant žargono ir
šnekamosios kalbos, parašykite

	make

Dabar paleisdami ispell'ą, -d opcija galime nurodyti, kad jis naudotųsi
mūsų lietuvišku hash'u:

	ispell -d lietuviu

Jei norite padaryti sistemai globalų hash'ą, dėkite jį į
/usr/lib/ispell.  Tada galima bus nurodyti tiktai hash failo vardą, o
ne pilną kelią.  Tai galite padaryti komanda 

	make install

Jei apsisprendėte naudoti lietuviu žodyną, galite į profailą įsirašyti
DICTIONARY=lietuviu. Debiane tai daroma paprasčiau: kaip root'as paleiskite
komandą

	/usr/sbin/update-ispell-dictionary

Jei norite ispell'u patikrinti kokį nors failą, darykite taip:

	ispell -d lietuviu rašliava.txt

Jei norite ispell'u patikrinti kokį nors UTF-8 koduotės failą, naudodami UTF-8
terminalą bei lokalę, darykite taip:

        ispell -d lietuviu -Tutf8 rašliava.txt

KSpell biblioteka pati tą raktą bando, kai yra nurodyta tokia koduotė KSpell
konfigūravimo parinktyse.  Jei ispell su tuo raktu neveikia, bandoma be rakto,
tikintis, kad ispell žodyno ir tikrinamo teksto koduotės sutaps.  Paskui yra
perkoduojama kaip reikia pagal KDE lokalės nustatymus.  KDE 2.2.1 konfigūruojant
kspell dar galima nurodyti ISO 8859-13 žodyno koduotę tam pačiam rezultatui
pasiekti, ankstesnėse versijose deja tokios galimybės nėra.


	3. Būsena

Tikiuosi, afiksų faile yra nurodytos visos lietuviškų žodžių kaitymo
taisyklės ir keletas žodžių darybos taisyklių. Kaip flag'ai naudojamos
ir mažosios raidės, taigi ispell turi būti sukompiliuotas su
MASKBITS opcija lygia 64, tuo tarpu, kai reikšmė pagal nutylėjimą yra
32, tai yra raidžių dydis flaguose yra ignoruojamas.  Jei norite
patikrinti, su kokia MASKBITS buvo sukompiliuotas jūsų ispell,
surinkite komandą

	ispell -vv | grep MASKBITS

Nėra deminutyvinių (mažybinių) priesagų palaikymo -- deminutyvai turi
būti nurodomi žodyne kaip atskiri žodžiai.

Kartu su lentelėmis pateikiamas žodynas.  lietuviu.base faile yra
pagalbiniai lietuvių kalbos žodeliai, įskaitant įvardžius,
skaitvardžius, dalelytes, jungtukus ir prielinksnius.  lietuviu.words
faile yra mano paties ir keleto bendraminčių iš savų rašinių pririnktų
žodžių krūvelė.

Kviečiu visus vartotojus siųsti man savo surinktų žodžių, kurių nėra
mano žodyne, rinkinius (jie yra ~/.ispell_lietuviu arba ~/.ispell_default
failuose).  Kartu galėsime padaryti visai vartotiną lietuvišką žodyną
spell checkeriams!


	4. Kaip pridėti į žodyną naujus žodžius? 

Visos šitos taisyklės yra suprogramuotos Gedimino Paulausko skripte
tools/spellai, bet dažnai efektyviau būna tiesiog pridėti žodį
rankomis, taigi štai taisyklės tiems, kurie flagus dės rankomis.

0.  Jeigu žodis gali turėti priešdėlius ne-, nebe-, uždėkite flagą /N:
    gera/N

1.  Jei žodis nekaitomas, dėkite į žodyną be jokių flagų.

2.  Jei tai daiktavardis ir ji nesibaigia galūnėmis -is, -uo, flagas yra /D:
    stalas/D
    kėdė/D
    paskalos/D

    Kaip matote, daugiskaitinės formos taip pat palaikomos.  Dėja,
    vienaskaitinės formos neišskirtos, taigi teks iškęsti tai, kad visi
    daiktavardžiai turės daugiskaitas.

2a. Jeigu daiktavardis vyriškos giminės, vienaskaitos vardininkas
    baigiasi -is, o vien. kilmininke galūnė yra -io (peilis; peilio),
    irgi dėkite /D
    peilis/D
    brolis/D

2b. Jei tai daiktavardis su vien. vard. galūnėmis -is, -uo, ar net (-ė,
    -ers -- duktė, dukters), turite nuspręsti du dalykus: tai vyriška
    giminė (flagas V), ar moteriška (flagas M), ir jei v. v. galūnė yra
    -is, ar daugiskaitos kilmininke galūnė minkšta, ar kieta
    (akis->akių, ausis->ausų).  Minkšta (-ių) žymima flagu I, kieta
    (-ų) žymima K.

    duktė/M
    sesuo/M
    akis/MI
    ausis/MK
    valtis/MI
    vanduo/V
    šuo/V
    vagis/V
    žvėris/V
    dantis/V
    debesis/V

3. Jei tai būdvardis, ir jis nesibaigia galūne -is, dėkite flagą /A.
   Jei jis jis baigiasi -is, pažiūrėkite, į ką jis panašesnis:
   didelis, dideliems -- flagas A
   medinis, mediniams -- flagas B.

   Dabar jei galima įsivaizduoti būdvardžio bevardę giminę
   (geras->gera), įvardžiuotines formas (geras->gerasis),
   prieveiksmius su -ai (geras->gerai), laipsnius
   (geras, geresnis, geriausias) ir t.t., tai būdvardis vadinamas
   kokybiniu, ir turi būti žymimas flagu Q.   Atrodo, visi A yra ir Q,
   bet faktas, kad B nėra Q.

   B yra nekokybiniai būdvardžiai, vadinami santykiniais.  Jie
   dažniausiai padaryti iš kokio nors daiktavardžio ir nurodo daikto
   santykį su kitu (baltakaklis -> turintis baltą kaklą,
   medinis -> padarytas iš medžio).

   geras/AQN
   gražus/AQN
   saldus/AQN
   žydraakis/BN 
   medinis/BN
   abstraktus/AQN
   absoliutus/AQN
   visaapimantis/BN

4. Jei tai veiksmažodis, turėsite nurodyti iš karto 3 laikus:
   bendratį, esamąjį, ir būtąjį kartinį.  Jums padės interaktyvi Perl
   programėlė tools/verb, esanti šiame pakete.  Į stderr ji išveda
   užklausas, nuskaito atsakymus iš stdin, ir eilutes, kurias reikia
   įrašyti į žodyną išveda į stdout.  Toliau šitą punktą galite
   praleisti, jis paliekamas tiems, kurie domisi afiksų failo sandara.

   Veiksmažodžiams, kurių būsimojo laiko 3a. vienaskaita yra trumpa,
   bendratis žymima /U. Komentaras iš failo:  
   # Čia veiksmažodžiai, kurių bendraty ir es. l. ilgi balsiai Ū,Y, 
   # o būt. k. l. -- trumpi
   #	gyti gyja gijo		-- gis
   #	lyti lyja lijo		-- lis
   #	griūti griūva griuvo 	-- grius
   #	pūti pūva puvo		-- pus
   #	žūti žūva žuvo		-- žus
   #
   #    plg. -- nėra „ū“, „y“
   #	siūti siuva siuvo	-- siūs
   #	vyti veja vijo		-- vys

   Visų kitų veiksmažodžių bendratis žymima /T.

   Visų veiksmažodžių esamasis laikas žymimas /E.
   
   Veiksmažodžių su bendratimi -yti, būtasis kartinis žymimas /Y.
   Visų kitų veiksmažodžių būtasis kartinis laikas žymimas /P.

   Sangrąžiniams veiksmažodžiams reikia nurodyti /S, o visiems kitiems
   /N.  /S -is ir -si galūnių nepadarys, užtat padarys priešdėlius
   nesi- ir besi-. Ir prie /N, ir prie /S reikia pridėti flagą /X,
   formoms su be-, te- ir tebe-.

   gyti/UNX
   gyja/ENX
   gijo/YNX

   valgyti/TNX
   valgo/ENX
   valgė/YNX
   
   mylėti/TSX
   myli/ESX
   mylėjo/PSX

   Sangrąžines formas reikia nurodyti ir atskirai:

   mylėtis/T
   mylisi/E
   mylėjosi/P

   Čia /S nededam, kad neišeitų dvigubos sangrąžos kaip „besimylisi“.
   Ir /N ir /X nededam, kad neišeitų „nemylisi“, ar „bemylisi“ nes teisingos formos yra
   „nesimyli“ ir „besimyli“, padaromos iš „myli/ESX“
   

Kaip ir viskas.  Visi įvardžiai ir skaitvardžiai jau yra žodyne.  Jei
ko nors iš jų padermės ten nėra -- rašykit!  


Ispell'as dar turi keletą naudingų režimų žodynų sudarinėtojams.
"ispell -d lietuviu -e" išskleidinės afiksus pagal taisykles,
skaitydamas žodžius iš stdin, rašydamas į stdout:

[alga@peleda ispell-lt]$ echo pavyzdys/D | ispell -d ./lietuviu -e
pavyzdys pavyzdyje pavyzdžiuose pavyzdžiai pavyzdžiui pavyzdžio
pavyzdžiais pavyzdžiams pavyzdžius pavyzdžiu pavyzdy pavyzdį pavyzdžių

[alga@peleda ispell-lt]$ echo mylėti/TS | ispell -d ./lietuviu -e 
mylėti besimylėti besimylėdavusia besimylėsiančia besimylėdavusiąja
besimylėsiančiąja besimylėsimąja besimylėtąja besimylėdama
besimylėsima besimylėtina besimylėta besimylėdavusioje besimylėsiančioje
[...]
Iš viso /TS padaro 1701 formą :-)

Dar yra nelabai naudinga, bet įdomi galimybė -- ispell'as bando
sutraukti afiksus, atspėti, pagal kokias taisykles sudarytas žodis:

[alga@peleda ispell-lt]$ echo mylimasis | ispell -d ./lietuviu -c
mylimasis mylimasiti/T mylimasisti/T mylimasiti/Y mylimasisti/Y
mylimasys/M mylimasys/V mylimasi/H mylimasyti/Y mylimastis/T
mylimastis/Y mylimas/Q mylimas/H myli/E

[alga@peleda ispell-lt]$ echo besikiškiakopūstėliaudavusiuosiuose |
ispell -d ./lietuviu -c
besikiškiakopūstėliaudavusiuosiuose [niam] kiškiakopūstėliauti/ST
kiškiakopūstėliauti/SY [niam]  besikiškiakopūstėliaudavo/U
besikiškiakopūstėliauti/T besikiškiakopūstėliauti/Y

Dabar galime pasidžiaugti, kad ispell'as atspėjo iš trisdešimto karto -- tai 
buvo

myli/E ir kiškiakopūstėliauti/ST

Jei ieškosit info apie ispell, jums padės tiktai ispell'o man page'ai
(errm, vadovo puslapiai :-) iš 1-os sekcijos ir 5-os sekcijos (po BSD --
4 o ne 5).  Yra ispell'o info dokumentacija, bet joje yra tiktai
paviršutiniškas vartotojo vadovas ir jokios techninės informacijos,
net Copyright'ų.  Beje, ispell'as išleistas su BSD licenzija. Tokia
licenzija taikoma ir afiksų/žodynų failams.

Atleiskit, kad šitas aprašymas išėjo toks sumaltas ir sunkiai
suprantamas.  Gal dienos šviesoj ir ką geresnio būčiau sukūręs.  Bet
vargu. 

Albertas Agejevas <alga@uosis.mif.vu.lt>
