A kutya esete a postással
Mi az a szóláncmodell és a simítás? Miért nem haraphat postás kutyát a Google Translate szerint? Hogy jöhetnek ki teljesen furcsa mondatok egy gépi fordítóból? És mi az a kuty? A statisztikai gépi fordítók titkaiba pillantunk bele.
Cikksorozatunk első részében a The Guardian interaktív térképe ürügyén bemutattuk a statisztikai gépi fordítók alapvető működését. Most tovább megyünk, és felsorolunk még néhány problémát, amivel a pusztán statisztikai alapon dolgozó programok nem, vagy csak nehezen tudnak megbirkózni. Példaként a Google Fordító fordításait fogjuk használni, és ezek segítségével megpróbálunk belelátni a program működésébe. Cikkünk végére az is kiderül, milyen módszerekkel lehet javítani a statisztikai gépi fordítók pontosságán.
Ellenőrzés statisztikával
Forrásnyelvnek nevezzük azt a nyelvet, amiről fordítunk, és célnyelvnek azt, amire fordítani szeretnénk.
Előző cikkünkben elmondtuk, hogy egy adott nyelvpáron elérhető párhuzamos szövegek alapján a fordítóprogram egy úgynevezett frázistáblát készít. Ebben az szerepel, hogy a látott szövegek alapján az egyes szavaknak és szócsoportoknak milyen szavak, illetve szócsoportok felelnek meg a legnagyobb valószínűséggel a célnyelvben. Fordítás közben ez alapján készíti el a forrásnyelvi szöveg lehetséges fordításait, általában nem is csak egyet.
Ezzel párhuzamosan a program további ellenőrzést is végez a készülő fordításjelölteken. Egy, a tanulókorpusznál nagyobb, célnyelvi szövegadatbázis alapján ellenőrzi, hogy a fordításként létrejött szósorozat milyen gyakorisággal fordul elő. Ehhez alapvetően egy egyszerű szóláncmodellt használ: megbecsüli, hogy milyen valószínűséggel fordul elő a célnyelvi szövegekben egymás után a fordításban szerepelő szósor, úgy, hogy az adott szó gyakoriságán kívül azt is figyelembe veszi, hogy milyen gyakran követi az azt megelőző 1, 2, 3...n szót.
A tanítókorpuszban soha nem látott szavakhoz, illetve szósorokhoz is rendelnek valamekkora valószínűséget. Ellenkező esetben a célnyelvi nyelvmodell lehetetlennek minősítené azokat a fordításokat, amelyben például olyan név szerepel, amely nem szerepelt a rendszer építésekor használt tanítóanyagban. Az alábbiakban az elsőként álló mondatot írtuk be a Google Fordítóba. Alatta megadjuk az általunk készített helyes fordítást vagy fordításokat. Az írógépbetűkkel szedett mondatok a Google Fordító fordításai. % jelet tettünk az olyan fordítások elé, amik ugyan helyes célnyelvi mondatok, de nem a forrásnyelvi mondat megfelelői. * jelzi a nyelvileg hibás mondatokat. Végül egyszeres idézőjelek között megpróbáljuk megadni a fordítóprogram által adott hibás fordítás jelentését.Ezt a technikát simításnak nevezik. A ragozó nyelvek esetében, ahol egy-egy szótőnek több száz alakja is lehet, a rendelkezésre álló szövegekből sokszor hiányzik a fordíttatni kívánt forma – így azzal a fordítóprogram sokszor nem is tud mit kezdeni (ilyenkor leggyakrabban változatlan alakban kerül a fordításba), mint például az alábbi mondatok esetében.
Kinyithattátok volna az ablakot.
You could have opened the window.
*Kinyithattátok have the window.
’Kinyithattátoknak van az ablaka.’Elszomorítottál.
You have made me sad.
*Though it.
’Bár ez.’
Ragozó nyelvek
Az ellenőrzés módszere miatt van az, hogy a Google Fordítóból általában nagyságrendekkel valódibbnak, helyesebbnek látszó szöveg jön ki, ha a célnyelv az angol, mint ha például egy a magyarhoz hasonló ragozó nyelvre próbálunk vele fordíttatni. Ugyanis a fordítás ellenőrzéséhez használt szóláncmodell a szegényes morfológiájú (nem vagy keveset toldalékoló) és viszonylag kötött szórendű angol esetében jól használható. Emellett angol szövegekből gyakorlatilag korlátlan mennyiségű szöveg áll rendelkezésre a modell legyártásához (különösen a Google számára). Ez viszont azt is jelenti, hogy az olvasónak a meggyőző fordítás láttán akkor is az az illúziója támad, hogy a fordítás jó, amikor inkább csak laza asszociációs viszony áll fenn az eredeti és a fordítás jelentése között.
A Google Fordítót például semmilyen módszerrel nem tudjuk meggyőzni, hogy a ragok által kifejezett grammatikai viszonyoknak megfelelően fordítsa az alábbi mondatot. Hiszen túl sok kutya általi postásharapást látott a célnyelvi nyelvmodelljét alkotó szövegekben, és túl kevés példát arra, amit itt mondani próbálunk:
A postás harapta meg a kutyát.
It was the postman who bit the dog.
%The postman was bitten by the dog.
’A postást megharapta a kutya.’A kutyát harapta meg a postás.
The dog was bitten by the postman.
%The dog is biting the mailman.
’A kutya éppen harapja a postást.’A postás a kutyát harapta meg.
’A postást megharapta a kutya.’
It was the dog that the postman has bitten.
%The postman was bitten by the dog.
Vagy mégis sikerül valami ilyesmit elérni? De vajon mit is jelent itt a magyar „mondat”?
A postás harap kuty a kert.
*The postman bites dog in the garden.
’A postás harap kutyát kertben.’
A fenti kísérleti „mondat” azt is megmutatja, hogy a Google Fordítóban a magyar esetében valamilyen tövesítő algoritmus is működik, hiszen a nem létező kuty szóban felismeri a kutya szó tövét.
Szórend
A Google Fordítóhoz hasonló statisztikai fordítórendszerek számára általában komoly kihívást jelent az olyan nyelvpárok közötti fordítás is, ahol a szórend jelentősen különbözik. Ez már a tipológiai szempontból nem is oly távoli angol–német nyelvpár esetében is problémát jelent. A németben az alárendelő mellékmondatokban a ragozott ige mindig a tagmondat legvégén áll, míg az angolban ilyenkor is a tagmondat második összetevője. A fordítóprogram az ilyen mondatokban általában rossz helyre teszi vagy teljesen elveszíti a mellékmondat igéjét.
I doubt that the king would want to kill that poor boy.
Kétlem, hogy a király meg akarná ölni azt a szegény fiút.
%Kétlem, hogy a király meg akarta ölni a szegény fiút.
I doubt that the king would want to kill that poor boy.
Ich bezweifle, dass der König jenen armen Jungen zu töten möchte.
*Ich bezweifle, dass der König möchte, dass die armen Jungen zu töten.
’Kétlem, hogy a király azt szeretné, hogy a szegény ifjak megölni.’
Hasonló jelenséget látunk, ha például az angol mondatban főnévi igenévvel kifejezett célhatározó van. A take ’visz’ ige az alábbi példában a magyar fordításból teljesen hiányzik, a német fordításban pedig angolul jelenik meg.
I want you to take this basket to your grandmother.
Azt akarom, hogy vidd el ezt a kosarat a nagymamádnak.
*Azt akarom, hogy ezt a kosarat a nagymama.
I want you to take this basket to your grandmother.Ich möchte dass du diesen Korb zu deiner Großmutter bringst.
*Ich möchte, dass Take This Korb, um Ihre Großmutter.
’Azt szeretném, hogy take this kosár azért, hogy a nagymamája.’
Ugyancsak problémát jelenthet az egyeztetés kezelése. Ha a célnyelvben a névszói csoportokon belül a névelőket, számneveket, mellékneveket és a főnevet nemben, számban, esetben egyeztetni kell, az az erősen leegyszerűsített grammatikai modellekkel dolgozó statisztikai fordítórendszereknek gyakran nem sikerül. Erre is példa a fenti mondat a királyról és szegény fiúról, ahol a program inkább többes számban ragozta el a szegény fiút, semmint hogy egyes számban helyesen tárgyesetbe rakja: névelőként a többes számú die ’a(z)’ szerepel a helyes egyes számú tárgy esetű jenen ’azt a(z)’ helyett.
Megoldások
Amint a fenti példák mutatják, a statisztikai gépi fordítók sok nyelvi jelenséggel nem tudnak megbirkózni. Főként a nagyon sokféle szóalakot tartalmazó ragozó nyelvekkel vannak komoly problémák. Hogyan lehet ezeket kiküszöbölni? A kutatók kidolgoztak olyan technikákat, amelyek révén a fordítóprogramok egyszerre több modellel dolgoznak, és az egyes fordításokat többféle szempontból is kiértékelik. Nem csak a puszta szóalakok feletti nyelvi statisztikák alapján dolgoznak, hanem bizonyos korlátozott szintű nyelvi elemzést is felhasználnak. Az ilyen modellekben az eredeti mondat, illetve a fordításban szereplő szavak töve, szófaja, a ragozásával kapcsolatos morfológiai információ is szerepet játszik. Ezekre is hasonló statisztikai modelleket készítenek, mint a szóalakokra, és az ezek által a modellek által a fordításjelöltekre adott pontszámokat kombinálják.
Ragozó nyelvek esetén hibrid modellekkel is találkozunk. Ezek a korpuszokkal dolgozó statisztikai alapú fordítók és a hagyományos, szabály- és szótáralapú fordítóprogramok ötvözetei. Cikksorozatunk következő részében szót ejtünk ilyen bonyolultabb modelleket használó megoldásokról is.
Itt jól latszodik a statisztikai fordítás. Az egyik szövegkörnyezetben rájött a fordító a sütő szótóre, a másikban nem. Vicces.
van nektek mikrohullámú sütőtök?
you have a microwave pumpkin?
van otthon mikrohullámú sütőtök?
microwave oven at home anyway?
Szóval ezért cseréli meg olyan sokszor a translate az alanyt meg a tárgyat. Ezt sose értettem.
Végeztem én is egy nagyon egyszerű tesztet (spanyol--angol):
a) Compré el diccionario. -- Ese es bueno. 'Megvettem a szótárat. -- Az [a szótár] jó.'
"I bought the dictionary. -- *That is good."
b) Compré el diccionario. -- Eso es bueno. 'Megvettem a szótárat. -- Az [hogy megvettem] jó.'
"I bought the dictionary. -- That is good."
Angolul ugyanazt fordítja mindkettőre, pedig nem ugyanazt jelenti a két mondat. A helyes megoldás az elsőnél "That one is good" lenne. A különbség mindösze annyi a forrásnyelvben, hogy a mutató névmás az a) példában hímnemű és a 'szótár' az előzménye, a b) példában semlegesnemű és az első mondat az előzménye.
A legegyszerűbb alakkal azonban nincs problémája:
"a postás megharapta a kutyát"
"the postman bit the dog."
ezt teljsen jól fordítja.
Mindaddig, amíg az angolt használják "közvetítő"-nyelvként ezek a programok, nem is fognak tudni soha megközelítőleg helyes fordításokat sem produkálni. Azon egyszerű oknál fogva, hogy az angolban rengeteg nyelvtani információ elveszik (pl. a főnevek neme), ami a forrásnyelvben megvan és a célnyelvhez is sokszor szükséges lenne. Pedig a nemek kérdése csak az egyik legtriviálisabb és könnyen kezelhető dolog, mégsem mindegy (pl. a spanyolban), hogy egy mondatban éppen milyen nemű névmással utalunk vissza valamely előzményre, mert tök mást jelenthet. A fejlesztés első lépése tehát egy olyan "közvetítő"-nyelvet bevezetni, amely ismeri legalább a nyelvtani nemeket és ragozó is.
De még így sincs minden megoldva (persze ezt már egy másik cikknél leírtam, természetesen senki sem reagált rá semmit), hiszen vannak olyan ragozó nyelvek (pl. a baszk), ahol még csak szabályrendszert sem lehet felállítani az igeragozásra (pl. már az ige szótári alakját -- ami nagyjából a befejezett melléknévi igenévnek felel meg -- is vagy ötféleképpen képezhetik: e/i/j-TŐ-i/-an/-tu/-du, és kb. semmilyen szabály nincs rá, hogy mikor melyik).
Tehát sajnos ha komolyan akarnak majd valamit kezdeni az ilyen programokkal, akkor azokat bizony külöm-külön egy adott nyelvre kell fejleszteni (az angolt félretéve).