Manpages

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.

SZÓTÁRÁLLOMÁNY

Egy hunspell szótárállomány (*.dic) első sora a szótárállományban lévő szavak közelítő számát tartalmazza (az optimális méretű memóriaterület lefoglalásához). 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ó, illetve milyen egyéb speciális tulajdonságokkal rendelkezik. 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.

A szótári szavak perjelet is tartalmazhatnak, ha az fordított perjellel van bevezetve: "". A kapcsolók alapértelmezésként egy karakteresek, de ha több ragozási osztályt szeretnénk használni, ez több karakteresre vagy számra is módosítható.

A Hunspell szótárállományok sorai kiegészítő adatmezőket is tartalmazhatnak, amelyek szóközökkel vagy tabulátorokkal vannak elválasztva (l. kiegészítő adatmezők).

A személyes szótárak egyszerű szólisták. Megadhatunk perjellel elválasztott példaszavakat is a toldalékolás engedélyezésére:

Obama/Tamara

A példában a Tamara szó toldalékolását a személyes szótár Obama szavára is alkalmazza az ellenőrző, elfogadva az Obamáról, Obamáékat stb. alakokat is.

RAGOZÁSI ÁLLOMÁNY

A ragozási állomány rendszerint kisebb méretű. Különféle definíciókat és ragozási szabályokat ad meg meghatározott kulcsszóival. Például a SET a karakterkódolás, a TRY javaslattevésnél módosítot betűk, a REP a javaslattevésnél módosított szórészletek, a PFX és az SFX pedig a szó elejére és végére illesztendő toldalékok megadására szolgál.

A következő példa egy UTF−8-as kódolású szótár affixumállományának definíciója. A TRY felsorolja a magyar betűket gyakorisági sorrendjükben, a LANG beállítja a magyar nyelvet, a WORDCHARS megadja azokat a karaktereket, amelyeket a parancssori Hunspell a szavak részeként fog kezelni.

SET UTF−8
TRY íóúÍÓÚtaeslzánorhgkiédmyőpvöbucfjüűxwqTAESLZÁNORHGKIÉDMYŐPVÖBUCFJÜŰXWQ−.
LANG hu_HU
WORDCHARS −.§%‰°0123456789

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
SFX f ik tet/e e[dz]ik

A REP a j és ly felcserélése esetén ad jó és elöl rangsorolt javaslatokat. A PFX-ek pár igekötőt definiálnak, az SFX-ek pedig pár igeragot. Ezek nagyobb részénél a szó végi ik is levágásra kerül a toldalék illesztése előtt. Itt az illesztés feltétele, hogy az igék -edik vagy -ezik karaktersorozatra végződjenek, különben pedig az -ed, -ez vagy -et betűkre. Az f jelű toldalékolási osztály érdekessége, hogy a -het és -tet illesztése után még folytatódhat a toldalékolás az e jelű toldalékolási osztállyal (ezt a het/e ls tet/e határozza meg), így kaphat -hettük, -hettétek, -hették, -tettük, -tettétek, -tették toldalékokat a szótárban szereplő levelezik szó:

1
levelezik/e

ÁLTALÁNOS PARAMÉTEREK

A Hunspell forrás több mint 80 példát tartalmaz a paraméterek használatára vonatkozóan. A következő leírás nem teljes, l. még az angol kézikönyvoldalt is.
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−13−ISO8859−15, KOI8-R, KOI8-U, microsoft-cp1251, ISCII-DEVANAGARI.

FLAG érték

A kapcsolók 1 karakteres alapbeállításának módosítása. (A ragozási osztályokat és egyéb tulajdonságokat jelölik a kapcsolók, amelyek alapértelmezés szerint 1 karakteresek, a pékdákban legtöbbször nagybetűvel szerepelnek). Az ’UTF-8’ értékkel Unicode karaktereket használhatunk kapcsolóként (UTF-8 kódolással és maximum 65 ezres karakterkódig), a ’long’ értékkel két karakteres kapcsolókat (több kapcsoló esetén sincs elválasztójel, a ’num’ értékkel vesszővel elválasztott decimális számokat 1-től 65 ezerig.

COMPLEXPREFIXES

Kétszeres prefixumillesztést állít be (de csak egyszeres szuffixumokat az alapértelmezett kettő helyett.) Jobbról balra író ragasztó nyelveknél hasznos.

LANG nyelvkód

Nyelv megadása (nyelvfüggő programrészek bekapcsolásához) az ISO nyelv- és régiókóddal (pl. hu_HU).

IGNORE karakterek

A felsorolt karaktereket törli a szótári szavakból és toldalékokból, valamint a bemeneti szavakból. Hasznos az opcionális írásjelek, mint az arab vagy a héber mellékjelek kezelésére.

AF a_következő_AF_sorok_száma
AF kapcsolók

A Hunspell program képes a kapcsolóhalmazokat egy természetes számmal helyettesíteni a szótárállományban és a többszörös toldalékásnál az affixumállományban (alias tömörítés), felgyorsítva ezzel a szótár betöltődését és csökkentve a program memóriaigényét. Egy rövid példa:

3
hello
try/1
work/2

És a kapcsolódó AF definíciók az affixumállományban:

SET UTF-8
TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ’
AF 2
AF A
AF AB

Ami megfelel a következő szótárállománynak:

3
hello
try/A
work/AB

Lásd még a tests/alias* példát a forrásban.

Megjegyzés: az AF sorok nem előzhetik meg a FLAG paramétert. Alias tömörítésre szolgál a Hunspell makealias segédprogramja.
AM a_következő_AM_sorok_száma
AM morfológiai_és_egyéb_adatmezők

A Hunspell program képes a kiegészítő adatmezőket egy természetes számmal helyettesíteni, az AF paraméterhez hasonlóan. Lásd még a tests/alias* példát a forrásban.

JAVÍTÁSI PARAMÉTEREK

Az alapértelmezett n-gram, illetve betűcserén és -törlésen alapuló javaslatokat kiegészíthetjük a javítási paraméterekkel. A REP segít a tipikus hibák és javításuk megadásában. A PHONE a kiejtést kevésbé követő írásrendszereknél nyújt segítséget.
KEY szomszédos_karakterek_opcionálisan_függőleges_vonallal_elválasztva

A nyelv alapértelmezett billentyűzetkiosztását adhatjuk meg a KEY paraméterrel, hogy a javaslatoknál a szomszédos betűk elütését felismerje a program. A nem szomszédos betűket függőleges vonallal választhatjuk el:

KEY öüó|qwertzuiopőú|asdfghjkléáű|íyxcvbnm

TRY karakterek

A javaslattevésnél az 1 karakteres próbálkozásoknál az itt felsorolt karakterekre cserél, illetve bővít. A paraméternél a kis- és nagybetűket külön kell megadni.

NOSUGGEST kapcsoló

Az itt definiált kapcsolóval jelölt szavakat a program nem javasolja a hibajavításnál. Vulgáris és obszcén szavak esetében hasznos.

MAXNGRAMSUGS

Az n-gram (n hosszú szórészletek megegyezősége alapján súlyozott) javaslatok maximális számának beállítása. Alapértelmezetten 5. A 0 érték kikapcsolja az n-gram javaslatokat.

NOSPLITSUGS

Nem javasol szófelbontást a Hunspell ezzel a beállítással. Hiányzó összetettszó-kezelés esetén hasznos a hibás különírási javaslatok tiltására.

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.

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 szóköz aláhúzásjellel helyettesítendő a javaslatokban:

REP 1
REP végülis végül_is

A szervíz, szintű és a hasonló hibás összetett szavak letiltásában szintén a REP táblázat segít a CHECKCOMPOUNDREP megadásával (l. ott).
MAP a_MAP_definíciók_száma
MAP karakterek

Rokon karaktereket adhatunk meg több sorban. A javaslattevésnél több rokon karakter cseréje is lehetséges, így például ékezet nélküli szavakat is képes ékezetesíteni a Hunspell a következő definíció mellett:

MAP 5
MAP aá
MAP eé
MAP ií
MAP oóöő
MAP uúüű

PHONE a_PHONE_definíciók_száma
PHONE karakterek

A PHONE egy táblázattal megadható fonetikus átírási algoritmust használ a kiejtési hasonlóság kiszámítására. Különösen hasznos azoknál a nyelveknél, ahol az írás nem tükrözi a kiejtést. A részletes dokumentáció az Aspell helyesírás-ellenőrző oldalán érhető el angol nyelven: http://aspell.net/man-html/Phonetic-Code.html.

Megjegyzés: a szabályokban szereplő kapcsos zárójelek nem tartalmazhatnak még több byte-os UTF-8 karaktereket, ahogy a kötőjeles kifejezések is byte-ot jelölnek, nem karaktert Unicode szótár esetén is.

SZÓ-ÖSSZETÉTELEZÉSI PARAMÉTEREK

BREAK a_BREAK_definíciók_száma
BREAK karakter_vagy_karaktersorozat

Ha a keresett szó nincs a szótárban, a felsorolt karaktereknél vagy karaktersorozatoknál felbontja és részenként ellenőrzi. Hasznos például a kis- és nagykötőjeles szavaknál a magyarban.

COMPOUNDRULE

Reguláris kifejezésekhez hasonló összetételi szabályok megadása.

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értelmezé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.

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.

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özzel vagy tabulátorral elválasztott mezők. A mezőnevek és használatuk az angol kézikönyvoldalon található.

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.

(2) A szóhoz nem kapcsolókat, hanem egy mintaszót adhatunk meg, ami alapján az ellenőrző a szó toldalékolt alakjait is felismeri. Például a Patyomkin/Ádám azt jelenti, hogy a Patyomkin szót az Ádáméval megegyező ragozással is el kell fogadni.

(3) A csillag tiltást jelent: a csillaggal jelölt szavakat az ellenőrző akkor sem ismeri fel, ha az alapszótárban szerepelnek, pl. *kóricál.

(4) 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.