hunspell(4)

NÉV
hunspell - a Hunspell állományainak formátuma

LEÍRÁS
A Hunspell(1) két állományt igényel egy adott nyelven történő helyesírás-ellenőrzéshez. Az első állomány egy szótárállomány, ami az adott nyelv szavait, és ezek kapcsolóit (attribútumait) tartalmazza. A második állomány egy ragozási (affixum) állomány, ami meghatározza az említett kapcsolók jelentését. A hunspell, ellentétben az ispell-lel, közvetlenül használja fel ezeket az állományokat, tehát nem képez belőlük bináris (.hash kiterjesztésű) állományt (l. ispell(4)).

SZÓTÁRÁLLOMÁNY
Egy hunspell szótárállomány első sora a szótárállományban lévő szavak számát tartalmazza. A többi sor soronként egy szót tartalmaz. Minden szó után nem kötelezően egy perjel, és egy, vagy több kapcsoló következhet. A kapcsolók egybetűsek, és meghatározzák, hogy milyen toldalékokat kaphat a tőszó. Például a

    1
    hunspellezik/EeX

szótár egy szót tartalmaz (hunspell), ami a magyar ragozási állomány alapján alanyi és tárgyas igeragozást is vonz (E és e kapcsolók), valamint igekötő prefixumokat is kaphat. A példa szótárállomány és a magyar ragozási állomány alapján a meghunspelleztétek helyes szóként kerülne felismerésre.

Morfológiai leírást adhatunk meg a tabulátorjellel elválasztott második mezőben:

    1
    hunspellezik/EeX	[IGE]

RAGOZÁSI ÁLLOMÁNY
A ragozási állomány rendszerint kisebb méretű, és különféle definíciók mellett a ragozási szabályokat adja meg.

    SET ISO8859-2
    TRY íóúÍÓÚtaeslzánorhgkiédmyőpvöbucfjüűxwqTAESLZÁNORHGKIÉDMYŐPVÖBUCFJÜŰXWQ-.
    LANG hu_HU
    COMPOUNDMIN 2
    COMPOUNDFLAG Y
    COMPOUNDWORDMAX 2
    COMPOUNDROOT y
    COMPOUNDSYLLABLE 6 aáeéiíoóöőuúüű
    SYLLABLENUM klmc
    COMPOUNDBEGIN v
    COMPOUNDEND x
    FORBIDDENWORD w
    PSEUDOROOT u
    ACCENT áéíóöőúüű aeiooouuu
    WORDCHARS -.§%°0123456789
    LEMMA_PRESENT (
    REP 2
    REP j ly
    REP ly j
    PFX X Y 3
    PFX X   0    meg          .
    PFX X   0    rá           .
    PFX X   0    össze        .
    SFX e Y 6
    SFX e   ik   tük          e[dz]ik
    SFX e   ik   tétek        e[dz]ik
    SFX e   ik   ték          e[dz]ik
    SFX e   0    tük          e[dzt]
    SFX e   0    tétek        e[dzt]
    SFX e   0    ték          e[dzt]
    SFX f Y 2
    SFX f   ik   het/e        e[dz]ik   [hAt]
    SFX f   ik   tet/e        e[dz]ik   [tAt]

A kulcsszavak jelentése:

SET karakterkód
    A szótár és affixumállomány karakterkódolásának beállítása. A lehetséges értékek: UTF-8, ISO8859-1-től ISO8859-10-ig, ISO8859-14, KOI8-R, KOI8-U, microsoft-cp1251, ISCII-DEVANAGARI.

TRY karakterek
    A javaslattevésnél az 1 karakteres próbálkozásoknál az itt felsorolt karakterekre cserél, illetve bővít.

NOSPLITSUGS
    Nem javasol szófelbontást a Hunspell ezzel a beállítással.

MAXNGRAMSUGS
    Az ngram javaslatok maximális számának beállítása. Alapértelmezetten 3. A 0 érték kikapcsolja az ngram javaslatokat.

SUGSWITHDOTS
    Ha a hibás szó pont(ok)ra végződik, ezeket a javaslatok esetében is feltünteti. Az OpenOffice.org szótárak számára nem szükséges ez a beállítás.

LANG nyelvkód
    Nyelv megadása (Morphbase kiegészítés, ami a nyelvfüggő programrészek bekapcsolását végzi). Új nyelv hozzáadása a langnum.hxx és a csutil.cxx állományon keresztül lehetséges a forráskódban.

COMPLEXPREFIXES
    Kétszeres prefixum levágás beállítása (de ezzel a kétszeres szuffixum levágás lehetősége megszűnik).

COMPOUNDMIN szám
    A legkisebb szóhossz, ami még összetett szóban szerepelhet. Alapértelmezés szerint 3 karakter.

COMPOUNDFLAG kapcsoló
    Itt adható meg a szóösszetételben való szereplést engedélyező kapcsoló.

COMPOUNDBEGIN kapcsoló
    A kapcsoló az összetett szavak első tagjaként engedélyezi a megjelölt szavakat.

COMPOUNDLAST kapcsoló
    A kapcsoló az összetett szavak utolsó tagjaként engedélyezi a megjelölt szavakat. Kombinálható az előző kapcsolóval.

COMPOUNDMIDDLE kapcsoló
    A kapcsoló az összetett szavak közbenső tagjaként engedélyezi a megjelölt szavakat. Kombinálható a két előző kapcsolóval.

ONLYINCOMPOUND kapcsoló
    Csak az összetett szavakban megjelenő ragozás jelölésére szolgáló kapcsoló (germán nyelvek esetében tipikus).

CIRCUMFIX kapcsoló
    Ezzel a kapcsolóval jelölt szuffixum csak ugyanilyen kapcsolóval jelölt prefixummal jelenhet meg egy tövön. (Pl. leg-édes-ebb).

COMPOUNDPERMITFLAG kapcsoló
    Alapéetelmezés szerint a prefixumok és szuffixumok nem fordulhatnak elő az összetett szavak belsejében. A COMPOUNDPERMITFLAG kapcsolóval rendelkező affixumok viszont itt is megjelenhetnek.

COMPOUNDFORBIDFLAG kapcsoló
    Toldalékolt szavak szóösszetételben való szereplését tiltó kapcsoló. A tiltáshoz az adott SFX szabály folytatási osztályaként (l. később) adjuk meg ezt a kapcsolót.

COMPOUNDROOT kapcsoló
    A szótárba közvetlenül felvett összetett szavakat jelölő kapcsoló. A COMPOUNDWORDMAX, és így a magyar esetében a 6-3-as szabály működését befolyásolja azzal, hogy a COMPOUNDROOT kapcsolóval összetettnek jelölt szavak két szónak számítanak.

COMPOUNDWORDMAX szám
    A szóösszetételekben szereplő egyszerű tövek maximális száma. A magyar esetében 2 az érték, e fölötti szószámnál már életbe lép a 6-3-as szabály.

COMPOUNDSYLLABLE szám karakterek
    Két paramétert vár. Az első megadja az összetett szavak tövének maximális szótagszámát, ami a magyar helyesírás 6-3-as szabálya szerint 6. A második mező felsorolja a magánhangzókat, ami a szótagszám megállapításához szükséges. Ha hiányzik ez a definíció, akkor nincsen korlátozás az összetett szavak tövének szótagszámára vonatkozóan.

SYLLABLENUM kapcsolók
    Egy paramétert vár. A paraméterben megadhatóak azok a ragozási osztályok, amelyek ragozás esetén eggyel növelik az összetett szavak tövénél kiszámított szótagszámot. A magyarban ezek a melléknévképzők: kerékpárjavításainkról, de kerékpár-javítási. A

FORBIDDENWORD kapcsoló
    A tiltott szavakat jelölő kapcsoló. A tiltott szótövek toldalékolt alakjai is letiltásra kerülnek. A tiltott szavak akár toldalékolási, vagy szóösszetételi szinonimaként sem kerülnek elfogadásra.

PSEUDOROOT kapcsoló
    A kapcsolóval jelölt szavak toldalékolt alakjai kerülnek csak elfogadásra. Fiktív tövek megadására szolgáló kapcsoló. A tő lehet még helyes szó, ha érvényes szinonimaként előáll vagy szerepel a szótárban.

ACCENT ékezetes_betűk ugyanaz_ékezet_nélkül
    Az ékezetesítéshez szükséges betűket két paraméterrel adhatjuk meg itt. Az első paraméterben az ékezetes karaktereket, a másodikban az azoknak megfelelő ékezet nélküli betűket adjuk meg.

WORDCHARS karakterek
    Paramétere azok a karakterek, amelyek a beállított kódolás (pl. a magyar esetében az ISO-8859-2) betűi mellett még az adott nyelv szavaiban előfordulhatnak. Ilyen például a magyarban a kötőjel, pont, százalékjel, fokjel, paragrafusjel és a nagykötőjel. Az utóbbi csak UTF-8, vagy microsoft-cp1250 karakterkészlet mellett lesz használható a magyar szótárban.

LEMMA_PRESENT kapcsoló
    A morfológiai leírás elején megadhatunk más töveket is a tőszótárban az alapértelmezett helyett. A LEMMA_PRESENT kapcsolóval jelölt tövek esetében az elemző nem teszi a kimenetbe a lemmát (mivel az már szerepel a morfológiai leírásban). Így adhatunk meg fiktív vagy nem szótári tövekhez valódi töveket.

REP szám

REP mit mire
    A javítási cseretáblázat megadására szolgáló definíciók. Az első REP után adjuk meg a többi REP sor számát. Ezek a sorok már két paramétert várnak: először megadjuk a felismerendő mintát (hibás szórészletet), utána pedig azt a karaktersorozatot, amire a felismert mintát javítani szeretnénk. A helyesírás-ellenőrző a cseretáblázat révén tud helyes javaslatot tenni többkarakteres eltérés (pl. j/ly) esetén. A Magyar Ispellben meglévő keresztellenőrzés miatt egy karakteres cserék (i/í) is szerepelnek a REP táblázatban. Ennek köszönhető, hogy az amúgy helyes nem szótári szóösszetételek nem kerülnek elfogadásra, ha a cseretáblázat egyik cseréjével előállíthatók egy szótári szóból (például: a ,,színtű'' szó hibás összetett szó lesz, mert az i->í cserével előállítható a szintű szóból).

PFX kapcsoló keresztkombinálódás szám

PFX kapcsoló levágás prefixum feltétel morfológia
    Prefixum megadására szolgáló definíciók. A prefixumok egykarakteres névvel jelölt osztályokba vannak sorolva. A példában az X osztály definíciója látható. Az egyes osztályokra vonatkozó PFX fejléc tartalmazza a következőket: (1) az osztály betűjelét (a példában X) (2) a keresztbe való kombinálás engedélyezése, illetve tiltása (Y/N). Engedélyezés esetén az adott prefixum akkor is alkalmazható, ha a tőszó toldalékolt alakban fordul elő. Ehhez az is szükséges, hogy a toldalék (affixum) ragozási osztályában is legyen engedélyezve a kombinálás. (3) az osztályba tartozó bejegyzések számát A PFX fejlécet követő sorokban a PFX paraméterek jelentése a következő: (1) az osztály betűjele (2) a ragozásnál a szó elejéről leválasztandó karaktersorozat. Ha nem kell leválasztani, akkor 0. (3) a prefixum (például igekötő, vagy a leg-, legesleg- a mellékneveknél). Perjellel elválasztva kapcsolókat is megadhatunk (l. többszörös toldalékolás). (4) a minta, ami ha illeszkedik, alkalmazható a szabály. Például ha itt kutya szerepelne, akkor csak a kutya kezdetű szavak elé lehetne tenni az ebben a sorban megadott prefixumot. A minta megadásánál a pont (.) speciális jelentéssel bír: minden karakterre illeszkedik. Megadhatunk csak bizonyos karakterekre illeszkedő mintát is szögletes zárójelek segítségével. Például az [abcd] illeszkedik az a, b, c, illetve d karakterekre is. Ellentétben az Ispell-lel, a kötőjel szerepe a szögletes zárójelek között nem speciális, vagyis kötőjelet jelent, és nem karaktertartományt. Ha a nyitó szögletes zárójel után kalap (^) karakter található, a karaktertartomány komplementerére illeszkedik a minta, hasonlóan a reguláris kifejezésekhez (l. regex(7)). (5) Morfológiai leírás. Szóközön és szóköz értékű karaktereken kívül tetszőleges karakterekből álló leírás. A morfológiai elemzés során a program összefűzi az itt található leírást, tartalmával nem foglalkozik. Kivéve a { és } közé zárt leírásokat, amelyek a sor végi zárójelezett rész kivételével eltűnnek az elemzésből. Ezen a módon a zéró morfémához kapcsolódó elemzést adhatjuk meg.

SFX kapcsoló keresztkombinálódás szám

SFX kapcsoló szuffixum feltétel mofológiai_leírás
    A PFX-szel megegyező paramétereket kap, csak nem a szó eleji, hanem a szó végi toldalékok leírására szolgál. A példában szereplő definíciók jelentése: az -edik, vagy -ezik végű szavakra alkalmazható a három szabály. A rag illesztésénél levesszük a szó végi -ik karaktersorozatot, és szabálytól függően illesztjük a -tük, -tétek, -ték toldalékokat, végeredményben -edtük, -edtétek, -edték, illetve -eztük, -eztétek, -ezték végű szavakat kapva.

Többszörös toldalékolás
    A PFX és az SFX szabályokban a toldalék perjellel elválasztva kapcsolókat is kaphat, hasonlóan a szótárállomány töveihez. A kapcsolók a következőek lehetnek: (1) SFX szabályban az SFX folytatás jelentése, hogy a toldalék még tovább ragozódhat a megadott kapcsolókkal (többszörös affixumleválasztás). A Hunspell esetében csak a kétszeres affixumleválasztás lett megvalósítva, tehát a folytatási osztály folytatását már nem veszi figyelembe a program. (2) SFX szabályban a PFX folytatás jelentése, hogy az adott prefixum is hozzájárulhat a tőhöz, feltéve, ha az SFX szabály is él. (3) PFX szabályban az SFX szabály jelentése, hogy a megjelölt SFX szabály a tőhöz járulhat, ha a PFX szabály is él. (4) ONLYINCOMPOUND kapcsoló megadásával az adott PFX vagy SFX toldalék csak szóösszetételben jelentkezhet. (5) CIRCUMFIX kapcsoló megadásával az adott SFX csak az ugyanilyen toldalékot kapó PFX-szel együtt fordulhat csak elő. (6) Az összetételi kapcsolók megadásával engedélyezhetjük vagy letilthatjuk (COMPOUNDFORBIDFLAG) az összetételben való szereplést. A összetett szavak utolsó tagja alapértelmezés szerint minden affixumot felvehet. A közbenső szavaknál viszont explixit módon engedélyezni kell ezt.

A ragozási állomány ezeken kívül még megjegyzéseket is tartalmazhat, ezért az adott szótár változatát, szerzőjét, felhasználási engedélyeit itt keressük.

SAJÁT SZÓTÁR
A saját szótár formátuma közel megegyezik a szótárállomány formátumával. A különbségek a következőek: (1) Nem kell megadni az első sorban az állományban lévő szavak méretét. (Ne is adjuk meg!) (2) A sorban a kapcsolók helyett megadhatunk két perjellel elválasztva egy mintaszót is, aminek a kapcsolóit örökli a későbbiekben a saját szótárba felvett szó. Például a Patyomkin//Ádám sor jelentése, hogy a Patyomkin szót az Ádáméval megegyező ragozással is el kell fogadni. (3) Az állomány kézzel módosítható, és ezt időnként javasolt is megtenni, ha esetleg hibásan vettünk fel szavakat.

LÁSD MÉG
angol nyelvű hunspell (4), hunspell (1), ispell (1), ispell (4), Magyar Ispell dokumentáció.

TÖRTÉNET
A MySpell szótár-, illetve ragozási állományának formátumát Kevin Hendricks készítette olyan céllal, hogy lehetővé tegye ezen állományok gyors, futás idejű feldolgozását. A COMPOUNDFLAG és a Hunspell formátumbővítést, valamint a REP többkarakteres cseretáblázatot Németh László készítette elsősorban a jobb magyar nyelvű helyesírás-ellenőrzés céljából. A minimális összetettszó-kezelést lehetővé tevő COMPOUNDMIN, COMPOUNDFLAG, és a REP többkarakteres cseretáblázat része a hivatalos MySpell függvénykönyvtárnak is. A Hunspell szótárállományának formátuma megegyezik a MySpell függvénykönyvtáréval, a ragozási táblázat pedig a fentiekben felsorolt bővítéseket tartalmazza. A bővített formátumú affixum állomány gond nélkül együttműködik az eredeti MySpell függvénykönyvtárral is, de a bővítések nem fognak működni. Sőt, mivel a hivatalos MySpell egy megengedőbb összetettszó-kezelést valósít meg, mint a magyar változat, az összetett szavakon belüli toldalékolt alakok is elfogadásra kerülnek (ez különösen sok hibás összetétel elfogadását eredményezi a magyar nyelv esetében). Ebből fakad, hogy a hivatalos Magyar OpenOffice.org (http://office.fsf.hu) - mivel a Magyar MySpell függvénykönyvtárat tartalmazza - jobban támogatja a magyar nyelvet, mint más változatok. Egyszerűen meggyőződhetünk arról, hogy melyik változattal van dolgunk: írjuk be, hogy helyesírásellenőrző az OOo szövegszerkesztőjébe. Ha hibásnak jelzi, és helyesírás-ellenőrzőt javasol helyette, a Hunspell-lel van dolgunk. Ha helyesnek fogadja el, akkor pedig az eredeti MySpell-lel.