SPACEHAWKS'
WORLDNEWS
ISSUE 20
Hüjesírás ellenőrzés az Amigán, vagy mi szösz...
Feljegyzések egy porblémáról, annak meg(nem)oldásáról és
viszontagságairól, meg némi algoritmusokról, meg
ilyesmikről.
Ha(haha) TE dobrij írni ungaricse szpíkül, akkor lapozz
a következő csikkre.
A porbléma adott: sokan sivalkodtak, hogy az Amigán nincs
korrekt magyar helyesírás ellenörző - bezzeg a
hogyishíjjákon a szóizében van. Erről eszembe jut pár
dolog:
1. Emlékszik valaki, hogy a Word ellenőrzője hány éve
létezik? Hány éve javítgatják? Arról nem is szólva, hogy
kezdetben milyen hibákat ismert és nem ismert fel. Nem
azért mondom, de 99%-ban megállapítom pl. bármely
magazinról, hogy azt azzal ellenőrizték-e, mert még mindig
vannak csak rá jellemző hibák.
2. Leveleztem az egyik csókával, aki a kezdetektől fogva
benne van a proggiban és Ő aztat írta, hogy Ő megérti a
porblémát, és hogy beszélt erről (mármint hogy Amigára
portolni a programot) a főnökével, aki éppen jó kedvében
volt és aztat mondta, hogy:
a. Nem érné meg párszáz embernek átírni a proggyt, akik
aztán vagy megvennék, vagy nem. De inkább nem...
b. Az algoritmust nem adja - illetve adja, ha... és itt egy
hat számjegyű összeg szerepelt -, mert ők ugye ebből élnek.
c. Különben is, 7MHz-cen nemigen működne elfogadható
gyorsasággal, meg ugye játékgép... Mi, hogy van már
200MHz-es Amiga? Akkor sem és punktum.
Szóval a proggy, vagy algoritmus átvétele szóba sem jöhet,
mert nem adják, nem férek hozzá a forráshoz, visszafejteni
meg nem tudnám.
Valaki máshogy közelítette meg a dolgot. Mi lenne, ha
ugyanúgy csinálnánk, mint pl. az angol ellenőrök,
amelyekben fel van sorolva az összes létező szó és azokat
végigfésülve leli meg a hibákat. Fú, ne tudd meg! Sorold
fel csak az egy szótőhöz tartozó összes képzőt, ragot,
igekötőt, hogy az összetett szavakról ne is szóljak. vegyük
pl. azt az egyszerű szót, hogy 'ablak'. Nézzük a ragozását:
ablak
-kal -ká -ot -nak -ban -ba -ból -ért -on -ra -ról
-nál -hoz -tól -ig -ként -onként -os -ostul -é -ok
-okat -oknak -okban -okba -okból -okért -okon -okra
-okról -oknál -okhoz -októl -okig -okként -okkal -okká
-oké -om -od -a -unk -otok -uk -omat -omnak -omban -omba
-omból -omért -omon -omra -omról -omnál -omhoz -omtól
-omig -omként -omé -ommal -odat -odnak -odban -odba
-odból -odért -odon -odra -odról -odnál -odhoz -odtól
-odig -odként -odé -oddal -át -ának -ában -ába -ából
-áért -án -ára -áról -ánál -ához -ától -áig -aként -áé
-ával -unkat -unknak -unkban -unkba -unkból -unkért
-unkon -unkra -unkról -unknál -unkhoz -unktól -unkig
-unkként -unké -unkkal -otokat -otoknak -otokban -otokba
-otokból -otokért -otokon -otokra -otokról -otoknál
-otokhoz -otoktól -otokig -otokként -otoké -otokkal
-ukat -uknak -ukban -ukba -ukból -ukért -ukon -ukra
-ukról -uknál -ukhoz -uktól -ukig -ukként -uké -ukkal
-aim -aid -ai -aink -aitok -aik -aimat -aimnak -aimban
-aimba -aimból -aimért -aimon -aimra -aimról -aimnál
-aimhoz -aimtól -aimig -aimként -aimé -aidat -aidnak
-aidban -aidba -aidból -aidért -aidon -aidra -aidról
-aidnál -aidhoz -aidtól -aidig -aidként -aidé -ait
-ainak -aiban -aiba -aiból -aiért -ain -aira -airól
-ainál -aihoz -aitól -aiig -aiként -aié -ainkat -ainknak
-ainkban -ainkba -ainkból -ainkért -ainkon -ainkra
-ainkról -ainknál -ainkhoz -ainktól -ainkig -ainkként
-ainké -aitokat -aitoknak -aitokban -aitokba -aitokból
-aitokért -aitokon -aitokra -aitokról -aitoknál -aitokhoz
-aitoktól -aitokig -aitokként -aitoké -aikat -aiknak
-aikban -aikba -aikból -aikért -aikon -aikra -aikról
-aiknál -aikhoz -aiktól -aikig -aikként -aiké -ú -út
-únak -úba -úból -úért -ún -úra -úról -únál -úhoz -útól
-úig -úé -úval -úként -úak -úakat -úaknak -úakba -úakból
-úakért -úakon -úakra -úakról -úaknál -úakhoz -úaktól
-úakig -úaké -úakkal -úakként
Most pedig néhány képzőt:
ablak
-os -osság -szerű -szerűség -szerűsítés -szerűtlen
-szerűtlenség -talan -talanít -talanítás -talanság
Vigyázat, a képzett szók is ragozhatók. Végül pár
összetételt, amelyik 'ablak'-kal kezdődik:
ablak
-adó -borda -borító -borítás -dúc -emelés -emelő
-felület -fólia -frissítés -frissítő -fülke -jog
-keret -kitámasztó -mélyedés -méretezés -nyílás
-nyitás -osztás -párkány -rács -redőny -roló -szárny
-szerkezet -szoftver -tábla -támasztó -technika
-tekerő -tisztító -tisztítás -törlés -törlő -ülés
-üveg -védelem
Elárulom, hogy minden képzőhöz tartozik még több mint 200
rag, a szóösszetételeket is lehet ragozni, képezni, vannak
még többszörös képzők, miegymás. Szóval az 'ablak' kezdetű
szavak száma egy teljes 'szótár'-ban úgy 20 ezer sort
foglalna el.
Egy kicsit rövidebben nézzünk egy igét is: (Uramjézus, mit másolgatok én itt? - Emeric SH :)
ablakoz
-ok -ol -unk -tok -nak -ni -va -om -od -za -zuk
-zátok -zák -nék -nál -na -nánk -nátok -nának -nám -nád
-ná -nánk -nátok -nák -tam -tál -ott -tunk -tátok -ták
-tam -tad -ta -tunk -tatok -tak -zak -z -zál -zon -zunk
-zatok -zanak -zam -d -zad -za -zuk -zátok -zák -nom
-nod -nia -nunk -notok -niuk
A képzők:
ablakoz
-atlan -atlanság -ás -gat -gatás -gatható -gató
-hat -hatatlan -hatatlanság -ható -hatóság -ott
-ottság -ó -ódás -tat -tatás -tató
Igekötők:
abba- agyon- alá- át- be- bele- benn- egybe- el-
ellen- elő- előre- fel- felül- fenn- félbe- félre- föl-
fölül- fönn- haza- hátra- helyre- hozzá- ide- keresztül-
ketté- ki- körül- közbe- közre- külön- le- meg- mellé-
neki- oda- össze- rajta- rá- szembe- szerte- széjjel-
szét- tele- tova- tovább- tönkre- túl- utána- újjá-
újra- végbe- végig- vissza-
Szóval ez igéknél is van párezer, már nem számolgatom. (Mindig is gyanús volt nekem ez a Napi2. Kellene neki ilyen hátulgombolós öltöny, a madzagos ujjakkal - Emeric SH)
Jó, ezek nagy részét soha nem használjuk (mert mondjuk
értelmetlen, de attól még a magyar helyesírás szabályai
szerint helyes), de most őszintén: keressem ki az összes
szó olyan ragját, képzőjét, stb és írjam be egy programba,
melyek ugyan helyesek, de nem adnak értelmes szöveget?
De azért: ha csak azzal számolunk, hogy van mondjuk 20 ezer
magyar alapszó, akkor könnyen kiszámolható, hogy több, mint
tucatnyi millió magyar szóval kell számolnunk. És akkor a 4
ezer körüli földrajzi nevet, a mintegy ezernyi keresztnevet és a
4-5 ezer meghonosodott idegen szót ne is számoljuk. A
szleng érdekel vkit? Szavanként mondjuk átlagosan 6 betűvel
számolva jó nagy filé kerekedne, az biztos. De ahhoz, hogy
egy leírt szövegben az összes helyesen leírt szót
felismerje, inkább 100 millió a szavak száma, mint
99000000...
Maradjunk annyiban, hogy az összes helyes szó beirogatása
kivitelezhető, de kinek van ennyi hely a vinyóján? Mennyi
100 milliószor 6? Tehát, vhogy rövidíteni kellene! Itt van
a fölébb leírt formátum előnye. Az alapszót csak egyszer
leírni, aztán mögé a ragokat, képzőket, összetételeket. Sőt
az igekötőket is, hiszen pl. hány sort foglalna el a 'fut',
ha az összes igekötős alakját külön sorban kéne
toldalékozgatni. Arról még nem is esett szó, hogy hány
keresés kell több mint fél milliárd bájt esetén a tuti
találathoz. Egy könyv lecsekkolása jól megdolgoztatná
a vinyó léptetőmotorját, az biztos.
Tehát a szókeresgélés kilőve, vissza az algoritmushoz.
Tanulmányoztam az utóbbi időkben egy kicsinykét a magyar
helyesírás szabályait és több következtetésre is jutottam:
1. A magyar helyesírás alapszabályai világosak, érthetőek
és egyszerűek.
2. A magyar helyesírás szabályai kaotikusak, érthetetlenek
és roppant bonyolultak (szerintem aki tud ennél nehezebb
nyelvtant, az porokat szed, vagy barnára festette a haját). (Ez egy fokkal hihetõbbnek tûnik. Én az MTA-t szeretem, amikor egyik évben úgy döntenek, hogy ezt így írjuk, majd jövõre szépen visszaváltoztatják. Legutóbbi kedvenc húzásom tõlük, hogy bár európában mindenütt EURO az európai pénz írásmódja (a görögök kivételével, akiknek ugye teljesen más ABC-je van) nálunk neeem, mi úgy írjuk, hogy "euró". Hosszú "ó"-val. Mert az olyan európai. Meg különben sem akarunk mi olyan nagyon bekerülni, jól elvagyunk mi itt magunkban - Emeric SH)
Nézzük csak az algoritmusok szempontjából. Vannak
alapszavak és mondjuk vizsgáljuk meg a ragozásaikat. Itt
vannak rögtön a magasságok és mélységek. Mármint a
magánhangzóknál. Adott, hogy egy magas, mély, vagy vegyes
hangrendű szóhoz egy-egy ragtípusból milyen illik hozzá.
Igen? Akkor hogy ragoznád mondjuk az 'abszint'-ot? Az
'abszinttel' és az 'abszinttal' is helyes. De mondjuk
'kaviccsel'? Az is stimmel, hogy ha a szó végén magán-,
vagy mássalhangzó áll, mondjuk még a dupla mássalhangzók is
érthetők (talán), az elválasztásoknál is csak pártucat
kivétel van. De meséld el nekem, hogy ha van két hasonló
szó, amely az első betűjén kívül azonos, akkor azt miért
kell máshogy ragozni? Vegyük például a 'baj' - 'haj' szópárt!
Ragozgasd csak! Na meg a hosszú többjegyű mássalhangzók a
szavak végén és elején: A szimpla megkettőzést értem, mint
'dísszel'. Az összetételeket is, mint 'díszszemle'. Hopsz,
pont most nem jut eszembe, mivel szívtam, de itt is volt
vmi furcsaság. Helyette: 'kicsinyel', 'helyesel',
'kicsinyelli', 'helyeseli'. Vagy pl. a 'vesz' ige ragozása
sem piskóta (veszek, vegyek, vettem, vétel, ...). Szóval
nekiláttam egy algoritmus fabrikálásának. Most már tudom,
miért volt/van annyi hiba a hogyishíjjákos ellenőrben.
Kezdjük talán az elején. Van egy szó: 'ablakjogok' Ez
ránézésre egy összetett szó, amelynek második tagja ragozva
van. Elvileg levágjuk az első szót, a másodikról a ragot,
megnézzük stimmel-e és léphetünk a következő szóra. Most
egy másikat: 'ablakfülkében'. Mint az előbb, vagdalkozunk.
Opsz! Olyan magyar szó nincs, hogy 'fülké'! pedig az első
szó stimmel, a ragozás is ok. Mi a porbléma?
Ami az emberi agynak első ránézésre sikerül, az algoritmust
megszivatja. Mert egy ember elolvassa a szót, a mp töredéke
alatt kikeresi az alapokat a memóriából, meg ilyesmi. De
mondjuk van 30000 alapszó a lemezen, ezekből hogyan
kereshet az algoritmus? Honnan tudja, hogy az 'ablak'-nál
kell elvágni? Ugye mindenki ismer olyan szót,
amelyik egy másik magyar szóval kezdődik, de annak sem
ragozott, sem képzett alakja és nem is összetétel.
Tehát két út áll előttünk: szépen karcsinként vagdalkozunk
a szó elejétől, vagy végétől kezdve. Mit? Hogy megnézzük, a
végén rag, vagy képző áll és addig vagdalkozunk, amig meg
nem kapjuk az alapot? Aham. És az olyan alapszavakkal mi
lesz, amik alapszavak, de a végük megegyezik a többezer
rag, vagy képző vmelyikével. Odáig eljutottunk, hogy a
legkisebb értelmes részekre kell szabdalnunk a kapott szót
és ezeket ellenőrizni egymáshoz képest. De ha mondjuk
elfogadom azt, hogy a 'haj' tárgyas ragozása a 'hajat',
akkor honnan tudjuk, hogy ez a 'baj' szónál nem jó? Sőt,
azt sem zárhatjuk ki, hogy a 'hajt' lenne a helyes (szó,
szót, szavat, hó, havat, jó, javat?). Jó, akkor
vagdalkozzunk az elejéről: 'fölébred', 'fölémegy', 'fölöz'.
A szórend szerint megtalálja mindháromban a 'föl' igekötőt.
Marad 'ébred', 'émegy', 'öz'. Az 'émegy'-gyel mit kezdjen?
A másik trükk, hogy ugye minek van igekötője? Az igének.
Ja, meg az igékből képzett szavaknak is lehet: 'ráfut',
'ráfutás', 'ráfutó', 'ráfuttat'. Azokról ne is essen szó,
amelyek két különböző szóként funkcionálnak, mégis
megegyeznek: 'rendez', 'berendez' OK. De a 'berendezés'-nek
semmi köze a 'berendezés'-hez (pl. gépezet, gépcsoport,
vagy a lakás ellátása belső tárgyakkal). Van egy kis
különbség a ragozásuk között. Azért nem túl sok. Aztán
vannak olyan alapszavak, amik igekötővel kezdődnek, de az
nem igekötő, hanem a szó szerves része (belez, fölöz,
alázatos, ellenség, előleg, összeg, stb). És folytathatnám...
Jó, de csak egyet: a legszebb az egészben, amikor van egy
szó, amit mondjuk hosszú X magánhangzóval kell írni. No de
nem ám mindig, csak ahol nem röviddel (nyíl, nyíllal,
nyila, nyilak, nyilat, nyilas, nyílás, nyilaz, nyílik,
adagio, adagióval...). Na erre varjál gombot!
Ekkor mentem le egy üres demijjonnal ZEgerszegre,
próbáltam kevésbé józan szemekkel nézni e kaotizmust, de
úgysem lett kevésbés sötét. Nagy ívben elhajítottam az
algoritmus készítésének még a gondolatát is, mert tele van
a hócipőm a kivételek kezelgetésével, amelyek kb.
tízszerannyi helyet és futásidőt és 100-szor annyi manuális
munkát foglalnának, mint maga az ellenőr. Visszatértem
ahhoz, hogy készíteni kell egy adatfilét, amelyben így vagy
úgy, de szerepelnie kell minél több helyes szónak, és azok
mindenféle elfajulásának. Igen ám, de a programírástól így
sem menekültem meg!
Ennél a stílusnál ott tartottunk, hogy nem szabad az összes
szót, szóalakot beírkálni, hanem vhogy rövidítgetni kell.
Első ötlet, egy sorban az elején az alapszóval, utána
felsorolni az összes helyes és lehetséges toldalékot. Ezt
is elvetettem. Ha megnézed, hogy hány toldalék tartozik
egy-egy alapszóhoz, kicsit hosszú sorok lennének és még így
is túl nagy filét alkotnának. Mivel a többezer karakternyi
sorokat nehezebb átlátni, könnyebb hibákat elhelyezni
bennük. Vhogy össze kéne vonni az azonos típusú
toldalékokat. Azt észrevettem, hogy bár többezer toldalék
van, de bizonyos szófajtáknál csak bizonyos toldaléktípusok
és azok konbinációi vannak. Pl. igeragozásnál 9 féle
(alany, tárgy, jelen, múlt, stb...) van, és ezek bármelyike
tízen aluli kombinációból áll. Pl.:
adalékol -om -od -ja -juk -játok -ják ...
bőröz -öm -öd -i -jük -itek -ik ...
ablakoz -om -od -za -zuk -zátok -zák ...
acilez -em -ed -i -zük -itek -ik ...
...
Elárulom, hogy kb. mindegyik hasonló végződésű ige kb.
ugyanúgy ragozódik. Na jó, vannak kivételek. Itt vannak
csak igazán! Ezért a ragokat csoportosítottam, és egy-egy
kóddal jeleztem minden csoportot. A fentebbi párezer
karaktert elfoglaló 'ablak' - 'ablakoz' páros pl. így
került be a szótár filébe:
ablak z98 z10 |adó |bord~ |borít~ |dúc |emel~ |felület
|fóli~ |frissít~ |fülk~ |jog |keret |ki|támaszt~
|mélyedés |méretez~ |nyílás |nyitás |osztás |párkán~
|rác~ |redőn~ |roló |szárn~ |szerkezet |szoftver
|tábl~ |támaszt~ |technik~ |tekerő |tisztít~ |törl~
|ülés |üveg |védel~ -kal -ká b04 c01 d01 e01 j01
ablakoz z02 a13 a23 a30 a40 a54 a60 a74 a84 a90
A 'zxx' jelzi a képzőket, amik egy külön filében vannak
beragozgatva. Ha csak pár képző lenne, akkor azok így
szerepelnének: '\képző1 \képző2'
A '|utótag' jelzi, hogy szóösszetétel esetén mi az az
alapszó, amire keresni kell. Tehát az összetételek külön
sorait is megspóroltam. Sőt, többszörös összetételnél
két '|' is elhelyeztem:
rendőr ... |főtörzsőr|mester
Az első jelzi, hogy most utótag jön, a második azért van,
hogy a 'főtörzsőrmester', 'törzsőrmester' és 'őrmester'
szavakra már ne keressen rá. Ha idetalált, akkor már csak a
'mester'-nél nézze meg a helyességet. Hehe. Már a rendőrt is
a rendnél fogja keresni... (rend ... |őrfőtörzsőr|mester)
A kötőjellel kezdődő betűcsoportok sima ragok, amelyeket
azért nem csoportosítottam, mert indokolatlanul megnövelték
volna a ragfilé méretét.
A többi kód a ragozásokat jelzi: ezek 'z'-n kívül bármely
betűvel kezdődhetnek és két számjegy van a betűk után
fűzve. Igeragok, főnévragok, többesszám, birtokos és egyéb
esetek, meg ilyesmik vannak különvéve.
Használtam pár különleges karcsit is. Ezek egyrészt
megkönyítik a hasonlítást, keresgélést, másrészt a
kivételek kezelését könnyítik meg.
- erről már volt szó, sima ragot jelöl.
-val -vá -ként
'~' szó végén azt jelenti, hogy ragozás, vagy képzés nélkül
nem helyes a szó. Olyankor is használtam, amikor
összetételeknél az utótag más képzőjével is helyes, de nem
akartam beírni, hogy '|borítás |borító'.
ab~ -ba -ban -ból
De az 'abház' (népcsoport) már nem 'ab~ |ház'! Mert az azt
jelentené magyarul, hogy házig...
'!' szó végén hasonulási lehetőséget jelöl:
Aba! h01 h05 a/á -val f01
pl.: abaiak, abasiak, Abával, Abát az 'a/á' jelöli, hogy
onnantól kezdve miről mire kell cserélni az utolsó
karcsit. Van még 'e/é', 't/s', stb.
'%' kétjegyű (vagy dupla) mássalhangzót jelöl.
abakusz% \os -!szal -!szá b01 c01 d01 e01 j01
Itt látható a '!' másik jelentése. A '-!szal' azt jelenti,
hogy ha ezt a ragot akarod a szóhoz rakni, akkor az alapszó
utolsó karcsiját előtte le kell vágni. Ezzel a
hasonlítgatási sebességet növeltem, mert nem kell még plusz
erre is ellenőrizgetni. A '%' az összetételek,
képzők összeragasztásakor jelez. Meg akkor, ha pl. két 't'
van egy szó végén, akkor a 't' kezdetű ragokat hozzárakva
ne legyen három 't' egymás mellett (pálott -tal - pálott
-tól). Szintén sebesség.
Még van pár saját jelzésem. (Ezt szinte biztosra vettem. Gondolkodtam rajta, teszek a szövegbe útjelzõ táblákat, mint hogy "Még 200 mérföld a következõ bekezdés végéig" meg hasonlók, valamint hogy 50 méterenként ivókutat és nyilvános WC-ket állítok, mert szerencsétlen olvasók nem fogják bírni a megterhelést. Természetesen minden nagyobb útelágazásnál gyorsbüfék is lennének - Emeric SH)
Most ott tartok, hogy az átalakítgatások során az
adatbázisom immár 4 részből áll: Van egy szótár, amelyben
mintegy 6000 szó már mintha készen lenne. Na jó, ebből 3000
magyar földrajzi név. Csak úgy megjegyzésképpen, ez több
millió szót helyettesít. Van egy segédfilé, amiben az egyes
kódokhoz tartozó ragok vannak. Egy másik, amiben a képzők
és egy harmadik, amiben mittudoménígyhirtelen. A proggi
addig készen van, hogy:
1. Berakja a memóriába az adatbázisokat, hogy gyorsabban
menjen a keresgélés.
2. Kirak egy állománykérdezőt, amelyben kiválasztható a
csekkelni kívánt txt file. Ezt egyelőre félreraktam, most
még csak egy szövegkérdezőt rak ki, amibe be kell írnom egy
szót.
3. Elkezdi keresni a szótárban a szót:
3a. Binárisan keresgél úgy, hogy kivesz egy sort a
szótárból, az első szavát összehasonlítja a keresett szóval
úgy, hogy a magyar ábécé szerint egyenként összehasonlítja
a betűiket. Ha nem egyezik, megy a következő pozícióra, ha
egyezik, akkor nézi a következő betűt. Ha az utolsó betű is
egyezik, akkor megnézi, hogy vmelyik szó folytatódik-e.
Ha a talált szó a hosszabb, akkor folytatja a keresést. Ha
a keresett szó a hosszabb, akkor már majdnem biztos, hogy
jó nyomon jár. De csak majdnem.
3b. Mondjuk:
keresett = ablakjogot
talált = ablak
Ekkor végignézi, hogy van-e a maradékkal megegyező a
képzők, vagy ragok között. Ha van (de most nincs), akkor
OK, mehet a következő szó keresése. Ha nincs, akkor még
megnézi, hogy az összetételek között szerepel-e. Minő
véletlen, igen. Levágja, hogy 'ablakjog' és megnézi,
szerepel-e az 'ot' az érvényes ragok között. Igen. Ekkor
már csak a 'jog'-ra kell rákeresni, amit meg is talál és a
ragja is stimmel. De ha nem találná meg az 'ot'-ot az
érvényes ragok között, akkor nehezebb dolga lenne, ugyanis
- per speciel - a 'jogot'-ra keresve mindig eltéved.
Ilyenkor már csak a hátulról való egyenkénti betű
levagdosás segít: 'jogot', 'jogo', 'jog'. (Szia olvasó. Bírod még? Már nincs olyan rettenetesen sok hátra, nyugi...-Emeric SH)
4. Ha nem találja a szót, akkor sikít.
Emberek!! A következő porblémáim maradtak még. Már azon
kívül, hogy ellenőrizni kéne, hogy amit beírtam, az
helyes-e, vagy hogy be kéne még írkálni vagy 20 ezer szót a
cuccaival együtt. Szóval kéne egy kis programozói és
alkalmazói segítség. Az pedig aljas rágalom, hogy én írtam
volna azt a cikket a programozókról az Amiga Világban. Én
szeretem a programozókat... savanykás, tormás szósszal.
1. Mint már fentebb írtam, néha eltéved a bináris keresés.
Pl. amikor egy szó képzett, vagy ragozott alakjának hátrébb
van a helye, mint a következő szó:
ablak \talan
ablakoz
Szerencsétlen mindig az 'ablakoz' után keresné az
'ablaktalan'-t. Ezért néha vagdalóznom kell fölöslegesen.
1a. Álljunk meg egy szóra: a gond az, hogy keresni kéne egy
arany középutat a szótár rövidítése és a keresési sebesség
növelése érdekében. A leggyorsabb akkor lenne, ha minden
egyes szóalakot bevinnék egy filébe. De valahogy nincs
kedvem 30-50 millió sorral szórakozni. Viszont, ha mindent
lerövidítek akkor egy alapszóhoz mondjuk tartozik 20000
toldalék, rag, képző, igekötő, meg még ki tudja mi minden.
Ezekből az utolsót megtalálni kicsit lassú. Jelenleg a
proggy azt csinálja, hogy talál valamit és mondjuk azt
hiszi, hogy a talált szó + vmelyik toldaléka megegyezik a
keresett szóval, akkor szépen kibontogatja a kódokhoz
tartozó toldalékokat és egyenként megnézegeti. Sajnos itt
nem jó az abc sorrend, mert a ragokat nem lehet sorbarakni.
Ill. lehet, csak akkor a mostani 200 kód többszörösével
számolhatunk. Ha meg két találatnál is megcsinálja, akkor
méghosszabb lesz a keresési idő. Pl. 'adagolóimnak'
keresésekor végignézi az 'ad', az 'adat' és az 'adagol'
szavak kódjait, mire megtalálja. Az szerencse, ha kihagyja
az első kettőt, de nem tuti.
1b. Pillanatnyilag kb. fél mp egy
összetett szó megtalálása. Egy ezer szóból álló közepes
állomány végigfésülése majd 10 percig tartana (ha nincs
benne hibás szó). Elfogadható ez szerintetek? (030/50) Na
jó, ezt talán tudom 10-30%-kal csökkenteni, de nem biztos,
mert még egy csomó dolgot be kell raknom a proggiba.
2. Kis/nagybetű csekkolás. A földrajzi helyeknél könnyű
megoldani, mivel bizonyos ragtípusnál tuti, hogy kisbetű.
De egy sima szó miért kezdődik nagybetűvel. Mondat
kezdetén? Honnan tudom, hogy vége van a mondatnak? A
rövidítések után is lehet pont. (Elmentem ezt-azt csinálni. Majd jövök vissza. Addig olvass csak tovább...-Emeric SH)
2a. Viszont tuti, hogy nem tudom megoldani annak
lecsekkolását, hogy a csekkolt szó illik-e a
mondatszerkezetbe. Olyan apróságok mennek, hogy a 'beakar
menni'-szerűségeket észreveszi, de azt már nem, hogy
'csavart hajatok az anyába', mert a 'haj' szó ragozásában
stimmel az 'atok' (fejszőrzetetek). Vagy pl. a '-e' stílus
helyességét hogyan ellenőrizhetem (van-e, helyes-e, stb-e)?
Hopp most látom, a 'meg tudja csinálni' és 'megtudja,
hogy'... na ezt a stílust hogyan csekkoljam?
3. Egy szó beolvasása. Illetve megkülönböztetése az előző
és következő szavaktól. Ott tartok, hogy egy szót szóköz,
vagy enter választhat el egy másiktól. De van olyasmi, hogy
szóelválasztás (szóköz + betűk + kötőjel + enter + betük +
szóköz), speckó karcsik (és/vagy, alapeset(ek)ben), stb.
Ezek szimpla írott szövegben ugyan nem helyesek, de most
már egyre inkább elfogadottak.
4. Úgy tervezem, hogy alapesetben pure txt szövegek
csekkolásáról lehet szó. De nem kizárt, hogy pl. HTML
tagokra, vagy AGuide kulcsszavakra sem sikít. Sőt,
észreveszi és rögtön ki is hagyja a csekkolásból. Ez a
legegyszerűbb.
5. Szintén terv: azon gondolkodtam, hogy a csekkolásnál
hogyan oldjam meg a kommunikációt az ellenféllel... (Gondolj bele, kedves olvasó, ezt Napi2 meg is kellett írja! Azért nem semmi teljesítmény. - Emeric SH)
5a. Szimplán bekéri a csekkelni kívánt állományt,
lecsekkolja, majd kiírja, hogy szerinte mi volt hibás. Ez
elég fapados.
5b. Szintén bekéri az állományt, csekkolja, ha hibát talál
rákérdez, hogy kijavítsa-e. Ha igen, akkor javít.
5c. Ezekkel csak a baj van. Ezért arra gondoltam, hogy
bekéretem a CEdet és ARexxszen keresztül nézegetem. Ha
hibát talál akkor a kurzort arra a szóra viszi és sikít.
5d. Mivel ez lassú és a CEd sumákol néha a szóhatárokkal,
ezért van még egy ötletem: a CEd szintén kell, de lemezről
csekkol és csak a hibajelzéskor viszi a kurzort a hibás
szóra.
6. Olyasmiről ne is álmodozzatok, hogy rögtön a
Pédzssztrímbe begépeltek valamit és szépen aláhullámosítja
a hibás szavakat. Ehhez már programozni kéne tudnom. Hihi.
7. Na jó, annyit megtehetek, hogy írok egy olyan proggit,
amelyik összeragasztja az alapszavakat, a toldalékokkal,
igekötőkkel, satöbbikkel és beírja egy filébe. Talán még
sorba is rendezgetem. Ebből már azt csináltok, amit
akartok. De hogy buheráltok egy többszázmegás szövegfilét?
Jó hír, hogy a WW7-nek (az aláhullámosít) régebben adtam 50
ezer szót, hogy ezek szerint csekkolhat. Ne tudd meg, hogy
félórákig ellenőrizgetett egy 200 szavas állományt.
8. A magyar ábécé szerinti rendezést csak félig-meddig
valósítottam meg, mert abban vannak olyan trükkök, amik a
bináris keresést tévútra vezetik. Pl. elvileg a szóban lévő
kötőjelek mintha nem is lennének, a kis-nagybetűk néha
megegyeznek, a rövid és hosszú magánhangzók sorrendje is
szarozik, szóval trükközni kéne. A Sort-ot el is felejtem,
mert az minden, csak nem korrekt. Normál sorrendnek vettem
a betűk elhelyezkedési sorrendjét, a számok elöl, a
nagybetű a megegyező kisbetűvel egyenértékű, de mögötte
áll, a betűkön kívüli karcsik mintha nem is lennének a
szóban, meg ilyesmik. Persze, ha vki tud egy korrekt
algoritmust, amely a nyelvtantudósok kitalációja szerint
tud rendezni és vissza is tud keresni, azt megköszönném.
Namost!!!!! Én nem vagyok semmi rossz megjavítója, tehát,
ha vki meg akarja, vagy meg tudja (és akarja) csinálni a
proggit, akkor én (abszolút nem) szívesen megcsinál(gat)om
a szótárat (szótárt?), neki csak a proggit kell megírnia,
meg a jatt felét idecsúsztatnia. Ja, meg van pár ötletem,
amiket ide még nem írtam le, de jó lenne, ha belekerülhetne
a proggyba. Az sem lenne baj, ha mondjuk nem ARexxben
programozna. A BB2 már vmivel gyorsabb, de a C lenne a
legjobb. Viszont van rá majd fél-egy éve, mert már 3
hónapja szórakozgatok vele és hol vagyok még a felétől... (Hm. Olvasó... Olvasó!!! Hahó!!! Hm. Nincs itt senki. Majd szólok a takarítónéninek, hogy oltsa le a villanyt... Jóéjt. - Emeric SH :)
Napi2 |
|
|