Oktatás-Informatika Szerkesztőség
1075 Budapest, Kazinczy utca 23–27. 405. szoba
Telefon: 461- 4500/3804, fax: 461-4528
szerkesztoseg@oktatas-informatika.hu

Lázár Gábor: Neuronhálózatos Kínai Szótár – Nyugatról Keletről Nyugatra



1. Az asztaltól elindulva

Két és fél évvel ezelőtt kínai szavakat tanultam az asztalnál. Úgy döntöttem, hogy leírom egy külön oszlopba azokat, amelyekben a “fa” alapelem szerepel. A kínai írásjelek ilyen alapelemekből, vagy más néven gyökökből épülnek fel. Úgy gondoltam, hogy jobban megértem a nyelv logikáját, a kultúrtörténetét, a kialakulását, ha együtt látom azokat, amelyek azonos alapelemeket tartalmaznak.

Ezután leírtam egy másik oszlopba azokat, amelyekben a “nap” elem van benne. Megálltam, mert egy szó az előző listában is szerepelt. Egy olyan szó, amelyben a nap és a fa alapelem is benne van. Ekkor abbahagytam a gyakorlást, és gondolkodtam.

Két és fél évvel később, most, arról írok, hogy mi történt ezután. A gondolkodás eredményéből egy olyan program született, amely egy neuronhálózat segítségével rendezi el a szavakat. Úgy rendezi el, hogy azok felépítését sokkal átláthatóbbá teszi, mint ahogyan az én jó öreg szó-oszlopaim annak idején, az oszloponként azonos alapelemeikkel.

l1

1. ábra – A program

Erről az időszakról szeretnék írni, felrajzolni azokat az informatikai és oktatási területeket, amelyekhez valamiféle közöm volt az elmúlt években.

2. A szerkezeti elrendezés

Az ötletet, hogy egy neuronháló rendezze el a szavakat, nagyon erősnek éreztem. Úgy döntöttem, hogy rászánok egy csomó időt, és olyan formába öntöm, amely kifejező és szép grafikus felülettel rendelkezik, magától értetődően használható, és gyors. Tudtam, hogy hónapokig nem lehet beszélnem róla, muszáj egy működő verziót bemutatnom, hogy legyen mire hivatkoznom. Azért, mert ha félkészen tárom a nyilvánosság elé, és ha a bemutató során a “most már csak azt kell elképzelni, hogy” szerkezetet túl sokszor használom, akkor értetlen pillantásokkal fogok találkozni.

Felépítettem a tesztprogramot, és az alapelv működött – a tesztszavak elrendezése villámgyorsan felvette a kívánt formációt. Ez meghökkentett. Tizenöt évvel ezelőtt, amikor mesterséges intelligenciával, neuronhálózatokkal és genetikus algoritmusokkal foglalkoztam, közel sem volt ilyen rózsás a helyzet.

l2
2. ábra – Egy szó

A 386SX-es pécémet otthagytam a szobámban, elmentem ebédelni, és mire visszaértem, megtanulta az ábécé betűit a 8×8-cas pontmátrixok alapján. Ferde “a” betű, dőlt “a” betű, kis “a” betű, nagy “a” betű… és a program általánosított ezekből a példákból, megtanulta, milyen az általános “a”, “b” és a “c”. Az ebéd időtartama alatt.

Most viszont más volt a helyzet.

A számítógépek sebessége rengeteget nőtt. Az irodákban működő gépek, amelyek egy szövegszerkesztő 16 képpont magas pixeloszlopát villogtatják, és közben halkan zúgnak, többre képesek. Arra jutottam, hogy ez a sebesség elég lesz arra, hogy neuronhálózat tanulási folyamata emberi idő alatt le tudjon zajlani.

És a teszt ennél sokkal többet ígért. Azt, hogy ha egy webes alkalmazást, egy felhőn alapuló programot írok, amely egyszerű web-böngészőben is elfut, az is megfelelő sebességgel fog működni. Ez a sebességgel kapcsolatos dolog csak félig teljesült akkor, nemrég tettem hozzá a másik felet is.

A webes alkalmazások, a kliens-szerver kiépítés előnyei ismertek. Többfelhasználós rendszer, nyitott platform, azonnali futtatás telepítés nélkül, új verziók azonnal, egyszerű web böngészőn belüli, több platformon működő azonos program – mind-mind olyan előny, amiről kár lenne lemondani.

3. A múlt

Három forrásból erednek azok az ismeretek, amelyeket felhasználtam a programhoz.

Az a rengeteg mesterséges intelligenciával kapcsolatos program, amelyet felépítettem, teszteltem annak idején, adta a neuronhálózatokkal kapcsolatos alapokat. Feedforward neuronhálózatok backpropagation algoritmussal, Kohonen-féle önszervező hálók, genetikus algoritmus függvény-minimalizálásra, és a többi, és a többi. Sok-sok teszt alkalmazást építettem fel, bezártam egy objektumba az akkor megjelenő objektum orientált programozás elvei szerint, és felraktam a polcra őket. Két és fél éve fújtam le a port róluk.

A másik forrás az interaktív felületek tervezése iránti lelkesedésem. A kvarcjátékok megjelenése idején újakat terveztem kockás papíron, és az első Windows fejlesztőeszközök idejében, a Borland Pascal és a Delphi első verzióival interaktív grafikus felületek özönét készítettem el. Hierarchikus és hálós ábrázolások; Logikai kifejezés-szerkesztő, ahol egérmozdulatokkal lehetett megrajzolni a fát – a faágra helyezhető kis piros kereszt volt a “not” operátor -, valamint interpreterek és compilerek: ezekkel foglalkoztam.

A harmadik dolog pedig az, hogy tanár vagyok.

Úgy éreztem, hogy ezeket az ismereteket mind ötvözni tudnám egy programban: és ebből lett a Neudice. Nem vagyok különösebben tehetséges a kínai nyelv tanulásában – az olvasás megfelelően, a beszéd nagyon jól, az írás és a szövegértés nehezebben megy. De a kínai kultúra iránti lelkesedésem végigsodort azon az úton, hogy elkészítsem a programot.

4. A tavalyi év

A tavalyi év folyamán használtam, csiszolgattam a programot, felvittem szavakat ezres nagyságrendben, megjelent a nyomtatott forma, de különösebb megerősítést, figyelmet nem kaptam azoktól, akikhez próbáltam eljuttatni a programot. Semmilyen választ, elutasítást sem kaptam. Ennek ellenére folytattam a programot. Megjelent a nyomtatott forma, amelyben egy kétoldalas papírra kerül egy szó-halmaz úgy, hogy a hátoldalra tükörírással kiegészítő információk kerülnek, így ha napfény éri ezt az oldalt, ezek az információk megjelennek.

l3
3. ábra – tanulás a nyomtatott formával

Két esemény terelt affelé, hogy folytassam a program fejlesztését. Az egyik az, hogy az ELTE Koreai szakán, Mecsi Beatrix tanárnő vezetésével tesztelni kezdték a programot, és az idei évben már élesben is használják. A másik pedig, hogy a novemberi New Technology Meetup programon, amely egy számítástechnikai szakmai fórum, sikeres bemutatót tartottam. Itt öt percben kellett elmondanom, mire való a program, ezután öt perc kérdés-válasz következett. Ezen belelkesülve előfizettem a domain nevet és a tárhelyet, és feltelepítettem a végleges verziót.

5. Az idei év

Tavasszal meg lett szervezve egy két órás bemutató az ELTE-n, ahol két összevont csoport előtt, 60-70 tanuló előtt bemutattam a programot. Pozitív fogadtatásra talált, és a kérdésekből azt szűrtem le, hogy sikerült érthetően előadnom.

Egy tanuló kiritikus megjegyzést tett a program sebességére, joggal. Ha egy leckéhez további szavakat vettünk hozzá, kiegészítve azt, 10-12 másodpercces várakozási idő telt el, mivel a programnak több ezer kapcsolati infomációt kell felépítenie az adatbázisból. Egy ideig azzal hitegettem magam, hogy ez megfelelő lesz, hiszen egyszerre csak pár csoport használja a programot, de beláttam, hogy ez csak önigazolás.

Azért, mert a cél az, hogy egyszerre minél több ember használhassa. Emiatt radikális módon átírtam az adatbázis kezelő hátteret. A sebességét olyan szinten megnöveltem, hogy nem is érdemes sebesség-növekedésről beszélni, a különféle műveletek azonnal, szinte várakozási idő nélkük, a pécés alkalmazások sebességével hajtódnak végre.

A másik jelentős fejlesztés a nyelvtani elemző létrehozása volt.

Arra jöttem rá, hogy a kapcsolat alapja nem csak a közös kínai alapelemek megléte lehet, hanem különféle nyelvtani kapcsolatok.

Ez lehet példa  – olvas + könyv – (komolyabb hangszerelésben: alany-állítmányi szerkezet), állandó szókapcsolat, rokon értelmű szavak, hasonló szavak, ellentétes jelentésű szavak (hideg + meleg), fokozat, és a többi.

Ezeknek a kapcsolatoknak egy része lehet nyelvspecifikus is. Például a kínai nyelvben vannak számlálószavak. A “darab” szó más és más, ha lapos, vagy ha hosszúkás tárgyról beszélünk. Itt lehet a kapcsolat alapja ez is, míg más nyelvben ennek nincsen értelme.

A nyelvtani elemző, a jelentéstani elrendezés elkészítése teljesen új szintre emelte a programot. Egyrészt összetett és sok munkát igénylő feladatok oldhatóak meg vele pillanatok alatt (“Lássuk a mai lecke igéinek szinonímáit az előző leckékből”), másrészt pedig ez nem távolkeleti-specifikus dolog, hanem bámely nyelvnél használható.

Ez inspirált arra, hogy elkészítsem a Neudice Europe-t, a program európai verzióját. Ez bármely nyelvről bármely nyelvre való oktatásra használható, miután a programot felépítettük, az adatbázisát feltöltöttük a megfelelő szavakkal – praktikusan egy adott tankönyv leckéinek szavaival -, és definiáltuk a megfelelő kapcsolatot.

A fejlesztés másik iránya az volt az idei év során, hogy azokat a paramétereket, amelyeket én “égettem be” a programba a saját belátásom szerint (pl. a nyelvtani elemző kapcsolattípusai), kinyitottam, és a szaktanár számára elérhetővé tettem. Így a szótár tartalma mellett szabadon szerkesztheti most már ezeket is, az igényei szerint felépítve a szótárat. Például oktatás központú esetben a “piros” és “alma” szavakhoz megfelelő a “példa” nevű kapcsolattípus. Ám az adott nyelv elemzésével komolyabban foglalkozó szótár felépítésénél létre lehet hozni a “jelzős szerkezet” vagy akár “minőségjelzős szerkezet” mélységű típusokat is.

6. A program használata

6. 1. A munkaterület

A program nyitólapján kétfajta módon kezdhetjük el a munkát. Vagy választunk egy leckét, ekkor a lecke szavait jeleníti meg a program, máris elrendezve azt. A másik mód pedig a szótár használata. Itt többféle módon kereshetünk a szavakra, alapelemek szerint is. Ha itt rákattintunk egy szóra, akkor az az egy nyílik meg, egyedül, ezután a plusz jel segítségével lehet elkezdeni a felfedezést.

l4

4. ábra – a neuronhálózat tanul

A szavakkal különféle műveleteket végezhetünk. A szó felső-középső részére kattintva megnyitjuk azt. Ekkor az alatta megjelenő papír sarkai segítségével jeleníthetjük meg a kezelőgombokat. Ezekkel elérhetjük a részletes leírást, a példákat és a címkéket; a példák felolvasását és a szó kiejtését; az alapelemek megjelenítését, valamint azok képes megjelenítését és a szóhoz fűzött képes illusztrációt. Ezen kívül maximum három kis pötty jelenhet meg a papír alján, itt a szóhoz kapcsolódó nagy képeket, linkeket érhetünk el. Ezek a képek lehetnek illusztrációk, a szó vonásainak fejlődését, azok kialakulását bemutató ábrasor, vagy bármi más.

A legfontosabb műveletek gyorsan is kiválthatóak: a “részletes leírás” az írásjelre kattintással, a “példák megjelenítése és felolvasása” a papír felső részére, az “elemek megjelenítése” az alsó részére kattintva érhető el.

Egy szó alsó részére kattintva a kijelölését ki-be tudjuk kapcsolni. Ha lenyomott gombbal mozgatjuk az egeret, megjelenik egy kör, amellyel több elemet is ki lehet kijelölni.

6. 2. A program kezelése

Jobb oldalt találjuk a rendezés szempontjainak listáját. Ezekre a szavakra lehet megadni, mi legyen a rendezés szempontja. Egy kis vízszintes vonás jelöli a kiválaszott szempontot.

A munkaterület bal alsó és jobb felső részén találhatóak a kezelőgombok. Az “Újraindít” a neuronhálózat újraindítása, véletlenszerű módon.
A “Start – Stop” a neuronhálózat indítása/leállítása. A “Hozzáad” a kijelölt szavakhoz kapcsolódó új szavak hozzáadása. Ha nincs kijelölve egy sem, az összeset figyelembe veszi. A “Letöröl” a kijelölt szavak törlésére való, az “Ellentétes” a kijelölés megfordítására.

A “Nyomtat, Mobil” gomb többfunkciós. Ha a gomb felső részére kattintunk, a nyomtatandó képeket hozhatjuk létre A4-es méretben, 300 dpi felbontásban. Az első képet a lap egyik, a másodikat a lap másik oldalára nyomtathatjuk. És ha nem ismerünk fel egy szót, vagy kíváncsak vagyunk az írásjelek hangsúlyaira, fordítsuk a papír hátulját a nap felé.

Ha a gomb középső részére kattintunk, a program létrehozza a egyoldalas nyomtatható verziót A4-es méretben, 300 dpi felbontásban. Ha a gomb alsó részére kattintunk, okostelefonok és táblagépek számára generálhatjuk le az adott szavakat megjelenítő ábrákat.

Ha esetleg takarnák egymást az írásjelek, a nyomtatás előtt egy-egy kijelölt szót a négy nyíl billentyűvel elmozgathatunk. A szavak méretét szimbolizáló téglalapokat egy kattintással eltüntethetjük.

Az “Új szavak hozzáadása” gomb a program leghangsúlyosabb része. Nagyon pontosan kontrollálhatjuk vele a hozzáadott szavak kiválasztásának módját, és ezzel a szavakból újonnan létrejövő ábra milyenségét.

Megadhatjuk, hogy milyen szempont szerint válogassa ki az új szavakat. Alapesetben ez az utolsó rendezési szempont, de itt megváltoztathatjuk. Ha kiválasztunk egy speciális jelentéstípust – pl. szinoníma -, a szavakat csak aszerint rendezi le. (Ha ki akarjuk kapcsolni ezt, egyszerűen a “jelentés” gombra kell újra kattintani.)

Megadhatjuk, hogy egy szóhoz mennyi új szót válasszon ki. Ez nagyon fontos paraméter, hiszen ha egy szót 3-4 szó vesz körbe, áttekinthető ábrát kapunk, míg ha ez a szám tíz, akkor egy kevésbé áttekinthető összefüggő felhő lesz előttünk. Az új szavak kék színűek lesznek, ez a piroshoz hasonlóan kijelölt állapotot jelent.

6. 3. Beállítások

A méret a írásjelek méretére vonatkozik, ha sok írásjel van, a távolság azt adja meg, hogy mennyire erősen hasson a rendezési szempont a szavak közti távolságra. Ha kisebbre vesszük, jobban hat, a megadott szempont szerint hasonló írásjelek közelebb lesznek egymáshoz.

Megadhatjuk, hogy a hasonló, illetve rész-írásjelek alapján is adjon hozzá új szavakat. A frissítés a képernyő frissítésének gyakoriságát jelenti a neuronhálózat működése közben, a lassítás értelemszerű. Teszt mód is van, ezt a “Kikérdez” kapcsolóval indíthatjuk el. Ekkor elrejti a jelentést. Ebben az esetben a papír tetejére kattintva jeleníthetjük meg az elrejtett adatokat és a részletes leírást.

7. Érdekességek

A program teljesen skálázható, vagyis a növekvő felhasználói igények ismeretében alakítható. Ezt úgy értem el, hogy a program legkényesebb, nagyon erőforrás-igényes műveletét, a szavak letöltését időszeletekre daraboltam. Így ha több száz felhasználó tanulna vele egyszerre, az egyes felhasználók újra és újra “elengedik” a szervert pár tizedmásodpercre, a többieket is odaengedve az adatokhoz. Ettől függetlenül ez egy nagyon erőforrás-igényes alkalmazás, és annak ellenére, hogy nagyságrendeket javítottam a program sebességén, százas nagyságrendű felhasználónál már szükség lehet új szerverek hadrendbe állítására is.

A nyomtatással kapcsolatban pedig megosztanám a megpróbáltatásaimat. Több héten át kerestem egyszerű webes technológiával működő rendszert, amellyel pixel pontosan, szépen – antialasolt – formában tudok speciális karakterkészleteket megjeleníteni, 300 dpi-s felbontásban. Nem találtam ilyet. Így hát megírtam Flash-ben az ábra létrehozását, amelyet egy RLE jellegű tömörítő algoritmussal eljuttatok a szerverre, a szerver kibontja ezt, és létrehozza a kívánt látványt.

Nem hagytam figyelmen kívül a számítástechnikában lezajló forradalmat, az okostelefonok és tabletek térnyerését sem. A programot elkészítettem html5 nyelven is, így támogatva az új hordozható eszközöket.

8. Zárszó

A programot amellett, hogy a távol-keleti nyelvek iránti lelkesedésemet szerettem volna kifejezni vele, arra is szántam, hogy tanulmány legyen. Egy olyan tanulmány, amely bemutatja, hogyan lehet egy technológia-centrikus, “fehér köpenyes” területet, a mesterséges intelligenciát, a neuronhálózatokat megnyitni úgy, hogy az egy nem programozói végzettségű, általános felhasználói ismeretekkel rendelkező érdeklődő számára is könnyen kezelhető legyen. Hogy ezt elérjem, két irányban haladtam.

Egyrészt a neuronhálózat absztrakt fogalmi rendszerét lefedtem a nyelvet tanuló által értelmezhető nyelvi elemekkel, másrészt pedig egy olyan grafikus felhasználói felületet építettem köré, amely interaktív, intuitív, könnyen használható, és figyelembe veszi a számítástechnikában most lezajló interaktív forradalomnak, az okostelefonok, táblaszámítógépek megjelenésének a hatásait.

A programmal az a célom, hogy eljussak vele számítástechnikai-, nyelvészeti- és oktatástechnológiai konferenciákra, ott bemutassam, és minél szélesebb körben megismertessem az érdeklődőkkel – iskolákkal, egyetemekkel, nyelviskolákkal és kiadókkal.

l5

5. ábra – A jelen – az európai verzió


Megosztás:
  • Print
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • email
  • Google Buzz
  • LinkedIn
  • PDF
  • RSS


Hozzászólás letiltva


RSS FeedRss feed
© Oktatás-Informatika Folyóirat Szerkesztősége 2011.
szerkesztoseg@oktatas-informatika.hu
By mOp@NET