2011. szeptember 27.

Fordítási modell 4: A bootstrapping módszer a gyakorlatban

Ha egy kétnyelvű korpusz szavaira úgy tekintünk, mint nyers adatokra, akkor felfedezhető valamifajta rendszeresség az eloszlásukban. Ez érthető is, hiszen ugyanazt az információt tartalmazza mindkét nyelven, csupán “más a kódolás”. Az általunk feltételezett rendszeres eloszlás az a szabályrendszer, ami leírja a két nyelv egymáshoz való viszonyát, vagyis: a fordítási modell. Most megnézzük, számolhatjuk ki a fordítási modell paramétereit a szöveges adatokból.

Az előző posztban a bootstrap módszer lényegét abban jelöltük meg, hogy sok véletlenszerű mintavétel során észreveszünk egy szabályosan visszatérő eloszlást. A kétnyelvű mondatpárok szó-szó megfeleléseit tekintve ez azt jelenti, hogy bizonyos szó-szó kombinációk valószínűbbek másoknál – hiszen ugyanazt jelentik. Az (érdekes|interesting) kombináció valószínűbb egy magyar-angol korpuszban, mint az (érdekes|monkey). Persze, az utóbbi sem zárható ki teljesen.

Tulajdonképpen itt van a kutya elásva: két, körülbelüli megegyező jelentésű,  összepárosított mondatnál nem tudjuk, melyik szó melyiknek felel meg, hiszen ismeretes, hogy a szórend nyelvenként változik (és persze még sok más, de ismét egyszerűsítünk).

érdekes majom
interesting monkey

Az érdekes szót párosíthatjuk az interesting-hez is (ez a jó megoldás), de a monkey-hoz is. Valószínűleg mindenki emlékszik az iskolából “párosítsd össze a szavakat” típusú feladatra. Ha ezt úgy kell megoldanunk, hogy az egyik mondat kínaiul van, a másik pedig albánul, akkor elég nagy bajban vagyunk – leginkább csak tippelgetni tudunk. Két szónál két lehetőség van, vagyis 50% eséllyel jól oldjuk meg a feladatot, 3 szónál már csak 16%, 4 szónál pedig csak kicsit több, mint 4% az esély arra, hogy eltaláljuk.

(A párosítások száma ugyanis szavak-száma-faktoriális (n!); a magyar mondatot érintetlenül hagyva ennyi módon írhatjuk fel alá az angol mondat szavait, l. http://hu.wikipedia.org/wiki/Kombinatorika)

Mivel fogalmunk sincs, melyik kombináció a legjobb, ha az összeset szemügyre venni. Így néz ki:
(az A B C a magyar mondat szavait jelöle – ezeket nem bántjuk; az  1 2 3 pedig az angol szavakat – ezeket permutáljuk)

A B C
1 2 3

A B C
1 3 2

A B C
2 1 3

A B C
2 3 1

A B C
3 1 2

A B C
3 1 2


Korábban már volt arról szó, hogy a szavak egymáshoz való viszonyát érdemes egy mátrixban tárolni, például egy ilyenben:

     A    B    C
1    0.2  0.7  0.1
2    1    0    0
3    0    0    1

Ha rendelkezésünkre állna ez a mátrix, akkor elég lenne kiszámolni minden párosításnál a fordítási modell képlete alapján egy értéket, aztán pedig a kiválasztani legmagasabb pontszámot elérőt – ez a legjobb lehetséges megoldás!

Ez egy különös zsákutca, mert ha ismerjük a szavak egymáshoz való viszonyát megadó t(szó)-adatokat (a mátrix tartalma), akkor könnyen meglelhető a legjobb párosítás; a t-mátrix pedig akkor írható fel, ha ismerjük a legjobb párosításokat. De egyiket sem ismerjük.

* * *

A bootstrap módszer azt mondja, hogy ennek ellenére kezdjünk el számolni “a semmivel”, talán menet közben kijön valami. “Semmivel számolni” majdnem olyan, mint “véletlenszerűen mintát venni”, mindkét esetben akkor járhatunk sikerrel, ha elég sokszor ismételjünk meg, és az adatainkban van valamiféle rendszer.

Számoljuk ki tehát az össze lehetséges kombináció t-értékét egy fiktív t-mátrixból, amelynek minden sora és oszlopa ugyanaz, pl.:

0.33    0.33    0.33
0.33    0.33    0.33
0.33    0.33    0.33

Ez azt jelenti, hogy minden angol szó fordítása egyforma eséllyel minden magyar szónak, következésképpen: minden lehetséges mondatpárosítás egyformán jó értéke pontszámot fog kapni. Ezzel még nem megyünk sokra, de próbáljuk ki a dolgot két mondattal:

Budapest érdekes város | Budapest interesting city
Ági érdekes lány    | Ági interesting girl           (direkt így, az egyszerűség kedvéért!)

Ha a fenti mondatpárokat felírjuk az összes lehetséges  elrendezésben, arra leszünk figyelmesek, hogy az (érdekes|interesting) szópár kétszer olyan gyakran fog előfordulni, mint a többi (fejszámolási feladat: pontosan hányszor?) Persze, mert visszatér mindkét mondatban. Így már csak annyi a dolgunk, hogy “húzunk egy strigulát” egy új t-mátrixba, minden alkalommal, ahogy előfordul egy angolSzó-magyarSzó párosítás, miközben elolvasunk minden egyes lehetséges szó-szó párosítást.

            B    i    c    Á    g    (angol kezdőbetűk)
Budapest    4    4    4    4    4
érdekes     4    8    4    4    4
város       4    4    4    4    4
Ági         4    4    4    4    4
lány        4    4    4    4    4

A fenti mátrixból már kiolvasható, hogy az érdekes szó némiképp gyakrabban fordul elő az interesting szóval párosítva. A többi szóról továbbra sem tudunk mondani semmit, hiszen csak egyszer fordultak elő. Ha írnánk még egy mondatot, amiben mondjuk a Budapest szó fordul elő, könnyen belátható, hogy a megfelelő sor-oszlop metszetben szintén változást tapasztalnánk.

A mátrixunk még egy komoly ráncfelvarrásra szorul: a t-mátrixban valószínűségi adatokat tárolnunk, melyek 0 és 1 közé kell hogy essenek, a mostani mátrixunkban pedig egyszerűen az előfordulásokat számoltuk. Ezen könnyen segíthetünk: amikor szó-szó párosítások előfordulásait számoljuk meg, ne egyszerűen “strigulát húzzunk”, hanem az adott mondatpárosítás által elért pontszámot. Az adott mondatpárosítás összes szó-szó párjához ugyanaz az érték fog így tartozni, ami egyébként teljesen megalapozott: fogalmunk sincs ugyanis, hogy melyik részén találtunk el egy jó párosítást, lehet, hogy az összesnél, lehet, hogy csak egynél. Másrészt, érdemes “normalizálni” ezeket az értékeket – ez annyit jelent, az összes mondatpár pontszámát egyenként elosztjuk a mondatpárok összesített pontszámával; ez azt biztosítja, hogy a pontszámok összege 1, az egyes pontszámok pedig az összpontszámból való részesedés arányát mutatják. Végül tehát ezt a normalizált értéket írjuk hozzá a t-mátrix adott elemének értékéhez. (ez az eljárás azt is biztosítja, hogy a hoszabb mondatokban lévő szavak ne legyenek indokolatlanul túlsúlyozva)

Másrészt, a t-mátrix sorait is érdemes normalizálni, a sorok összegével – emögött is az a megfontolás áll, hogy a t-mátrixban valószínűségeket számolunk, így egy érték nem lehet több 1-nél. Például, ha az stupid szó 0.9 eséllyel jelent hülyét, akkor az ostobának már csak 0.1 esély marad (ez a teljes valószínűség szabálya).

* * *

És most következik az igazi trükk: a számolást egy teljesen homogén t-mátrixxal kezdtük. De mi történik, ha ismét kiszámolunk mindent, már az új, az első számolás során kapott t-mátrixxal? Már láttuk, hogy a visszatérő szó-szó párok nagyobb nagyobb súllyal jelennek meg az eredményekben; most már azonban a számolás során is nagyobb értéket kapnak azok a mondatpárok, melyekben előfordulnak ezek a bizonyos, jó pontszámot elért szópárok. Az egész rendszer elbillen ezek felé a “kedvezményezett” szópárok felé – melyek, reményeink szerint, a megfelelő fordítások lesznek.

A következő posztban ugyanezt számítógéppel oldjuk meg, mert ennyit kézzel számolni egyszerűen lehetetlen.

Nincsenek megjegyzések: