Enkonduko al maŝintradukado per Apertium

From Apertium
(Redirected from Maŝintradukado)
Jump to: navigation, search

Ĉi tie ni provas supraĵe klarigi por nefakuloj, kiel funkcias la traduk-sistemo Apertium.

Detalajn informojn eblas trovi en la anglalingva Apertium 2.0: Oficiala dokumentaro (222 paĝoj). Meza vojo, ankaŭ en la angla, estas la viki-paĝo Documentation.

Contents

[edit] Ĝenerala superrigardo

Ni prenu francan frazon kiel "les enfants mangent des pommes". La tradukilo unue morfologie analizas ĝin kaj kreas aferon kiel:

le<s n="det"/><s n="def"/><s n="mf"/><s n="pl"/>
enfant<s n="n"/><s n="mf"/><s n="pl"/>
manger<s n="vblex"/><s n="pri"/><s n="p3"/><s n="pl"/></r>
un<s n="det"/><s n="ind"/><s n="mf"/><s n="pl"/>
pomme<s n="n"/><s n="f"/><s n="pl"/>

Tiu galimatio signifas, ke ĝi rekonas la frazon baze kiel "le enfant manger un pomme", sed samtempe por ĉiu unuopa vorto notas la morfologiajn formojn, ekz. "enfant" estas nomo (<s n="n"/>), vir- aŭ in-genra (<s n="mf"/>, kp. kun la ingenra "pomme"), plurala (<s n="pl"/>); aŭ "mangent" estas formo de "manger" (t.e. "leksika verbo", <s n="vblex"/>) en prezenco de indikativo (<s n="pri"/>), tria persono (<s n="p3"/>), pluralo (<s n="pl"/>).

En la sekva paŝo oni rigardos ekvivalentojn en dulingva vortaro kaj pli-malpli havos:

la<s n="det"/><s n="def"/><s n="mf"/><s n="pl"/>
infano<s n="n"/><s n="mf"/><s n="pl"/>
manĝi<s n="vblex"/><s n="pri"/><s n="p3"/><s n="pl"/>
<s n="det"/><s n="ind"/><s n="mf"/><s n="pl"/>
pomo<s n="n"/><s n="f"/><s n="pl"/>

Parte samtempe kaj tuj sekve oni modifos la strukturon, forigante nenecesajn elementojn por esperanto (ekz. genron) aŭ aldonante nececesajn, sed ne ekzistantajn en la franca (ekz. kazon). La sintaksa strukturo povas esti iom ŝanĝita, ekz. oni ĉi tie forigos la nederminitan artikolon. Tiel ni alvenas al io simila al:

la<s n="det"/><s n="def"/>
infano<s n="n"/><s n="pl"/><s n="nom"/>
manĝi<s n="vblex"/><s n="pri"/>
pomo<s n="n"/><s n="pl"/><s n="acc"/>

Kaj fine oni generas la surfacajn formojn de esperanto:

la infanoj manĝas pomojn

Tute simila procedo funkcias (funkcios) en la alia direkto, t.e. el esperanto en la francan (aŭ inter iuj ajn du lingvoj). Kiel vi povas suspekti, ju pli du lingvoj similas, des pli la traduko inter ili bonas. Ju pli da aferoj ni devas flankenmeti aŭ (multe pli malfacile) aldoni, des pli danĝere estas, ke la traduko ne ĝustos.

Krome, indas aldoni, ke, kvankam ni prezentas praktike nur laŭvortan tradukon, Apertium permesas ankaŭ fari partajn analizojn de frazoj kaj ŝanĝi sintaksajn strukturojn dum la procezo de la traduko. Tio permesas ekz. ŝanĝi la ordon de la adjektivoj en la tradukoj inter esperanto kaj latinidaj lingvoj (fr-eo: livre grand = granda libro); aŭ pritrakti la genitivon de la angla (en-eo: John's familio = la familio de John); aŭ ĝiajn kunmetitajn vortojn (en-eo: art book = artlibro); aŭ aldoni la akuzativon al esperanto en tradukoj el senkazaj lingvoj (fr-eo: je mange une pomme = mi manĝas pomon); aŭ akordigi verbon kaj subjekton en tradukoj al lingvoj, kiuj bezonas tion (eo-en: mi kantas = I sing, li kantas = he sings); aŭ aldoni subjektajn pronomojn en esperanto en tradukoj el lingvoj, kiuj kutime ne uzas ilin (ca-eo: menjo = mi manĝas); ktp.

[edit] La vortaroj

Por fari ĉion ĉi, oni havas tri vortarojn:

  • Po unu unulingva por la du pritraktataj lingvoj, en kiu estas morfologia informoj pri la vortoj
  • Unu dulingva kun ekvivalentoj inter la du lingvoj

[edit] Unulingvaj vortaroj

La unulingvaj vortoj estas difinitaj tiamaniere:

<e lm="tabac">           <i>tabac</i><par n="livre__n"/></e>
<e lm="table">           <i>table</i><par n="abeille__n"/></e>
<e lm="taper">           <i>tap</i><par n="abaiss/er__vblex"/></e>

Kiel oni komprenas tion?

  • La vorto (lemo) "tabac" havas la formojn laŭ la modelo de "livre__n" (nomo "livre") aplikata al la radiko "tabac".
  • La vorto (lemo) "table" havas la formojn laŭ la modelo de "abeille__n" (nomo "abeille") aplikata al la radiko "table".
  • La vorto (lemo) "taper" havas la formojn laŭ la modelo de "abaiss/er__vblex" (verbo "abaisser") aplikata al la radiko "tap".

En la supra parto de la dosiero oni difinas la modelojn (paradigmojn, t.e. ŝablonojn). Ekzemple, "abeille__n" estas difinita kiel:

<pardef n="abeille__n">
  <e><p> <l></l> <r><s n="n"/><s n="f"/><s n="sg"/></r> </p></e>
  <e><p> <l>s</l> <r><s n="n"/><s n="f"/><s n="pl"/></r> </p></e>
</pardef>

Inter <l> kaj </l> (el la angla "left", maldekstra) aperas la finaĵoj de la efektivaj vortoformoj, dum inter <r> kaj </r> (el la angla "right", dekstra) aperas la morfologiaj informoj, kiujn bezonos la sekvaj ŝtupoj de la tradukilo. Do necesas kompreni, ke fakte tiu unulinia difino de "table" per la paradigmo "abeille__n" difinas fakte du formojn de la vorto:

  <e><p> <l>table</l> <r>table<s n="n"/><s n="f"/><s n="sg"/></r> </p></e>
  <e><p> <l>tables</l> <r>table<s n="n"/><s n="f"/><s n="pl"/></r> </p></e>

(Estas aldonita nur la radiko "table", kiu aperas inter <l> kaj </l>).

Do tiel la tradukilo rekonas la formojn "table" kaj "tables" kaj komprenas ilin kiel "nomon", "inan", "singularan" aŭ pluralan".

Oni rimarku, ke ĉe la verbo "taper" la principo estas la sama (unu-linia difino) sed la difino de la modelo (paradigmo) ne estas dulinia, sed ĝi havas amason da linioj: po unu por ĉiu malsama persono, nombro, tenso, modo.

Oni rimarku ankaŭ, ke ĉe "taper" la difino estas iom malsama ol ĉe "tabac" kaj "table": inter kaj ne aperas la tuta vorto "taper", sed nur la "radiko" "tap", kiu troviĝas en ĉiuj formoj "tape", "tapes", "tapons", etc. Por faciligi la memorigon de tio, ke ion oni devas forigi, kaj de kie oni devas forigi, la paradigmo havas "/" por disigi la "radikon" disde la "finaĵo" (<par n="abaiss/er__vblex"/>). Oni bonvolu noti ankaŭ ke ni uzas la vorton "radiko" inter citiloj, ĉar ne temas vere pri tio, kion ni lernas en la lernejo kiel radiko, sed pri koncepto formala, tre ligita al ortografiaj reguloj.

Per la uzado de paradigmoj ni igas la vortaron multe pli alirebla kaj komprenebla. Ekzemple, tuj post "table" aperas:

<e lm="tableau">         <i>tableau</i><par n="livre__n"/></e>

Kion vi opinias per tio? Ĉu la vorto "tableau" sekvas la modelon de "livre"?

Verŝajne scipovantoj de la franca tuj rimarkas, ke ne: la pluralo de "tableau" estas per "x" kaj ne per "s". Estas eraro en la vortaro. Se vi hazarde trovas tiajn eraron indas, ke vi korektu ilin.

Kiel korekti? En tiuj okazoj oni serĉu similan vorton kaj vidas, kiu estas la paradigmo difinita per ĝi. Ne necesas eĉ cerbumi pri konkreta vorto, sed sufiĉas serĉi "eau"" (t.e. ankaŭ la citilon por certiĝi, ke "eau" estas vortofina). La unuan vorton, kiun oni trovas estas:

<e lm="taureau">         <i>taureau</i><par n="lieu__n"/></e>

Oni rapide mense kontrolas (sen rigardi la konkretan difinon de lieu__n, kiun oni principe fidu): "lieu" taŭgas (vira kun pluralo en "x") kaj do necesus anstataŭigi "livre__n" per "lieu__n".

[edit] Detaloj

La sekvaj detaloj ne estas legindaj por dezirantoj nur supraĵe konatiĝi kun Apertium (sekvu al #Dulingva vortaro).

[edit] Plurvortaj esprimoj

Indas aldoni, ke eblas pritrakti plurvortajn esprimojn. tamen en la nuna sistemo ekzistas gravaj limigoj por tio.

Certe eblas detali ĉiujn morfologiajn formojn de difinita vorto, ekz.

<e lm="correu electrònic"><p><l>correu<b/>electrònic</l><r>correu<b/>electrònic<s n="n"/><s n="m"/><s n="sg"/></r></p></e>
<e lm="correu electrònic"><p><l>correus<b/>electrònics</l><r>correu<b/>electrònic<s n="n"/><s n="m"/><s n="pl"/></r></p></e>

(Rimarku, ke la surfacaj formoj aperas, kiel vidite inter <l> kaj </l>, dum la lemoj kun morfologiaj informoj aperas inter <r> kaj </r> (la informo kun la etikedo lm estas nur por informo de homaj legantoj)

Tamen tio estas apenaŭ uzebla, kiam ekzistas multaj surfacaj formoj (ekz. en lingvoj kun kompleksa nom- aŭ verb-morfologio).

Apertium permesas la uzon de t.n. grupo, kiu permesas la uzon de paradigmo ie interne de la strukturo, ekz.:

<e lm="preni en konsideron">  <i>pren</i><par n="i__vblex"/><p><l><b/>en<b/>konsideron</l><r><g>en<b/>konsideron</g></r></p></e>

La evidenta limigo de tiu sistemo estas, ke ĝi ne permesas pluropajn ŝanĝojn, ekz. en esprimoj kiel "elektronika poŝto" aŭ "kombi sin".

[edit] Dekstren kaj maldekstren

Ĉiuj vortaroj baziĝas sur duopo "dekstra" kaj "maldekstra". Tio rilatas al la direkto, laŭ kiu oni uzos la vortaron, kiuj respondas al la direkto de la traduko (de kiu al kiu lingvoj). Ĉe la unulingvaj vortaroj tiuj direktoj estas ligitaj al la operacioj de analizado (dekstren) kaj sintezado (maldekstren).

La legado dekstren de la unulingva franca vortaro permesas, ke "enfants" estu transformata al "enfant<s n="n"/><s n="mf"/><s n="pl"/>", kiu estos plutraktata ĝis oni transformos ĝin al "infano<s n="n"/><s n="pl"/><s n="nom"/>". Tiam legado maldekstren de la unulingva esperanto-vortaro kaŭzas la transformon de tiu sinsekvo al "infanoj".

[edit] Dulingva vortaro

Verŝajne la dulingva vortaro estas por nefakulo la plej atendebla parto de aŭtomata tradukilo: iel ja necesas traduki la vortojn de unu lingvo en la alian!

En Apertium, la aspekto de dulingvaj vortaroj estas sufiĉe simila al la jam viditaj unulingvaj:

<e>       <p><l>infano<s n="n"/></l>                   <r>enfant<s n="n"/></r></p></e>

La esenca problemo estas: kiel oni agas ĉe vortoj, kiuj havas malsamajn tradukojn en la cellingvo? La respondo estas: ĝis nun, nekontentige! Apertium permesas nur unu solan tradukon por ĉiu lemo. Tamen eblas, ke plurajn vortojn oni traduku al la sama, ekz.:

enfant -> infano
gosse -> infano

kaj

knabo -> enfant
infano -> enfant

Tiujn kvar tradukojn eblas esprimi iom pli sinteze kiel:

knabo -> enfant
infano <-> enfant
infano <- gosse

aŭ per la sintakso de Apertium:

<e r="LR"><p><l>knabo<s n="n"/></l>                    <r>enfant<s n="n"/></r></p></e>
<e>       <p><l>infano<s n="n"/></l>                   <r>enfant<s n="n"/></r></p></e>
<e r="RL"><p><l>infano<s n="n"/></l>                   <r>gosse<s n="n"/></r></p></e>

Indas mencii, ke vortoj kun malsamaj gramatikaj kategorioj estas pritraktataj kiel malsamaj vortoj en la dulingva vortaro (ekz. la anglaj nomo "book" kaj la verbo "to book"), sekve ili staras iom flanke de la problemo de elekto inter malsamaj tradukoj en la cellingvo. Ĉi tie la problemo staras en la ĝusta kompreno de la font-frazo por kompreni, kiu el la diversaj gramatikaj formoj estas la elektinda (kiel Apertium baraktas pri tio, ni ne pritraktas ĉi tie, sed ni diru nur, ke la afero estas sufiĉe kontentiga).

Ekzistas provoj, uzantaj statistikajn metodojn, por permesi, ke Apertium trafe elektu inter pluraj tradukebloj, sed ĝis nun ili ne donis kontentigajn rezultojn.

Tiun ĉi problemon eblas iom solvi uzante plurvortajn esprimojn, kiuj permesas havi pli da kunteksto por trafi la ĝustan tradukon, sed tio ofte ne helpas aŭ ne estas aplikebla pro la limigoj de Apertium en la pritrakto de la diverseco de morfologiaj formoj ĉe plurvortaj esprimoj. Ĉio ĉi kaŭzas de tempo al tempo tute nekompreneblajn aŭ ridindajn tradukojn, kiel ekz. en la kataluna "la invasió dels gots", kiu fariĝas "la invado de la glasoj", anstataŭ "la invado de la gotoj", ĉar oni (plej verŝajne prave) decidis, ke la plej probabla traduko de la kataluna vorto "got" estas "glaso" kaj ne "goto".

Tiu ĉi problemo estas iom kaprompa ekz. ĉe diversaj ofte uzataj prepozicioj, tamen ĉe ili eblas ofte elturniĝi jen per plurvortaj esprimoj (ekz. kiam ili estas frazeologiaj post verbo) aŭ per t.n. transdon-reguloj (vidu poste).

[edit] Transdon-reguloj

La ĝisnune klarigata sistemo simple faras aŭtomatan laŭvortan tradukon. Evidente tio estas ne kontentiga, krom eventuale se temas pri tradukado inter du ege proksimaj lingvoj. Por tio ekzistas t.n. transdon-reguloj.

La transdon-reguloj konsistas en tio, ke specialaj agadoj devas okazi en difinitaj kuntekstoj. Ekzemple, en la latinidaj lingvoj adjektivoj sekvas la nomon, sed ne antaŭas ilin kiel en esperanto. Do transdon-regulo el ekz. la franca al esperanto diras pli-malpli:

Nomo Adjektivo -> Adjektivo Nomo

Tiel "livre grand" povas fariĝi en esperanto "granda libro" anstataŭ la strangeta "libro granda".

Rimarku, ke transdon-reguloj estas aktivataj post la analizo de la surfacaj fomoj, tiel ke "livre" fariĝis io simila al "livre<s n="n"/><s n="m"/><s n="sg"/>" kaj la informo "<s n="n"/>" estas ĝuste uzata en tiu ĉi kunteksto por elekti "livre" kiel nomon.

Problemo estas, ke ĉi tiu regulo estas ne sufiĉa por pritrakti esprimojn kun du adjektivoj. Per tiu ĉi regulo "Parti Communiste Français" fariĝus "Komunisma Partio Franca" anstataŭ "Franca Komunisma Partio". Sekve necesas plia transdonregulo simila al:

Nomo Adjektivo1 Adjektivo2 -> Adjektivo2 Adjektivo1 Nomo

[edit] Ŝtupoj

Aliflanke, Apertium principe permesas tri malsamajn ŝtupojn de reguloj, kiujn oni aplikas sinsekve. Tio estis enkondukita, kiam la sistemo ekestis uzata por konstrui tradukilojn ne nur inter la proksimaj latinidaj lingvoj, sed oni enkondukis pli malsamajn lingvojn, kiel la anglan kaj aparte la eŭskan. Tipe la sistemo estas tiel uzata:

  • Nivelo 1 pritraktas unuopajn vortojn kaj konstruas t.n. sintagmojn (frazerojn): ĝi prizorgas la akordon interne de la sintagmoj (genro, nombro, kazo k.s.)
  • Nivelo 2 pritraktas unuopajn sintagmojn: ĝi prizorgas la akordigon inter ili (ekz. la aperigon de akuzativo aŭ la akordon inter la subjekto kaj la subjekta predikativo)
  • Nivelo 3 faras lastajn malmultajn polurojn

[edit] Kritiko kaj solvoj

Tiu strukturo havas avantaĝojn (kiel sian simplecon kaj principan travideblecon), sed ankaŭ kaŭzas problemojn. Ni ekdiskutos nun ĉi-lastajn.

Por esti pli rapida, Apertium uzas nur tiel simplajn regulojn anstataŭ ekzemple t.n. regulajn esprimojn, kiuj permesus esprimi ekz. "nomo sekvita de unu aŭ pluraj adjektivoj". Tio igas, ke facile ekestas multaj reguloj tre similaj inter si ("nomo + adj", "nomo + adj + adj", "nomo + adj + kaj/aŭ + adj", "art + nomo + adj", "art + nomo + adj + adj", "nomo + adv + adj" ktp.). Kiam montriĝas necesa profunda analizo ekz. de la nom-sintagmo, tiam aperas eta bordelo (ekz. en la traduko el la kataluna en esperanto por inversigi la adjektivojn , aŭ el esperanto en la anglan por esti kapablaj trovi la kernon de la subjekto kaj akordigi la verbon kun ĝi).

Por solvi tiun problemon ekzistas du sistemoj: tiu, kiun ni ekuzis en la esperanto-tradukiloj, estas la aldono de pliaj niveloj, precipe inter la unua kaj la (eksa) dua. Tio permesas, ke en la unua nivelo ni konstruu ekz. simplajn nom-sintagmojn sen artikolo, kaj en dua nivelo ni simple diru ekz. ke "nom-sintagmo = artikolo + nom-sintagmo". Tiel per unu plia nivelo ni sukcesas praktike duonigi la nombron de reguloj. En la momento skribi tiujn regulojn la sistemo estas ankoraŭ iom eksperimenta, sed ĝi montras sufiĉe bonajn rezultojn. Ne klaras, tamen, kiom da kromniveloj estas dezirindaj ekz. el latinida lingvo al esperanto.

Alia sistemo principe uzebla estas kunigi Apertium kun alia malferma programaro, kiu ĝuste permesas la uzon de regulaj esprimoj.

[edit] Kromaj detaloj

Transdon-reguloj estas utilaj ankaŭ por solvi problemojn de homonimeco. Ekz. en la kataluna "pareix" povas signifi "(ŝi) naskas" aŭ "ŝajnas", sed la kombino "pareix que" povas esti nur "ŝajnas ke" (ĉar "naskas ke" estas neebla). Do regulo pritraktas en la tradukilo de la kataluna al esperanto la kazon "pareix que" (kaj aliajn karambolojn inter formoj de la verboj naski kaj ŝajni por kelkaj personoj kaj tensoj en la kataluna).

Personal tools