Miért nem működhet az automatikus összetettszó-képzés megbízhatóan?

Az ispell program írója 1983 táján észrevette, hogy az összetett szavakat használó nyelvekben ezek összegyűjtése akkor még gyerekcipőben járt. Ezért vezette be az összetettszó-képzési kapcsolókat, a B és C kapcsolót. a B kapcsoló kizárja az összetett szó képzést, azaz a "notthe" szó hibásként lesz megjelölve. A C kapcsoló viszont lehetővé teszi az összetett szavak helyesként való értékelését, ha mindkét szó legalább három betű hosszú.

A 2000 után íródott aspell ehhez további kapcsolókat ad: a szavak maximális száma, melyeket összeköt, és az egyes összekötött szavak minimális hossza.

A szintén 2000 táján elkezdett hunspell írója sok kapcsolót adott a fentiekhez. A hunspell esetében a kapcsolók nagy része nyelvspecifikus, és az ún. affix állomány része, ami nagyobb rugalmasságot biztosít a szógyűjtemények előállítói számára. Kapcsolói között szerepel (a fentiek mellett) szótagszám szerinti összetettszó-képzési korlátozás, az adott szó helyzetének korlátozása az összetett szóban (csak első vagy csak utolsó).

Megvizsgáltuk a magyar nyelv összetettszó képzésének kezelését a legfejlettebb és legbonyolultabb helyesírásellenőrző, a hunspell segítségével. Az eredmény kijózanító: a helyesírásellenőrző bekapcsolt összetettszó-kezelővel átlagosan 10%-os pontossággal dolgozik, azaz jónak vélt szavak 10%-a hibás. A hibaarány jóval nagyobb rövid szavak esetén, míg hosszú szavak (15 betűnél hosszabb) esetén lecsökken a még mindig elfogadhatatlanul magas 3-4% körüli értékre.

Miért a magas hibaarány?

A rövid szavak okozzák a legszembetűnőbb gondot, Az ér, vár, kár, mag, ok, tó, s ara, agy, les, eb, ... stb szavak nyilvánvaló jelöltek az összetettszó-képzésre, feltételezett és hibás jelenlétük nagyon sok hibát okoz. Példák:
ablak-ara, adós-ág, bizi-ló, agy-követség, buzi-lika, fel-öl, helyes-eb, hely-ér, henger-les, lehető-cég, lej-eb, mar-szót, mar-king, mar-kas, parti-bura, part-iskola, szag-ember, sas-ág, szer-tor, tor-nem, tor-vény, volt-nem, ár-fa, állas-pont, ér-kel, ügyes-eb, mag-javítás, malac-tó, munkás-ok-kor, stb... Az ilyen hibák kézírásnál gyakoriak, ha az író felületes vagy bizonytalan.

Sok nyilvánvalóan elírt szó, melyet fel kellene ismerni, így jónak tűnik, tehát a helyesírásellenőrző nem végzi el feladatát.

További probléma az összetett szavak száma, így helyesnek tekint az ellenőrző olyan konstrukciókat, mind kádárelvtárs vagy akár éljenkádárelvtárs. Az ilyen szavak tipikus esetek, ha a szóköz túl kicsi lapolvasásánál, és hibásan egy szónak veszi az optikai felismerő a különírtnak szánt szavakat.

Tipikus elírás az ékezet elhagyása vagy fölösleges ékezet. Ilyen esetekben is sok hibát okoz az összetettszó-képzés, pl agy-tál, bor-ruha, nyugat-nemet, torok-ok-kel, tor-tan, űr-isten és sok társuk. Ez a hiba is gyakori, mind felületes írásánál, mind lapolvasásnál.

Nem kevésbé zavaró a teljesen hibás összetételek, mint szervíz (szerviz helyett), rádió (radio helyett) sztereó (sztereo helyett) videó (videoo helyett), például kerékpárszervíz, rádióizotóp, sztereóadás, videóanyag és rengeteg hasonlóan helytelen társuk. Ez többek között pontosan az a pont, ahol az ellenőrzőnek támogatnia kellene a felhasználót a helytelen szavak elkerülésében - helytelen szavak elfogadása és javaslása helyett. Még egyébként biztos helyesírású emberek esetén is előfordulhat ilyen jellegű hiba, és itt a helyesírásellenőrző nem nyújt megbízható segítséget, ellenkezőleg, rossz szavakat generál és félrevezet.

Az idegen szavak esetében a gátlástalan összetettszó-képzés nem magyar szavakat fogad el, mint nipp-les, norma-les, motor-isten, motor-öl, mobil-ere, modem-anschluss, telefon-anschluss és társaik.

A hibák összegyűjtése és tiltása sajnos nem eredményez mérhető javulást. Miért? Mert a hibás szavak száma 40 milliárd körül van, míg a jó szavak száma 1 millió körül. Nagyon sok lehetőség van egy szó helytelen írására: a jó bőrruha helytelenül lehet borruha, borrüh, bórruha, és sok egyéb. Tehát a rossz szavak letiltása munkás, de kis hatásfokú segítség.

Javaslatunk: Minden nyelv esetén célszerű az összes szokásos és használatos összetett szót összegyűjteni kétes és gyanús "automatizálás" és "szabályok", mint az elavult és inkább irányadásnak gondolt, nem túl gyakorlatias ún 6:3-as szabály alkalmazása helyett. Ez elismerten munkás eljárás, és nem tartozik a szép és elegáns munkák közé, inkább alázatos rabszolgamunkának nevezhető, de enélkül nem lehetséges magas színvonalú nyelvi munka.

Emellett hangsúlyozni kell, hogy az összetettszó-képzés és logika minden nyelv esetén más és más, így az összetett szavak a nyelv egyedi részei, és kezelésük nem automatizálható. Pl. az asztalláb szó lehetne asztaltámasz vagy asztal-aloszlop, asztaltámaszték is, de hagyományaink az asztalláb szó használata mellett szólnak. Némelyik, és nem kevés összetett szó nem egyszerűen az összetevők kombinációja, hanem új, enyhén vagy erősen megváltoztatott jelentése van. Ilyen összetett szavak például a macskaméz, macskanadrág, zsákbamacska, perzsaszőnyeg, törökméz, sorház, sorrend, repülőtér, szökőkút, villamosszék, szódavíz, ásványvíz, csigalépcső és sok társuk. Ez a tény fordítóprogramok esetén is gyakorta eredményez tipikus hibákat.

Az érv, hogy a nyelv állandóan változik, és ezért nem lehet minden szavát magábafoglaló gyűjteményt előállítani, igaz minden szótárra, és ellenszere az, hogy a szókészleteket folyamatosan aktualizálni kell. Így ez az érv még a tétlenség és kényelmesség fedezésére is gyatrácska.

Az az érv, hogy a bemutatott rossz szavak között jók is vannak, (ennek az érvnek az a története, hogy e sorok írója 9000 hibás szót küldött föl a levelezőlistára, melyekből pár száz valójában jó volt) igaz, de nem változtat semmit a tényeken. Először is, a jók százaléka nagyon csekély, (<5%). Másodszor az érvelőnek nem szemezgetni kell, és 10 jó szó megemlítésével megpróbálni szőnyeg alá söpörni a problémát, hanem legalább 1000 szónyi mintát venni valahonnan (eleje, közepe, vége... de nem szemezgetéssel kiválogatott szavak!), és ezeket egyenként listába tenni, jó, rossz, szerinte. A szemezgetéses "érvelés" kizárólag kényelmességet és szőnyeg alá söprési szándékot tükröz, semmi egyebet.

Az érv, hogy gépileg beolvasott szövegek esetén "másféle" hibák állnak elő, mint elírások esetén, és a 10%-os hibaarányú ellenőrző alkalmasabb az emberi hibák, mint a gépi hibák megtalálására, gyermeteg és semmivel sem igazolt. A helyesírásellenőrzőnek tetszőleges forrásból származó szöveget kell elfogadható minőségben ellenőriznie. Ez a feladata, nem több, és nem kevesebb.

Az érv, hogy pl. az "ablakpucc" szó vicces, de általánosan jó szó, nem elfogadható. Egy ilyen "vicces" szó helyesírási magángyűjteményben nagyon jó helyen van, de nem tartozik az általánosan jónak felismert szavak közé, sok más hasonló szóval egyetemben.

Az érv, hogy 700 000 szó beolvasása és feldolgozása lassúbb, mint 120 000 szóé, teljesen igaz, de a technika mai állása mellett csupán nevetséges általános érvként. 700 000 ezer szó helyfoglalása feldolgozás után 26MB, és a betöltés és feldolgozás ideje is egy 1 GB CPU-s gép esetén nem észrevehető. Az összetettszó-képzést használó verziónak két helyen is van létjogosultsága:
- kis teljesítményű régi gépek vagy marokgépek (mobil) esetén
- nyelvtani eszköz szövegszűrésre.
Professzionális, tényleg jól használható, minden igényt kielégítő helyesírásellenőrzőnek viszont az említett és többször igazolt 10% körüli hibaarány miatt alkalmatlan.

Az érv, hogy a szóösszetétel generátor szerzője valamiféle "heurisztikus" módszerek és "korpuszok" alkalmazásával javítani kíván a hibákon, inkább viccesnek tűnik mint komoly javítási szándéknak. Hiszen a számítógép nem tűnik alkalmasnak emberi nyelvek ember szintű feldolgozására megfelelő, hibátlan alapszókészlet nélkül, (fordítás esetén a nyelv teljes kifejezéstára minden elképzelhető formában és minden jelentéspár hozzájön a fentihez). A korpuszokban rengeteg hiba van, mivel ezek nem embervizsgálta eszközök az esetek nagy többségében. Azt már nem is említve, hogy a korpuszok tipikusan 30 MB nagyságrendnél kezdődnek, és a bennük való keresés nagyságrendekkel időigényesebb, mint a helyesírásellenőrző teljes szókészletében való keresés. Ez a terv tehát az előző érvet a 700 000 szó beolvasásának lassúságáról teljes mértékben üti.

Az érv, hogy az e cikk szerzője alapján előállított teljességre törekvő gyűjteményben esetleg több hiba van, mint a 100 000 szavas alapgyűjteményben, lehet hogy nem teljesen alaptalan. Ennek érdemi kiértékelésére viszont a következő szükséges:
- a http://tkltrans.sourceforge.net/tklspell/misp10rc1.tar.gz alatt levő aktuális szótár alatti állományok szavainak átnézése, és analízise, mely megmutatná, hány szóból hány rossz, vagy esetleg rosszul besorolt. Lehetne itt is egy ezer szavas mintával indulni. Ez kifejezetten építő jellegű hozzáállás lenne, mely értékes támogatást adna a fenti szószedet alkotójának. Ennek lenne információértéke, és konstruktív hozzáállásnak lenne tekinthető, míg az általános "sok hiba" kifejezés imamalomszerű ismételgetése csak destruktivitással párosult kényelmességet tükröz.

A nem fölismert rossz szavak listáját a következő recept szerint lehet előállítani egy tetszőleges szövegből viszonylag gyorsan és fájdalommentesen:

1. A szöveget szavakra tördelni, a szavakat szortírozni
2. magyarispell.sf.net hu_HU.dic és hu_HU.aff-ot használva a
szavakat kiválogatni, melyek eszerint jók.
3. A 2. szerint jó szavakat szortírozni, durván ragtalanítani.
4. A tkltrans.sf.net magyar.aff és magyar.dic.et használva a
nem jókat kiválogatni
5. A valójában jókat ragtalanul hozzáadni a tkltrans.sf.net
fájához.
6. 4..5-öt addig ismételgetni, amíg a szókészletben nincsenek
valójában jó szavak
7. Az eredmény: azok a szavak, melyeket a magyarispell.sf.net
hu_HU párja helytelenül jónak vél.