Nagyon nagy vonalakban elmondható, hogy morfológiai elemzést -> szintaktikai elemzést -> szemantikai elemzést -> transzformálást -> szintaktikai generálást -> morfológiai generálást csinálok.
Persze a dolgot részleteiben nézve, egy kicsit összetettebb a kép.
Végülis elég jól le van dokumentálva a rendszer, de azt a doksit nem hoztam nyilvánosságra, mert ahhoz túl részletes.
A teljesség igénye nélkül, néhány momentum:
Hipotézisekkel dolgozok: Rengeteg hipotézist vizsgál végig a rendszer mind a morfológiai, mind a szintaktikai elemzés szintjén. Ezek a hipotézisek egyrészt a nyelv dokhelyütt 'ambigous' jellege miatt 'szaporodnak', más részt még hihető feltételezett helyesírási hibákkat is hipotézisként felveszek.
A nyelvtani elemzést végülis úgy kell elképzelni, mint egy iteratív ciklust, amikor hipotézisek halmazából kikövetkeztetek egy újabb hipotézist, amit berakok a halmazba. Egy hipotézisnek jellemzője, hogy a szövegnek mely pozíciótól mely pozícióig terjedő szakaszára vonatkozik. Jellemzője egy hipotézis erősség is: ez Fuzzy jellegűen számolódik nyelvtani elemzéskor. A hipotézisek egymásta hivatkozva fastruktúrát alkotnak.
A nyelvtani elemzésre saját szabálybázis formátumot találtam ki, ami viszont mivel igen speciális, (nem általános programozási nyelv) kénytelen normál C++ kódokat, mint kicsi plugineket is meghívni: (ez egy kompromisszumos megoldás: csak C++-ban írva nagyon ronda és átláthatatlan lenne a nyelvtani elemzés szabálybázisa, valami korlátozott nyelv meg nem elég flexibilis bonyolultabb esetek leírására.)
A hipotézisek közül egy döntési modul dönt. Egy hipotézisen belül is vannak döntési pontok, pl. hogy mi lesz egy többjelentésű szó jelentése.
A lényeg az, hogy ezek a döntések mind összefüggenek egymással: ezért az összes döntésnek elvégzése egyetlen pontján történik a programnak: Ezt nevezhetjük a megértés pillanatának is. Ez a megértő modul nem szabálybázis alapján, hanem statisztikai alapon működik. Leegyszerűsítve mondhatjuk, hogy olyan döntési konfigurációt fogad el, amelynek a legnagyobb a valószínűsége az eddig neki megmutatott ember által végzett döntési minták alapján.
A döntés után következik egy transzformációkkal egybekötött magyar nyelvtani generálás, majd magyar morfológiai generálás.
A morfológiára végre sikerült olyan modellt készítenem, amely segítségével mind az angol, mind a magyar morfológia leírható egységes szerkezetben, és egy az egyben használható mind generáláshoz, mind elemzéshez. (Régebben csak egyirányú, és némileg nyelvfüggő modellt készítettem.)
Amit most összefoglaltam, az a 2.0-ás rendszer, nem a most üzemben lévő 1.0-ás. Sajnos még elég sok idő, mire elkészül, mert nem 'főmunkaidőben' csinálom. |