Számítógépes implementáció

Az IBM modelleknek és még más modelleknek is, úgymint például az úgynevezett HMM, azaz Rejtett Markov Modellnek létezik számítógépes implementációja. Ezek manapság már egy egyszerű otthoni számítógépen is futtathatóak. Én a GIZA++ programcsomaggal dolgoztam, ezt ismertem meg. Ez alkalmas az IBM modellek és a HMM alkalmazására. A programok futtatásához minél nagyobb párhuzamos szövegkorpuszra van szükség, azaz olyan mondatpárok igen nagy halmazára, amelyek egymás fordításai két adott nyelv között. A BME GTK MOKK (Média Oktató és Kutató Központ) angol és magyar nyelvekkel foglalkozik egyelőre. Több számítógépes nyelvészeti projektben részt vesznek. Készítettek például magyar korpuszt, angol-magyar korpuszt, melyek jelentős mérettel bírnak, valamint az angol-magyar korpuszban a mondatokat párhuzamosítani kellett, mert géppel elég nehéz lehet felismerni, hogy melyik mondat melyiknek a fordítása. Sokszor például előfordul, hogy a fordító egy mondatot több mondattá fordít. Erre azonban nagyon jó módszerek léteznek. Miután anyagot gyűjtöttek a vizsgálatokhoz, megalkották a Szószablya projekt keretében a legmodernebb és legszéleskörübb magyar helyesírásellenőrzőt, valamint morfológiai elemzőt szótövezőt. Mind-mind statisztikai módszereket is bevonva, hiszen szabályokkal nem lehet nyomon követni akárcsak a nyelv gyors változásait sem. Kézenfekvőbb megnézni, hogy a valós életben mi zajlik, elméleti okoskodások helyett. Tehát ezt a korpuszt használtam a vizsgálódásaimhoz. A korpuszról lehet olvasni a [3] cikkben. Az egyik probléma az volt, hogy a korpusz nem a GIZA++ szoftver által használt formátumban volt. Programokat, szkripteket kellett írnom, ami átalakítja a korpuszt a megfelelő formátumba, és automatikusan elindítja a GIZA++ segédprogramjait, majd magát a GIZA++ programot. A GIZA++ a fent leírt algoritmusokat, illetve azok továbfejlesztett változatait futtatja. És a kimenete a minta, vagyis korpusz alapján megállapított paraméterek, illetve szószintű illesztések. A szószintű illesztést még tovább alakítottam a MOKK honlapján használható formátumba, ugyanis ez volt a feladatom. Hogy ezáltal a kereshető korpuszban be is lehessen jelölni, hogy melyik szó melyiknek a fordítása.

Egy másik érdekes kérdés, hogy az angolban nagyon kevés a toldalék, a magyarban viszont rendkívül sok, a magyar nyelv ugyanis úgynevezett agglutináló, ragasztó nyelv. A magyar nyelvben a legkisebb jelentéshordózó egység tipikusan nem a szó, hanem a toldalék, az angolban viszont legtöbbször egy szó felel meg egy morfémának. Tehát ha szószintű illesztést szeretnénk készíteni, akkor vagy az lehet megoldás, hogy olyan modellt választunk, ahol egy magyar szónak több angol szó is megfelelhet, ugyanis a magyar szó toldalékai legtöbb esetben külön szóként jelennek meg az angolban. A másik lehetőség, hogy a magyar szavakat szétszedjük morfémáira. Én ezt a megoldást választottam, ezért morfológiai elemzést is kellett végeznem, és integrálnom a rendszerbe. Végül elkészítettem a következő fájlokat:
szetvalaszt.awk : az eredeti korpusz két külön korpuszra választásához
morph.awk : a morfológiai elemzés átalakításához
korpusz.awk : a morfológiailag elemzett szöveg korpuszba illesztéséhez
align.awk : a szószintű illesztés exportálására a honlap formátumába
alignmentbyGIZA++.sh : shell fájl az előbbi awk programok futtatásához

Temesi Róbert 2010-08-16