Difference between revisions of "Enkonduko al maŝintradukado per Apertium"
Hectoralos (talk | contribs) m |
Hectoralos (talk | contribs) m |
||
(15 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Ĉi tie ni provas supraĵe klarigi por nefakuloj, kiel funkcias |
Ĉi tie ni provas supraĵe klarigi por nefakuloj, kiel funkcias la traduk-sistemo Apertium. |
||
Detalajn informojn eblas trovi en la anglalingva [https://wiki.apertium.org/w/images/d/d0/Apertium2-documentation.pdf Apertium 2.0: Oficiala dokumentaro] (222 paĝoj). Meza vojo, ankaŭ en la angla, estas la viki-paĝo [[Documentation]]. |
|||
==Ĝenerala superrigardo== |
==Ĝenerala superrigardo== |
||
Ni prenu francan frazon kiel "les enfants mangent des pommes". La tradukilo unue morfologie analizas ĝin kaj kreas aferon kiel: |
Ni prenu francan frazon kiel "les enfants mangent des pommes". La tradukilo unue morfologie analizas ĝin kaj kreas aferon kiel: |
||
<pre> |
|||
<blockquote> |
|||
le<s n="det"/><s n="def"/><s n="mf"/><s n="pl" |
le<s n="det"/><s n="def"/><s n="mf"/><s n="pl"/> |
||
enfant<s n="n"/><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 |
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" |
un<s n="det"/><s n="ind"/><s n="mf"/><s n="pl"/> |
||
pomme<s n="n"/><s n="f"/><s n="pl" |
pomme<s n="n"/><s n="f"/><s n="pl"/> |
||
</ |
</pre> |
||
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"/>). |
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: |
En la sekva paŝo oni rigardos ekvivalentojn en dulingva vortaro kaj pli-malpli havos: |
||
<pre> |
|||
<blockquote> |
|||
la<s n="det"/><s n="def"/><s n="mf"/><s n="pl" |
la<s n="det"/><s n="def"/><s n="mf"/><s n="pl"/> |
||
infano<s n="n"/><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" |
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" |
<s n="det"/><s n="ind"/><s n="mf"/><s n="pl"/> |
||
pomo<s n="n"/><s n="f"/><s n="pl"/> |
pomo<s n="n"/><s n="f"/><s n="pl"/> |
||
</ |
</pre> |
||
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: |
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: |
||
<pre> |
|||
<blockquote> |
|||
la<s n="det"/><s n="def" |
la<s n="det"/><s n="def"/> |
||
infano<s n="n"/><s n="pl"/><s n="nom" |
infano<s n="n"/><s n="pl"/><s n="nom"/> |
||
manĝi<s n="vblex"/><s n="pri" |
manĝi<s n="vblex"/><s n="pri"/> |
||
pomo<s n="n"/><s n="pl"/><s n="acc" |
pomo<s n="n"/><s n="pl"/><s n="acc"/> |
||
</ |
</pre> |
||
Kaj fine oni generas la surfacajn formojn de esperanto: |
Kaj fine oni generas la surfacajn formojn de esperanto: |
||
<pre> |
|||
<blockquote> |
|||
la infanoj manĝas pomojn |
la infanoj manĝas pomojn |
||
</ |
</pre> |
||
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. |
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. |
|||
==La vortaroj== |
==La vortaroj== |
||
Line 46: | Line 50: | ||
=== Unulingvaj vortaroj === |
=== Unulingvaj vortaroj === |
||
La unulingvaj vortoj estas difinitaj tiamaniere: |
La unulingvaj vortoj estas difinitaj tiamaniere: |
||
<pre> |
|||
<blockquote> |
|||
<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> |
|||
</ |
</pre> |
||
Kiel oni komprenas tion? |
Kiel oni komprenas tion? |
||
Line 58: | Line 62: | ||
* La vorto (lemo) "table" havas la formojn laŭ la modelo de "abeille__n" (nomo "abeille") aplikata al la radiko "table".<br /> |
* La vorto (lemo) "table" havas la formojn laŭ la modelo de "abeille__n" (nomo "abeille") aplikata al la radiko "table".<br /> |
||
* La vorto (lemo) "taper" havas la formojn laŭ la modelo de "abaiss/er__vblex" (verbo "abaisser") aplikata al la radiko "tap". |
* La vorto (lemo) "taper" havas la formojn laŭ la modelo de "abaiss/er__vblex" (verbo "abaisser") aplikata al la radiko "tap". |
||
</blockquote> |
</blockquote> |
||
En la supra parto de la dosiero oni difinas la modelojn (paradigmojn). Ekzemple, "abeille__n" estas difinita kiel: |
|||
En la supra parto de la dosiero oni difinas la modelojn (paradigmojn, t.e. ŝablonojn). Ekzemple, "abeille__n" estas difinita kiel: |
|||
<blockquote> |
|||
<pardef n="abeille__n"><br /> |
|||
<pre> |
|||
<nowiki> <e><p> <l></l> <r><s n="n"/><s n="f"/><s n="sg"/></r> </p></e></nowiki><br /> |
|||
<pardef n="abeille__n"> |
|||
<nowiki> <e><p> <l>s</l> <r><s n="n"/><s n="f"/><s n="pl"/></r> </p></e></nowiki><br /> |
|||
<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> |
</pardef> |
||
</ |
</pre> |
||
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: |
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: |
||
<pre> |
|||
<blockquote> |
|||
<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> |
|||
</ |
</pre> |
||
(Estas aldonita nur la radiko "table", kiu aperas inter <l> kaj </l>). |
(Estas aldonita nur la radiko "table", kiu aperas inter <l> kaj </l>). |
||
Line 82: | Line 87: | ||
Per la uzado de paradigmoj ni igas la vortaron multe pli alirebla kaj komprenebla. Ekzemple, tuj post "table" aperas: |
Per la uzado de paradigmoj ni igas la vortaron multe pli alirebla kaj komprenebla. Ekzemple, tuj post "table" aperas: |
||
<pre> |
|||
<blockquote> |
|||
<e lm="tableau"> <i>tableau</i><par n="livre__n"/></e> |
|||
</ |
</pre> |
||
Kion vi opinias per tio? Ĉu la vorto "tableau" sekvas la modelon de "livre"? |
Kion vi opinias per tio? Ĉu la vorto "tableau" sekvas la modelon de "livre"? |
||
Line 91: | Line 96: | ||
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: |
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: |
||
<pre> |
|||
<blockquote> |
|||
<e lm="taureau"> <i>taureau</i><par n="lieu__n"/></e> |
|||
</ |
</pre> |
||
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". |
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. |
|||
<pre> |
|||
<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> |
|||
</pre> |
|||
(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 <i>lm</i> 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.: |
|||
<pre> |
|||
<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> |
|||
</pre> |
|||
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<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". |
|||
=== 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: |
|||
<pre> |
|||
<e> <p><l>infano<s n="n"/></l> <r>enfant<s n="n"/></r></p></e> |
|||
</pre> |
|||
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.: |
|||
<pre> |
|||
enfant -> infano |
|||
gosse -> infano |
|||
</pre> |
|||
kaj |
|||
<pre> |
|||
knabo -> enfant |
|||
infano -> enfant |
|||
</pre> |
|||
Tiujn kvar tradukojn eblas esprimi iom pli sinteze kiel: |
|||
<pre> |
|||
knabo -> enfant |
|||
infano <-> enfant |
|||
infano <- gosse |
|||
</pre> |
|||
aŭ per la sintakso de Apertium: |
|||
<pre> |
|||
<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> |
|||
</pre> |
|||
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). |
|||
== 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: |
|||
<pre> |
|||
Nomo Adjektivo -> Adjektivo Nomo |
|||
</pre> |
|||
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: |
|||
<pre> |
|||
Nomo Adjektivo1 Adjektivo2 -> Adjektivo2 Adjektivo1 Nomo |
|||
</pre> |
|||
===Ŝ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: |
|||
<ul> |
|||
<li>Nivelo 1 pritraktas unuopajn vortojn kaj konstruas t.n. sintagmojn (frazerojn): ĝi prizorgas la akordon interne de la sintagmoj (genro, nombro, kazo k.s.) |
|||
<li>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) |
|||
<li>Nivelo 3 faras lastajn malmultajn polurojn |
|||
</ul> |
|||
===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. |
|||
===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). |
|||
[[Category:Esperanto]] |
[[Category:Esperanto]] |
||
[[Category:Dokumentado en Esperanto]] |
Latest revision as of 16:37, 26 October 2011
Ĉ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[edit]
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.
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.
La vortaroj[edit]
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[edit]
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[edit]
La sekvaj detaloj ne estas legindaj por dezirantoj nur supraĵe konatiĝi kun Apertium (sekvu al #Dulingva vortaro).
Plurvortaj esprimoj[edit]
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[edit]
Ĉ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[edit]
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).
Transdon-reguloj[edit]
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" kaj la informo "" 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
Ŝtupoj[edit]
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
Kritiko kaj solvoj[edit]
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.
Kromaj detaloj[edit]
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).