Difference between revisions of "Enkonduko al maŝintradukado per Apertium"
Hectoralos (talk | contribs) |
Hectoralos (talk | contribs) m (moved Maŝintradukado to Enkonduko al maŝintradukado per Apertium: Pli klara titolo) |
(No difference)
|
Revision as of 14:50, 7 September 2010
Ĉ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
Ĝ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 (), vir- aŭ in-genra (, kp. kun la ingenra "pomme"), plurala (); aŭ "mangent" estas formo de "manger" (t.e. "leksika verbo", ) en prezenco de indikativo (), tria persono (), pluralo ().
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.
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
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".
Detaloj
La sekvaj detaloj ne estas legindaj por dezirantoj nur supraĵe konatiĝi kun Apertium (sekvu al #Dulingva vortaro).
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".
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", kiu estos plutraktata ĝis oni transformos ĝin al "infano". Tiam legado maldekstren de la unulingva esperanto-vortaro kaŭzas la transformon de tiu sinsekvo al "infanoj".
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>
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).
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 (aŭ lingvovarioj). Por tio ekzistas t.n. transdon-reguloj.