Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

4.5.2012

Googlo tradukas Esperanton

Filed under: maŝina tradukado — artur @ 20:13

Tiu mesaĝo tre surprizis min. Nun oni povas traduki maŝine al esperanto kaj el esperanto inter 63 lingvoj. Mi de kelkaj jaroj hobie laboras pri maŝina tradukado kaj Esperanto kaj ne tre alte taksis eblon, ke googlo iam kaj tiom frue okupos pri la esperanta lingvo. Mi sciis, ke googlo uzas statistikan metodon por tradukado, kaj mi ankaŭ faris kelkajn provojn pri tiu metodo.
Do mi studis la faman laboron pri statistika tradukado.. Mi iam eksperimentis per giza+ kaj volis uzi tiun ilon por konstrui vortaron. Miaj rezultoj estas tre mizeraj kaj tempo de komputado tre longa. Mi rapide rimarkis, ke oni bezonus vere egan kvanton de paralelaj tekstoj. Mi ne supozis, ke tiu necesa kvanto ekzistus por Esperanto en proksima venonto. Google pruvis la malon. Ĝi estas la plej granda teksta bazo de mondo kaj ĝi povas profiti de tio. Due google eble havas pli bonan teknikon ol la primitivaj iloj de komenco de statistika metodo. Por mi la plej miriga estas la rapideco de g-tradukilo. Mi povas nur imagi, ke la teksto estas tradukita nur ĉe multaj paralelaj procesoroj de tre bone skribitaj programoj. La uzula interfaco en povas esti pli facila.

Oni trovas kelkajn informojn pri historio de G-tradukilo tie. Tie mi legis, ke nun la g-tradukilo tradukas pli da teksto en unu tago ol ĉiuj tradukistoj en unu jaro kaj estas nun la plej uzata komputila tradukilo. Tio signifas, ke nun multaj homoj unue povas kompreni iugrade fremdlingvajn tekstojn sen dungo de multekostaj tradukistoj kaj longa lernado. La lingva revolucio, pri kiu Esperantistoj ĉiam revis, okazas sed ne helpe de Esperanto aŭ aliaj lingvoj sed helpe de tekniko.

Surpriza estas por mi ankaŭ la fakto, ke tuj esperanto estas unu de lingvoj, al kiu oni povas traduki kaj, de kiu oni povas traduki. Mi tuj faris kelkajn provojn, kaj rimarkis, ke la kvalito estas sufiĉe bona por kompreno. Mia plej bona tradukilo (eo>pl) estas komparebla kun googlo. Aliaj estas pli malbonaj. Programo Esperantilo estis longe la sola tradukilo, kiu povas traduki al pola kaj germana lingvoj. Nun la situacio ŝanĝiĝis.

Unuaj testoj

Mi havas fakan intereson taksi la kvaliton kaj eblojn de tradukilo de googlo. Post la ŝoko mi komencis fari kelkajn testojn. Mi tradukis de esperanta lingvo al pola lingvo. Mi rimarkis en pola rezulto kelkajn anglajn vortojn. Do ŝajne googlo uzas la anglan lingvon kiel interlingvo! Ridinde, ke oni frue vidis Esperanton en tiu rolo.

Do la nomo „Vera Jeruslanova“ estis tradukita al „True Jeruslanova“.

Mi volas scii, ĉu googlo tradukas po unu frazo aŭ kelkajn frazojn kune.
Jen la testo:

  • Mi legis la libron. Ĝi estis tre longa. > Czytałem książkę. To była bardzo długa.

Alia ekzemplo.

  • Mi legis la raportaĵon. Ĝi estis longa. > Czytałem raport. To była długa.

Mi ne povis trovi la ekzemplojn, en kiu la unua frazo influos la tradukon de la dua frazo.
Do ŝajne la frazoj estas tradukitaj tute sendepende.

Aliaj malfacilaj aspektoj de pola gramatiko

  • Mi aĉetis la libron kaj legis ĝin. > Kupiłem książkę i ją przeczytać.

Tie la tradukilo ne sukcesis kunligi la subjekton kun du verbojn.

Ordo do vortoj en frazo.

  • Mi legis la libron. Czytałem książkę.
  • La libron mi legis. Książka czytam.
  • La libron legis mi. Książka czytam.
  • Legis mi la libron. Czytałem książkę.

Esceptoj de pola akuzativo

  • Mi havas libron. Mam książkę.
  • Mi ne havas libron. Nie mam książkę.
  • Mi ne havas tiun libron. Nie mam tej książki.
  • Mi havas kvin librojn. Mam pięć książek.
  • Mi ne havas kvin librojn. Nie mam pięciu książek.

Mi volas scii, ĉu googlo iom konas la gramatikon de la lingvo. La testo estas traduki sensencajn sed gramatike korektajn frazojn.

  • Mi legis la interesan libron. Czytałem interesującą książkę.
  • Mi legis la interesan arbon. Przeczytałem ciekawy drzewo.
  • Mi legis la amikan pluvon. Czytałem na przyjaciela prysznicem.
  • La mondo miras pri tio. Cuda świata na nią okiem.

Je malpli granda la verŝajneco de la frazo des pli mirindaj estas la tradukaj rezultoj.
De la dua ekzemplo oni vidas, ke la tradukilo ne povas kunligi la genron de la vorto „interesa“ kun vorto „arbo“. Tio iom surprizis min, ĉar mi pensis, ke iel google programo zorgas pri gramatiko (rekonas vortgrupojn kaj reguloj de tio).

Komparo de Esperantilo kun G-Tradukilo

Mi prenis miajn ekzemplajn frazojn kaj tradukis per googlo. Tiuj frazoj estas elektitaj por kovri la ĉiujn aspektojn de pola kaj esperanta gramatiko. La rezultoj estas tie. 17% de tradukoj estas tute identaj. Mi pensas, ke nun tradukado al pola lingvo en Esperantilo estas pli bona ol tiu de G-tradukilo.
Interese estos kompari tiujn rezultojn post ioma tempo kaj vidi de tiu ĉu googlo daŭre plibonigas la tradukilon. De la komparo de tradukoj oni tre bone vidas la specialajn trajtojn de statistika tradukado. Relative ofte la tradukilo de googlo eraras pri la vorteto „ne“. Estas malgranda vorteto, sed ĝi kaŭzas tute malan sencon. Ofte la negado aperas tute surprize. Mi supozas, ke se la vortkombino aperas ofte kun negado, la tradukilo aplikas la negadon, eĉ se en fonta teksto ĝi ne estas. Ofte ĉe la traduko aperas alia tempo de verboj. De venonta tempo iĝas nuna tempo. Ankaŭ ĉe tiu oni sentas la anglan interlingvon. Oni rimarkas multajn erarojn, kiuj radikas en malforto de angla lingvo. Surprizaj estas ankaŭ kelkaj tradukoj, kiuj tute ne havas rilaton kun la fonto. Oni ne povus eĉ imagi kiel la maŝino konstruis tian strangan rezulton. Ekzemple: (Laŭ la frukto oni arbon ekkonas. Zgodnie z drzewa owocowego przyjeżdżasz do zrealizowania.).
Tiuj frazoj rememorigas al anekdotoj pri maŝina tradukado de 60-aj jaroj.
La statistika tradukado estas iom danĝera, ĉar ŝajne la programo insiste volas konstrui iun sencan tradukon, ankaŭ, se ĝi tion tute ne kapablas. En tiu kazoj por mi estus pli bone, se la tradukilo ĝentile diris: „Mi ne povas traduki tiun frazon“ aŭ avertis, ke la rezulto ne estas fidinda.
La unuopaj vortoj, kiuj tute ne estis tradukitaj, aperas en la fonta teksto sen iu marko. Sed eble tiu estas konscia decido de googlo. Oni eble volis fari la funkciadon tute simpla sen iuj specialaĵoj. Mi povus pensi, ke googlo tute ne volas, ke profesiaj tradukistoj uzas googlo kiel unua ŝtupo de ilia laboro kaj tiel ne helpas al tiu grupo. Por profesiaj tradukistoj google havas alian produkton (google toolkit).

Oni ankaŭ povas vidi, ke googlo ne regas morfologion (vortkonstruon) de esperanto. Ĝi ne rekonas participojn kaj ankaŭ ne povas diveni sencon de vorteroj.

Sed mi ankaŭ rimarkis kelkajn tradukojn, ĉe kiuj googlo estis pli bonaj ol tiuj de la esperantilo. Temas ĉefe pri gramatike esceptaj frazoj aŭ oftaj parolturnoj, kiujn oni tradukas speciale. Tie oni klare vidas avantaĝojn de statistika metodo. Do la nombro de tiuj frazoj ne estas alta.

Ekzistas ankaŭ multaj aliaj trajtoj, kiujn oni povas kompari. Bedaŭrinde unue mi devus programi ilaron pro tio. Interesa estus demando, kiom granda estas la nombro de konataj esperantaj vortoj aŭ kiaj estas tiuj tekstoj, kiujn uzis googlo por trejnado de sia tradukilo. Ĉu oni povas de la rezultoj de tradukado trovi la heredan tekston.

Statistika Metodo

Googlo nomas sian metodon de maŝina tradukado ankaŭ la datumorienta metodo (angle: „data-driven approach“). Sed temas pri tradicia statistika metodo. En tiu metodo oni uzas la tre grandan kvanton de paralelaj tekstoj. Temas pri teksto, kiu ekzistas kiel origina teksto kaj kiel la tradukado al alia lingvo. Do la havebleco de paralelaj tekstoj (datumaro) estas tre grava en tiu metodo. La metodo baziĝas sur verŝajneco. La komputilo tradukas kutime po unu frazo. Unue oni trovas la plej verŝajnajn tradukojn de iu frazo kaj poste elektas la plej verŝajnan frazon en cela lingvo. Praktike la konstruo de tia tradukilo estas en du ŝtupoj. Oni unu konstruas bazon por rapide kalkuli la verŝajnecon de frazojn. En tiu fazo la tradukilo ŝajne mem lernas traduki de paralelaj tekstoj. En la dua fazo, la tradukado mem, la komputilo nur devas konstrui frazojn kaj kalkuli verŝajnecon.

Ĉe tiu metodo la detala lingva kono, gramatikaj reguloj aŭ vortaroj ne estas necesas. La evoluo de statistika metodo estas limigita ĉe konstruo de algoritmoj, kiuj povas pli rapide kaj ekzakte kalkuli verŝajnecon de pli malgranda kvanto de paralelaj tekstoj. La detalaj informoj oni trovas en la unua fama scienca laboraĵo.

La statistika metodo laboras bone por gramatike similaj lingvoj. Do la rezultoj estas kutime pli bonaj por lingvoj, kiu havas similan fleksion kaj vortordon. La sciencistoj longe laboris pri tielnomataj matematikaj lingvaj modeloj, kiuj plej bone povas speguli la elektitajn lingvojn. Lingvo modelo en statistika metodo estas ĉefe nur funkcio por verŝajneco de iu vorto ĉeno por elektita lingvo kaj traduko inter du lingvoj.

Ekzistas du tre grandajn avantaĝoj de statistika metodo. La programo kvazaŭ povas lerni de tekstoj kaj la kvalito de traduko dependas de tempo kaj forto de komputilo. Oni povas plibonigi la tradukilon havante pli da paralelaj tekstoj sen iu programado aŭ homa laboro. La metodo estas ideala por la firmao googlo. Ili havas grandajn komputilajn fortojn kaj grandegan bazon de tekstojn. Googlo vidas ĉiujn en la reto per siaj robotoj kaj la firmao povis ankaŭ skani multajn librojn. Tial oni ne povas bone kompari la kvaliton de programo kiel Esperantilo kaj google tradukilo. Povus esti, ke la rezultoj, kiujn mi ricevis el la publika paĝo de googlo estas malalta, ĉar googlo ne volas, ke komputilo multe kalkulas sed faras tiom rapide. Do la kvalito estas nur unu de parametroj de tradukilo. Eble googlo povus kontraŭ mono aŭ por elektitaj uzantoj fari pli bonan tradukon. Tion mi ne scias.

Senkosta servo de Googlo

Estas por multaj enigmo kial la firmao googlo oferas senkostaj servoj por uzantoj. La rezulto de tiu enigmo estas simpla. La servoj ne estas senkostaj. Nur oni pagas alie. Oni pagas per personaj datumoj. Oni devas ankaŭ rimarki, ke googlo ne oferas programon sed nur servon. La firmao povas tre rapide ŝanĝi la uzadon de servo aŭ tute haltigi ĝin. Ĉiun teksto, kiun oni tradukas, fariĝas datumaro de googlo. Oni devas pripensi, ke ankaŭ ĉiu, kiu kontrolas la reton, scias ĉiom, kion oni tradukas. La traduka servo ne estas sekurigita per enigmaj metodoj. Oni imagu, ke la iu disidento uzus googlo por traduki iun tekston kontraŭ registaro. Googlo kaj la registaro mem, kiu kontrolas la konekton kun la reto tuj, eksciis pri tio. Mi ne scias, ĉu ĉiu uzanto de la reto scias pri tio.

Googlo uzas la tradukilon ĉe kelkaj propraj servoj. Oni povas traduki la simplan nudan tekston tuj en retumilo. Frue oni povis enskribi la adreson de ttt-paĝo, kiun oni povas traduki. Nun la tradukado de paĝoj estas eble nur en la retumilo Chrome, kiu estas produkto de googlo.
La tradukilon oni povas ankaŭ uzi en mobiltelefona operaciuma sistemo android kaj aliaj servoj de googlo. Googlo uzas la tradukilon kiel baza servo por kreski la valoron (uzeblecon) de aliaj servoj. Eble iam la maŝina tradukado estas same memkomprenebla funkcio de iu programo kiel nune la literumado aŭ eltondi&interglui (copy&paste).

Al Kiu apartenas la scio de la statistika tradukilo

La statistika tradukilo povas iel lerni de aliaj tekstoj. Googlo uzas la plej grandan bazon de teksto (la reton) por nutri siajn komputilojn. Tial ĉiuj, kiuj iam tradukis tekstojn, partoprenis malrekte en la envolvo de tiu tradukilo. Multaj demandoj estus interesaj en tiu kunteksto. Demandoj pri rajtoj, propraĵo, elspezo, patentoj kaj laborpago. La statistika tradukado estas unu en la kampoj de googlo, kiu tuŝas tiun temaron.

Mi pensas, ke la servo „google translation toolkit“ estis farita ankaŭ por kolekti datumaron por plibonigo de tradukilo. Tradukistoj, kiuj uzas tiun servon, helpas ankaŭ al plibonigo de tradukilo kaj faras ilian laboron fine malpli bezonatan. Tiu estas nuntempe ofta komerca modelo en la reto. Oni oferas servojn kaj uzantoj per ilia uzado lasas iun datumaron, kiun oni povas uzi en alia maniero komerce kaj fine enspezi per tio monon. Mi longe ne kredis, ke tiu nedirekta metodo funkcius.

Googlo gajnos ĉiam

Mi ne scias, kiel taksi la plibonigon de maŝina tradukado en la kunteksto de Esperantistaro. Bedaŭrinde frue ofte oni varbis por Esperanto kun la argumento, ke la maŝina tradukado neniam estos uzebla. Nun oni vidas, ke tiu maŝina tradukado iĝas kutima ilo, kiun povas uzi preskaŭ ĉiu. Oni povas atendi, ke la kvalito de tradukado kreskos.
Esperanto estas nur la 64-lingvo de G-tradukilo, tamen la unua artefarita lingvo, kiun subtenas la programo. Aperis kelkaj tekstoj en la rete en kiuj kelkaj homoj eĉ plendis pri firmao googlo, ke ĝi okupas pri iu artefarita lingvo kaj same ekzistas multaj naturaj kaj naciaj lingvoj kiuj ne estas subtenataj. Nun oni povas nur timi, ke googlo iam forigus Esperanton de ilia servo. Tiu estus kiel fina malvenko de Esperanto.

Due la subteno de Esperanto de googlo igis aliajn tiajn projektojn preskaŭ vanaj. Ankaŭ, se ekestos iu ilo, kiu povus traduki pli bone ol googlo tradukilo, oni povus tuj uzi tiun ilon por lerni la googlo tradukilon mem. Do goolgo ĉiam havos pli la uzantoj kaj pli da datumaro.

Eble Esperantistoj kaj lingvistoj povus pli serioze pritrakti la maŝinan tradukadon kaj komputilan lingvistikon. Aliaj projektoj povus profiti aŭ ekestus novaj projektoj. Eble en tiu kunteksto Esperanto denove estus interesa kiel eksperimenta kuniklo de sciencistoj. Esperanto estas bona lingvo kaj eble ankaŭ bona por komputiloj. Imagu, ke Googlo uzos Esperanton kiel maŝinan interlingvon nur ĉar tio garantias pli bonan kvaliton de tradukado. Por komputilo estas tute egale, kiun lingvon ĝi uzas (kalkulas). La lingvo estas por komputilo nur datumaro. Ĉu tiu ebla uzado havus iun influon je Esperantistaro. Esperanto estas artefarita sed Esperantistoj havis ĉiam la revon, ke ilia lingvo estas uzata tute nature.

Mi ankaŭ ne povas klare imagi, ĉu la ekzisto de maŝina tradukilo pligrandigos la kvanto la esperantaj tekstoj en la reto.
Unue oni povas nun facile traduki la tekston de fremda lingvo kaj poste korekti ĝin. Due oni eble ne tradukus, ĉar ĉiu povus mem fari tion kaj eĉ uzi kiel celan lingvon la propran nacian lingvon. Se la kvanto de esperantaj tekstoj pligrandigos eble post tiam plibonigos la kvalito de g-tradukilo. Do povas ekesti pozitiva mem pligrandiĝanta efekto.

Situacio de Esperantilo

Nun la kvalito de tradukilo de Esperantilo estas nur por pola lingvo senteble pli bona ol la G-tradukilo. Ekzistas kelkaj argumentoj por uzi la Esperantilon aŭ aliaj tradukiloj.

  • Esperantilo pli zorge pritraktas la negadon.
  • Esperantilo regas la morfologion de Esperanto.
  • Esperantilo neniam tradukas tute malprave.
  • Esperantilo avertas pri problemoj ĉe tradukado per diferencaj markoj.
  • Oni povas mem influi la tradukan vortaron.
  • Oni povus mem modifi la programon,
  • La programo estas malferma kaj libera. Neniu povus iam malŝalti ĝin.

Mi estas tamen konscia, ke por multaj uzantoj de la reto la uzado de g-tradukilo estos same memkomprenebla kiel la uzado de la g-serĉilo mem.

Por mi la nova situacio signifas, ke mi verŝajne ne plu laboros pri maŝina tradukado al aliaj lingvoj sed koncentriĝos nur pli pola lingvo. Por mi estas ankaŭ bona afero povi kompari la propran programon kun la alia programo. Mi dezirus, ke tiu alia programo ankaŭ estas libera kaj malferme, sed oni ne povas havi ĉion.
Ekzistas ankaŭ kelkaj funkcioj de programo Esperantilo, kiuj ankaŭ estas utilaj por uzantaro kaj kiuj googlo eble neniam faros. Temas ĉefe pri analizo de esperanta teksto mem, korektado kaj taksado.

2.1.2012

Esperantilo tradukas al rusa lingvo

Filed under: maŝina tradukado,programado — artur @ 21:49

En la jaro 2011 mi eldonis nur unu eldonon de Esperantilo (0.993). La ĉefa novaĵo de tiu eldono estas la maŝina traduko al rusa lingvo. Frue mi eldonis monate, sed nur mi preskaŭ ne havas tempon por ŝatokupoj.

Mi feliĉe trovis kelkajn bonajn lingvajn fontojn en la reto kaj povis krei la tradukan vortaron por rusa lingvo. Mi skribis pri tio tie. Aldone al vortaro de Revo mi uzis tre bonan kaj sufiĉe kompletan gpl-an vortaron de Juri Fink.

Kompare al tradukado por pola lingvo oni povas multe fari por plibonigi la tradukadon.

  • por multaj verboj mankas gramatikaj priskriboj (aspektoj)
  • por multaj substantivoj mankas priskribo pri genro
  • nombrovortoj (vere malsimplaj en slavaj lingvoj)

Mi esperas, ke multajn tiujn informoj mi povas gajni de rusa wictionary

Mi devas pristudi la ekzemplajn tradukojn. Ĉu iu havus tempon por mane traduki la ekzemplojn? Tio certe helpus, ĉar mia kono de rusa lingvo estas nur baza. Bonvolu kontakti min!

Aldone Esperantilo nun povas aŭtomate rekoni la enkodon kiel (iso-8859-?, unikode, kio8-r, …). Mi volas ankaŭ en estonto modifi la programon en tiu maniero, ke la programo mem provu diveni, kion la uzanto volas kaj fari multajn taskojn aŭtomate.

18.7.2011

Lingvaj rimedoj por rusa lingvo

Filed under: lingvistiko,maŝina tradukado — artur @ 20:45

Mi ofte vane provis trovi en la reto lingvistikaj rimedoj (provizoj) por rusa lingvo. Mi povas bone kompreni la parolan rusan lingvon, sed mi ne bone legas kaj skribas ĝin. La pola lingvo kaj rusa lingvo estas tre similaj pro kuna slava heredo. Mi pensas, ke oni povas facile krei la maŝinan tradukado al rusa lingvo uzante la maŝinan tradukadon al pola lingvo. La fleksia sistemo estas preskaŭ la sama. Temen oni devus havi sistemon, kiu povas generi de vortara formo la celan formon laŭ kazo kaj nombro (por substantivoj).
La kreado de tiu sistemo estas tre komplika kaj oni devus tre bone koni la lingvon, do tion mi ne povas fari. Nun mi trovis en la reto sur pagoj de Serge Sharoff la liston de bazaj formoj kun gramatikaj priskriboj kaj ĉiuj feksitaj formoj. De tiu listo oni facile povus krei tian fleksilon. Mi spertis, ke fleksio kaj bona traduka vortaro estas la plej laborintensa takso ĉe maŝina tradukado, kiu bazas sur reguloj.

Ekzistas kelkaj diferencoj inter pola kaj rusa lingvo, kiuj postulus ŝanĝoj en tradukilo.

  • verboj ‚esti‘ kaj ‚havi‘ preskaŭ malaperis en rusa lingvo.
  • en pola lingvo adjektivo povas stari post substantivo.
  • la rusa lingvo konas pli la kunmetitaj vortoj.
  • En la rusa lingvo ekzistas pli da tipoj de participoj.

Ĉiuj aliaj diferencoj oni povus kovri per traduka vortaro.

La rusa komputila lingvistiko havas onidire tre longan tradicion, tamen tiu tradicio ne rezultis abundon de liberaj iloj kaj fontoj kiel la angla lingvo. Aŭ eble tiuj iloj ekzistas sed ne estas por mi troveblaj.

Nun mi devas havi nur sufiĉe da tempo kaj deziron programi tion.

8.3.2008

i18n per Esperantilo

Filed under: maŝina tradukado,programado — artur @ 14:35

Esperantilo enhavas funkcion de traduka memoro kaj ankaŭ la specialan redaktilon por tradukado de teksto laŭ segmentoj (frazoj).
Esperantilo regas formatojn TMX kaj XLIFF. Ĝi povas legi formatojn HTML, XML kaj OpenOffice.
Ŝajnas tamen, ke preskaŭ neniu uzas tiujn funkciojn. Unue tiuj funkcioj estas por averaĝa uzanto tro progresinta, ke li ne bezonas ilin. Due la programo eble estas tro ŝarĝita per funkcioj, ke uzantoj estas malcertaj, por kio tiu programo taŭgas.
Eble kelkaj homoj pruvis tiun funkciojn, trovis erarojn kaj lasis tion. Mi nenion eksciis pri tio. Nun havis antaŭ kelka tempo kontakton kun uzanto de OmegaT. Tiu programo estas plej konata traduka programo en modo de libera programado. Esperantilo estas ankaŭ listigita en la listo de programoj, kiuj oferas tradukan memoron. Mi ne varbis por tiuj funkcioj kaj tiuj funkcioj ne estas tre fidindaj kaj ne vere finprogramitaj. En la dua flako tiuj funkcioj estas ankaŭ interesaj por Neesperantistoj. Tial oni povus varbi per tiuj funkcioj por esperanta lingvo. Almenaŭ kelkaj homoj, kiuj uzas tradukan memoron, ekscius pri tiu lingvo.
Lastajn semajnojn mi laboris pri plibonigo de tiuj funkcioj. Mi trovis kaj korektis multajn erarojn. Mi ŝanĝis ankaŭ la metodon de konservado de traduka memoro kaj vortaroj. Nun mi uzas sqlite datumbazon. Tio tre rapidigis la laboron de programo. La maŝina tradukado iĝis eĉ 6 foje pli rapida.

Tradukado de programoj

Esperanto enhavas potencan tradukan memoron kaj povas iel maŝine traduki de angla lingvo al esperanta lingvo. Do la programo povus esti interesa por tradukado de programaro. Mi rigardis kelkajn liberajn projektojn pri tradukado de programaro. Temas pri tradukado de angla lingvo al Esperanto.
Sekvaj projektoj estas plej grandaj kaj plej progresintaj:

Helpe de Translate toolkit mi kolektis ĉiujn tradukojn en unu grandega datumaro.
Mi aliformis la diferencajn formatojn por tradukado al XLIFF-formato. Poste mi importis ĉiujn XLIFF-dosieron al traduka memoro de Esperantilo. Tio daŭris kelkajn horojn.
Ne estis ankaŭ faĉile trovi ĉiujn fontojn de tradukadoj en la reto.
Fine mi havas 24MB grandan tradukan memoron kun 58.000 tradukitaj frazoj.
Estas interese, ke antaŭ 20 jaroj nur kelkaj registaroj de plej riĉaj landoj havis sufiĉe grandan komputilon por prilabori tiun amason da datumoj.
Tio estas bona fonto por sekvaj laboroj. Oni povas uzi tiun tekstaron tre diference.
Ĝi povus helpi ĉe traduko de aliaj programoj. Mi pensas ankaŭ pri aŭtomata kredo de vortaroj de tiu datumaro. Mi jam eksperimentis pri tio kun pola lingvo.

Antaŭ 4 jaroj, kiam mi komencis okupi pri komputila lingvistiko kaj Esperanto, tiu datumaro ne estis ebla. Estas tre ĝoige, ke Esperanto evoluas en libera programado. Tiu nuna bazo povus eĉ plirapidigi la disvastigon de Esperanto en tiu kampo.

Enkoduko – Kiel uzi Esperantilo por i18n

Unue instalu la plej novan eldonon de Esperantilo. Mi preskaŭ ĉiumonate pretigas novan plibonigitan eldonon.

Due ŝarĝu tm_en_eo.tmsql.gz la tradukan memoron por tradukado de angla al esperanta lingvo. Depaku tiun dosieron kaj kopiu ĝin al loko ~/Esperantilo aŭ sur Vindozo al dosierujo Esperantilo en dosierujo de uzanto (en angla eldono C:/Documents and Settings/uzanto/).

Lanĉu Esperantilon. Unue vi povas trarigardi la tradukan memoron. Tial vi ankaŭ provos, ke la importado de traduka memoro sukcesis. Agordu la fontan lingvon kiel angla lingvo kaj cela lingvo kiel Esperanto. Vi povas uzi por tiu menuon „Preferaĵoj->fonta lingvo“ kaj „Preferaĵoj->cela lingvo“ aŭ uzi la flagajn butonojn.

Flagoj en redaktilo

Lanĉu la redaktilon de traduka memoro per menuo: „tradukado->Traduka Memoro->redaktilo de traduka memoro“.

Redaktilo de Traduka Memero

Nun vi povas prepari la tradukadon de via ŝatata programo de angla lingvo al esperanta lingvo. Vi unue bezonas la fontan dosieron en formato XLIFF. Vi povas uzi la programon po2xliff de projekto Translate toolkit por transformi kutiman po-dosieron al xliff-dosiero.
Nun vi povas lanĉi la tradukan asitanton de Esperantilo.
Uzu por tio la menuon „Tradukado->Tradukado asistanto“.

asistanto de segmentilo

Vi povus ankaŭ lanĉi la redaktilon de xliff direkto de konsolo

./esperantilo.bin -segmentilo
./esperantilo.bin viadosiero.xliff

Vi elektu la fontan lingvon kiel angla lingvo (en) kaj celan lingvon kiel Esperanto (eo). Poste vi povas traduki la projekton per tn. traduka segmentilo.
Vi tradukas po unu elemento (segmento).
Kutime la programo pruvas traduki la frazon maŝine. Se ekzistas la traduko en traduka memoro, vi povas akcepti tiun tradukon.
Oni povas ankaŭ traduki la tutan dosieron aŭtomate per funkcio „Traduku al fino plenu aŭtomate“ aŭ traserĉi la tekston laŭ traduka memoro per funkcio „Prenu tradukojn de traduka memoro“.

XLIFF redaktilo

Trarigardo de tradukado

Nun mi kolekti pli ol 50000 tradukoj kaj havis okazon iom trarigardi tiujn tradukojn.
Mi unue serĉis la tradukon de „close window“ kaj trovis:

  • Fermu fenestron
  • Malfermu fenestron

Interesa eraro. Mi ankaŭ ĝin iam faris. Kaj poste nur „Close“ mi trovis

  • Fermi
  • Fermu

Mi mem preferas la ordonan formon, ĉe ja temas pri komando do ordono. Kutime oni tradukas en naciaj lingvoj tiujn komandojn kiel ordonoj. En germana lingvo oni uzas infinitivon („Schliessen“). Sed en germana lingvo oni ĝenerale ofte uzas tiun formon kiel ordono (senpersona ordono) „Arbeiten! Arbeiten!“, eble ankaŭ mallongigo de „Arbeiten Sie!“. Ankaŭ la angla lingvo uzas ordonon, la infinitivo estus „To close“.
Mi ŝatas la formon „u“, kiu ne nur estas ordono, sed ankaŭ povas esti sugesto.
Oni povus fari interesajn studojn sur tiu materialo.
Mi pensas pri aŭtomata kreado de vortaro.

Planoj (TODO)

Nun ekzistas multaj punktoj en programo, kiujn mi volas plibonigi. Mi rimarkis, ke mankas kelkaj funkcioj. Ekzemplo markilo por statuso de tradukado („akceptita“).

Fina vorto

Mi esperas, ke kelkaj homoj uzos Esperantilon por tradukado de programaro.

30.12.2007

Projekto Apertium

Filed under: maŝina tradukado,programado — artur @ 12:24

Antaŭ kelkaj tagoj unu de programistoj de projekto Apertium sciigis al mi, ke tiu projekto pri maŝina tradukado nun enhavas modulon, kiu tradukas el hispana lingvo al esperanta lingvo. Feliĉe la projekto apartenas al malfermaj projektoj, kiuj naskiĝis kiel universitata projekto. Mi povis senprobleme elŝuti, instali kaj detale trarigardi la projektojn. Tio estas tre ĝojiga afero, ĉar eĉ universitataj projektoj plej ofte estas fermaj kaj formortas. La projekto ekzistas kiel malferma projekto jam 2 jaroj, tamen mi frue ne sciis pri ĝi.

Apertium estas traduka modulo kaj aro de lingvistikaj iloj por malprofunda tradukado inter similaj lingvoj. Malprofunda tradukado signifas, ke la programo ne faras plenan sintaksan analizon de teksto. Tamen tio sufiĉas, ke 90% de frazoj estas tradukitaj bone inter similaj lingvoj. La projekto unue pritraktis la tradukadon inter la lingvoj: kataluna kaj hispana. Tiu tradukado estas nun ankaŭ uzata por maŝina traduko de artikoloj de iu hispana gazeto.

Nun la projekto subtenas multajn lingvajn parojn. Inter alie Hispana al Esperanto, aŭ Angla al Pola lingvo. Mi kalkulis 26 lingvajn parojn. La projekto evoluas tre vigle.

Pri teknikaj aferoj de tiu projekto oni pli bone legu la dokumentojn sur pago kun dokumentaro de projekto. Pli detalajn informojn oni trovas sur vikio de projekto.
La instalado de tiu projekto estas nuntempe eble nur sur Linukso kaj eble nur fare de iom sperta komputisto.
Ekzemple la traduka modulo de hispana al esperanta lingvo troviĝas nur en la SVN-programarkivo (repository). Oni devas mem elŝuti kaj instali en fiksa ordo kelkajn modulojn. La dokumentaro ne estas tre detala, kaj ofte ne plu aktuala. Do mi mem devis trovi, ke oni nun devas uzi la modulojn lttoolbox-unicode kaj apertium-unikode, kiuj havas internajn numerojn 3.0. Oni uzu ankaŭ la programon „apertium“ kaj ne „apetium-translation“, kiel tion priskribas malnova dokumentaro. Finfine mi sukcesis kompili kaj lanĉi la tradukadon. Mi ne konas la hispanan lingvon, do mi prenis iun hispanan tekston de la reto kaj tradukis ĝin al esperanta lingvo. La traduko estis komprenebla, tamen ekzistas multaj gramatikaj eraroj. Oni povas mem testi la programon direkte per la interreta interfaco.

Mi estis tre scivolema pri la tekniko de programo. La programo estas farita ĝenerale por multaj lingvoj. Tamen la programistoj plejparte prizorgis romajn lingvojn. Apartium estas programita helpe de C kaj C++. Ĝi uzas ofte la teknikon Finite state machine“. Ĉiuj lingvaj informoj estas unue enskribitaj en XML-formato. Poste la programo kompilas tiujn XML-dosierojn al maŝina formato. Por transformoj estas uzataj priskriboj en XML-formato, kiuj estas kompilitaj per yacc al C-programo. La uzado de programlingvo C/C++ kaj diversaj kompiloloj igas la programon tre rapida. Tre valoraj estas moduloj por morfema analizo kaj fleksio de vortoj. Tio estas tre praktika alveno al tiuj problemoj, kiu estas konata de operaciuma sistemo Unikso. La programo uzas la saman priskribon por ambaŭ taskoj. En la dosiero oni trovas la tutan difinon de esperanta fleksio. Por esperanta lingvo tiu dosiero ne estas sensacia, sed por naciaj lingvoj tiuj datoj estas tre valoraj, ĉar kutime la fleksio de naciaj lingvoj estas tre escepta kaj oni bezonas longan tempon por difini ĝin. La hispana-esperanta vortaro enhavas 12000 vortojn. La formato estas legebla por komutilo. Ekzistas aldonaj informoj pri genro kaj gramatiko. Tre bona laboro kaj vara lingva trezoro!

Laŭ mia nuna pritakso la projekto havas vere la ŝancon iĝi la Linukso de maŝina tradukado. Tion celis ankaŭ la iniciatantoj de tiu projekto. Tio povus sukcesi kaj jam multaj homoj laboras pri aldonaj lingvaj moduloj. Mi ankaŭ iom studis la tradukan modulon de angla lingvo al pola lingvo. Tiuj lingvoj estas tre diferencaj, kaj jam de priskriboj de aŭtoroj de projekto la programo ne estas konstruita por tradukado inter tiel malsamaj lingvoj. Pli bone estus la tradukado inter pola, ĉeĥa, slovaka kaj rusa lingvoj per Apertium. Ŝajne la bezono de tradukado inter pola kaj angla lingvoj estas tiel alta, ke eĉ la malsugestoj de aŭtoroj ne haltigas de evoluo de tiu modulo. Mi tute ne konas la hispanan lingvon, sed mi ankaŭ supozas, ke Esperanto kaj hispana lingvo ne estas idealaj lingvoj por malprofunda tradukado. Mi pensas, ke tiu projekto povus esti bona komenco por aliaj pli profundaj tradukadoj.

Nuntempe por kutima uzanto nur la interreta interfaco estas interesa. En la projekto mem ne ekzistas iu uzula interfaco (GUI). Sed tiu interfaco estas atendata de multaj uzantoj. Se tiu projekto estos daŭre tiel sukcesa, eble iam ekestos modulo por OpenOffice kaj aliaj interfacoj. Tio eble tre helpos al malferma programado de tiaj projektoj. Mi ne scias, ĉu oni povas kurigi la programon sur Vindozo. Mi supozas, ke oni devus adaptigi unue la kompilan sistemon por Vindozo.

La projekto Apertium havas multajn kondiĉojn, por esti sukcesa malferma projekto. Ĝi enhavas tre stabilajn ilojn, kiujn oni povas jam uzi. Hispana universitato subtenas la evoluon. Tio garantias, ke aroj de studentoj devige interesiĝas pri la projekto. La projekto estas jam sukcese uzata en realaj kondiĉoj. La sukceso estas la plej granda magneto de tiuj projektoj.

26.11.2007

Esperantilo tradukas al sveda lingvo

Filed under: maŝina tradukado,uzantoj — artur @ 19:48

De eldono 0.97 Esperantilo tradukas ankaŭ al sveda lingvo. La nova traduka modulo por maŝina tradukado estas la rezulto de kunlaboro kun KaGu. Li jam frue kelkfoje skribis al mi kaj demandis pri kelkaj afero rilate al Esperantilo. Li estas fascinigita de ideo de maŝina tradukado kaj ne havis ĉikoncernajn iluziojn, Finfine mi decidis komenci la programadon de sveda modulo. Mi legis iom pri sveda lingvo sur angla, germana kaj pola vikipedio. La sveda lingvo apartenas al familio de germanaj lingvoj.
La ideo estis reuzi la germanan modulon por programado de sveda tradukado. Poste tamen mi decidis reuzi la anglan modulon, ĉar ŝajnis al mi, ke angla lingvo estas pli simila al sveda lingvo. KaGu havas ankaŭ kelkajn spertojn pri komputiko kaj programado. Frue li ankaŭ okupis pri alia komputila traduka sistemo. Do mi kreis la svedan modulon kiel kopio de angla modulo kaj preparis la EsperantiloSDK, por ke KaGu mem povu adapti la tradukadon. Mi markis speciale lokojn en programa kodo, kiuj devos estas finprogramitaj aŭ modifitaj. En la blogo mi priskribis kiel programi la Esperantilon. KaGu ankaŭ tre rapide tradukis mane kelkcent ekzemplajn tradukojn. La unua eldono estis farita tre rapide kaj KaGu povis eĉ mem modifi kelkajn lokojn en programo. Li ankaŭ raportis al mi multajn problemojn kaj klarigis la defioj de sveda gramatiko.

Pri sveda lingvo

La sveda lingvo estas por mi la lingvo, kiu estas inter angla kaj germana lingvoj. En sveda lingvo ne ekzistas kazoj por substantivoj. La ordo de vortoj estas tre rigida. La sistemo de tempoj estas simila al angla lingvo. Sed la svedaj adjektivoj havas fleksion, kiu estas pli simila al germana lingvo. La sveda lingvo havas ankaŭ kelkaj trajtojn, kiuj estas por mi tute nomaj. Ekzemple la difinilo „la“ estas esprimata en sveda lingvo kiel finilo. La negado de verboj „ne“ okazas post la verbo. En sveda lingvo ekzistas 2 genroj, kiuj influas la difinilojn kaj atributojn. En sveda lingvo ekzistas tuta familio de verboj, kiuj ekzistas nur en pasivo (tn. deponens). Tio kaŭzis, ke mi devis adaptigi la originalan anglan modulon por sveda lingvo. Parte mi povis uzi la solvojn konatajn de germana lingvo. Alikaze mi devis elpensi solvojn tute denove.

Dum programado mi frue rimarkis, ke informoj de vikipedio ne sufiĉas. Fleksio de verboj kaj substantivoj ne estis priskribita detale. Ankaŭ KaGu ne povis doni al mi precizajn informojn pri reguloj de fleksio, ĉar li uzas la lingvon sen kono de reguloj kaj esceptoj. Finfine mi trovis la plej detalaj informoj sur iu rusa ttt-ejo pri sveda kulturo. La identigo de svedaj specialaĵoj evidentigis kiel la plej malfacila parto de laboro. Ĉe tiuj problemoj restas nur unu eblo. Oni tradukas kaj testas multajn tekstojn mane kaj provas trovi iujn regulojn. Tiun laboron povas fari nur KaGu, ĉar por mi svedaj vortoj restas nur aroj de literoj.

Kunlaboro estas ebla

Tio estas pro mi la unua fojo, kiam mi kunlaboris ĉe programado de Esperantilo kun iu tiel intense. Ni interŝanĝis multajn leterojn, iufoje eĉ kelkaj leteroj pro tago. La spertoj estas jenaj. Oni devas havi multe da tempo kaj volo. Evidentiĝis por mi, ke la programado kaj eĉ uzado de Esperantilo ne estas facila. Mi havis la okazon ekscii ion pri tiuj problemoj. Sen longaj plurfojaj klarigoj kaj reklarigoj nenio sukcesis.

Mi nur poste eksciis, ke KaGu estas delonge pensiulo. Tio estas jam la dua fojo, kiam mi ricevis grandan helpon de pensiulo. Por mi ŝajnas nun, ke nur pensiuloj havas tempon kaj necesan persiston. La eblojn de tiu grupo de homoj estas eble ne sufiĉe alte pritaksataj.

Certe. La programado de Esperantilo kaj sveda modulo ne estas finita. Oni daŭre povas plibonigi la kvaliton de tradukado. La kvalito dependas je algoritmoj en programo kaj vortaro.

Fina vorto

En vikipedio mi legis, ke sveda lingvo ne estas granda lingvo rilate al la nombro de parolantoj. Nur 9 milionoj da homoj parolas tiun lingvon. Tamen ofte oni ne bezonas miliono homojn sed nur unu konkretan.

Nun restas iom pli komplikaj kazoj, kiuj ne estas tradukataj korekte.
Nun ni trovis la bonan vojon de kunlaboro. KaGu priskribas la problemojn kaj donas ekzemplojn kaj mi programas.
Ni uzas pro tiu la dokumenton sur Google-docs.
Tio estas facila eblo redakti kune unu dokumenton.
Feliĉe ni ambaŭ sukcesis senprobleme uzi tiun sistemon.

La sveda vortaro estas en respondeco de KaGu.
Li plivastigas kaj modifas la vortaron kaj fine sendas al mi nur ŝanĝojn, kiujn mi importas en la gepatran vortaron, kiu troviĝas sur mia sistemo.

Sekva eldono de Esperantilo tradukos al sveda lingvo eĉ iom pli bone ol al la angla lingvo.

3.11.2007

Maŝina tradukado: angla lingvo al esperanta lingvo

Filed under: angla lingvo,maŝina tradukado — artur @ 13:30

La plej bezonata maŝina tradukado estas la tradukado inter iu nacia lingvo kaj angla lingvo. Bedaŭrinde la angla lingvo estas tre komplika lingvo por sintaksa analizo. Aliflanke tiu lingvo estas la plej bone esplorita lingvo en komputila lingvistiko. Antaŭ kelkaj monatoj mi eksperimentis pri maŝina tradukado de pola lingvo. Tiu tradukado nuntempe estas tute taŭga. Mi pensis ankaŭ pri maŝina tradukado de angla lingvo. Por tiu tasko la plej grava estas bona sintaksa analizo.
Mi denove traserĉis la interreton kaj ekkovris kelkajn liberajn projektojn, kiuj okupas pri sintaksa analizo de angla lingvo. La plej okulfrapa estis la projekto „Link Grammar Parser“. Tiu universitata projekto liveris ne nur teoriajn rezultojn sed pretan analizilon por angla lingvo. La analizilo enhavas ankaŭ la tutan vortaron kaj priskribo de angla sintakso. Ankaŭ kelkaj aliaj projektoj uzis tiun programon. Tio estas bona indiko por kvalito de projekto. Mi trovis kelkajn projektojn, kiuj rilatas kun „link parser“.

Tiu analizilo estas ankaŭ programita per programa lingvo C. Tiun lingvon oni povas tre facile kunligi kun Tcl. Oni ja prave diras, ke Tcl estas la gluteno por programoj skribitaj en C. Mi devis nur programi mallongan interfacon inter Tcl kaj C. Tio estis farita en unu tago. Nuntempe fakte la programa lingvo C estas la plej universala programa lingvo, kiu rulas sur ĉiu komputilo sen ĝenaj premisoj. Tion oni ne povas diri pri la nuntempe populara programa lingvo „Javo“, kiu ĉiam faras problemojn, uzas tro da memoro kaj estas katastrofe malrapida.

Mi testis iomete la analizilon. Unue la analizilo rezultas ne sintaksajn arbojn sed la aron de ligiloj. Oni tamen povas facile konstrui de tiuj informacioj la sintaksan arbon. La analizilo povas ankaŭ trovi la gramatikan kategorion por ĉiu vorto. Tiu estas tre grava ĉe angla lingvo, ĉar tio estas en tiu lingvo tre ambigua afero. Kelkaj ekzemploj:

I read a book
       +---Os---+
 +-Sp*i+   +-Ds-+
 |     |   |    |
I.p read.v a book.n

I have written the computer program

               +-----------Os-----------+
               |      +--------Ds-------+
 +-Sp*i+---PP--+      |       +----AN---+
 |     |       |      |       |         |
I.p have.v written.v the computer.n program.n


De tiuj informoj oni relative facile povas traduki al esperanta lingvo. Oni devas simple analizi la ligilojn de vortoj. Tiel oni poves ekkoni, ĉu iu vorto estas objekto (en esperanto akuzativo). Tiuj subjektoj havas maldekstran ligilon kun simbolo „OS“. La unua malfacilaĵo estas, ke tiu analizilo ne trovas la bazajn formojn (vortaroj formoj) de vortoj. Do la programo devas mem diveni, ke la baza formo de „written“ estas „write“. Kelkfoje oni devas reordigi la vortojn (ekzemple ĉe negado aŭ angla genetivo father’s)
Mi programis unu semajnon la maŝinan tradukadon kaj la rezultoj ne estas malbonaj.

Do nun Esperantilo en eldono 0.97 tradukas tiujn du ekzemplajn frazojn.

I read a book. – Mi legas libron.
I have written the computer program. – Mi skribis la komputilan programon.

Por simplaj frazoj tio funkcias preskaŭ perfekte. La limoj troviĝas nun en la ebloj de analizilo „link parser“. Tiu analizilo estas por longaj frazoj malrapida. Feliĉe ekzistas la eblo interrompi la analizon de frazo, se la bezonata tempo estas tro granda. Nun mi tiel agordis la analizion, ke ĝi ne povas uzi por anlizo de unu frazo pli ol 30 sekundoj. Por uzanto la traduko de angla lingvo estas okulfrape pli malrapida ol la traduko en alia direkto. Mi pensas, ke pro tio la analizilo ne estas taŭgo por uzo en interreta traduka servo. Tio estas tro kosta afero. La analizilo havas ankaŭ problemojn kun parentezoj, citaĵojn kaj fremdlingvaj vortojn. Do ĝi komplete rifuzas la analizon, se en la teksto troviĝas fremdlingvaj singoj aŭ ĝenerale UTF-8 signoj. Do mi devis programi la alternativan tradukadon por frazoj, kiuj ne povas esti analizitaj de „link parser“. Tiu alternativa tradukado estas simpla vorta tradukado.

Ekzistas ankaŭ multaj aferoj, kiujn oni povas plibonigi. La plej grava afero estas la tradukado de ambiguaj anglaj vortetoj kiel „there, this, that, by, to, too, …“. Ofte oni devas nur analizi la legilojn por trovi la necesan tradukon.
Jen ekzemplo:

+--Ds-+--Ss-+--Pv--+--MVp-+-J+
 |     |     |      |      |  |
the book.n is.v written.v by me

         +---Js---+
 +-Ss+-Pp+  +--Ds-+
 |   |   |  |     |
he is.v by the table.n

La laboro ne estas facila. Ekzistas multega nombro de eblaj nomoj por legiloj. La dokumentaro de „link parser“ ne estas aktuala kaj kompleta. Do oni precipe devas simple testi multajn frazojn. La programo ne estas ŝajne plu evoluigita. La lasta eldono devenas de jaro 2005.

Jam kun tiu eldono mi rimarkis, ke la kvalito de tradukoj estas pli bona ol la kvalito de aliaj
atingeblaj tradukiloj inter angla kaj esperanta lingvo. Esperantilo nun povas bone traduki negadon, kompleksajn tempojn kaj rekonas akuzativon.

Por plibonigi la kvaliton la plej grava estus la plivastigo de vortaro. Do multa laboro estas ankoraŭ farinda. Kiel kutime mi iom post iom esperas plibonigi la tradukadon. Bedaŭrinde mia kono de angla lingvo ne estas tre bona. Mi delonge lernas tiun lingvon, sed ĝis nun havas problemojn. Ofte mi komprenas ĉiun unuopan vorton en la frazo, sed la tuta frazo estas por mi sensenca. Mi supozas, ke por samaj kialoj la konstruo de sintaksa analizilo por angla lingvo estas tiel malfacila.

14.10.2007

Kiel programi maŝinan tradukadon por nova lingvo en Esperantilo?

Filed under: maŝina tradukado,programado — artur @ 10:48

Iafoje mi ricevas leterojn de uzantoj de Esperantilo, kiu dezirus maŝinan tradukadon al ilia nacia lingvo. Esperantilo nun subtenas la maŝinan tradukadon al 3 lingvoj, sed mi nuntempe okupas nur pri pola lingvo. Estas ĝenerale konata fakto, ke programado de maŝina tradukado ne estas triviala tasko. Alikaze ni delonge havus multajn altnivelajn tradukajn programojn por multaj lingvoj. Fakte nur kelkaj profesiaj firmaoj agas en tiu kampo kaj nombro de subtenataj lingvoj estas malgranda. Esperantilo ne estas planita por subteni dekomence multajn lingvojn. Do ĉiu nova subtenata lingvo bezonas novan planadon kaj programadon. Mi ankaŭ konscie okupis nur pri unudirekta traduko el Esperanto al nacia lingvo, ĉar tiu direkto ŝajnas havi malpli multajn obstaklojn pro trajtoj de esperanta lingvo. Mi tamen dekomence de programado planis la izolon de partoj de programo, kiuj estas dependaj de lingvo kaj partoj, kiuj estas ĝeneralaj pro maŝina tradukado mem. Tial la tradukado al tiuj 3 lingvoj uzas en 80% la saman programan bazon. Nur la plej specifaj fragmentoj estas programitaj en tn. traduka modulo por koncerna lingvo. Ankaŭ la proceso de tradukado mem ebligas la reuzon de grandaj partoj de programo por diferencaj lingvoj.

La proceso de programado estas

  1. Analizo de fonta teksto
  2. Kreado de tradukaj strukturoj
  3. Trovo de vortoj
  4. Gramatika transformigo kaj reordigo (Tiu parto dependas de cela lingvo)
  5. Kreado de rezulta teksto

Esperantilo enhavas ankaŭ multajn partojn, kiuj ne servas direkte en proceso de tradukado, sed tamen influas la kvaliton kaj la uzeblecon de tuta sistemo.
Tiuj partoj estas:

  • Pritrakto de diferencaj tekstaj formatoj (XML, HTML, OpenOfficem, Word)
  • Interaktiva tradukado
  • Traduka memoro
  • Administracio de vortaroj
  • Esperanta Vortfarado
  • Prilaboro de esperantaj tekstoj

Tial Esperantilo povus bone servi kiel baza sistemo por aliaj tradukaj sistemoj, ĉefe en direkto de Esperanta lingvo al nacia lingvo. Due oni povus reuzi la tradukan modulon de iu ekzistanta lingvo por krei tradukan modulon de similspeca lingvo. Ekzemple la traduka modulo de pola lingvo povus esti uzata kiel ŝablono por ĉiu slava lingvo. La germana kaj angla moduloj povus esti ŝablonoj por aliaj multnombraj germanaj lingvoj. Tamen mi ne kredas, ke la sintaksa analizo de esperanta lingvo en Esperantilo estus sufiĉa por traduko al lingvoj, kiuj tre diferencas de Esperanto. Temas precipe pri struktura (sintaksa) malsimileco.

Antaŭ ol vi decidis okupi pri maŝina tradukado

Maŝina tradukado postulas multajn konojn kaj vastan scion. Do oni devus longe prepari por tiu tasko. Oni devus eklerni multajn novajn kampojn kaj profundigi jam konatan scion. Do tio ne estas okupo por unu semajno aŭ iu instrua projekto. Tamen ekzistas sufiĉe multaj homoj, kiuj jam havas vastajn spertojn kaj delonge okupas pri tiu temo. Esperantilo estas io, kio povus esti interesa por homoj, kiuj volas havi ion praktikan. Ankaŭ kiel ŝatokupo estas eble en longa tempo fari ion, kio funkcias kaj havas trajtojn de tn. serioza aŭ profesia okupo. Por mi la atributo „profesia“ signifas nur, ke temas pri mono, kiun oni ricevas aŭ devas pagi. En tiu senco la sistemo Esperantilo ne estas profesia.

Mi povas helpi al ĉiu, kiu volas mem plukonstrui aŭ reuzi la sistemon Esperantilo, sed
mi devas dekomence substreki, ke la plej grandan laboron oni devus fari mem. Oni devas mem studi la komputilan lingvistikon, lerni programajn lingvojn kaj gramatikon. La projekto estas tute malferma kaj libera. Ĉiujn fontojn mi publikigas libere. Do oni ankaŭ povus sen mia helpo rekonstrui kaj adaptigi la sistemon por ĉies kialoj. Ekzistas multaj informoj en mia blogo kaj sur la TTT-paĝoj de Esperantilo. Ankaŭ pri aliaj teknikoj oni povas multe legi en interreto.

Due vi devas pripensi, ĉu vi eblas trovi sufiĉe da lingvistika materialo. Ĉu ekzistas liberaj glosaroj por koncerna lingvo? Ĉu ekzistas bonaj priskriboj de gramatiko? Ĉu aldonaj informoj pri fleksio ankaŭ estas uzeblaj? Mi ofte reuzas aliajn liberajn materialojn. La ideo „Programi tradukan sistemon tute de komenco“ estas tre malespera okupo.

EsperantiloSDK – Programa medio de programo Esperantilo

Por programi la programon Esperantilo mi uzas iom ne veste konatan programan medion. La baza programa lingvo estas Tcl. Eldone la programo estas skribita laŭ objektema maniero helpe de XOTcl. La programa medio estas XOTclIDE. Mi kredas, ke XOTcl kaj XOTclIDE ebligas la uzon de programa lingvo TCL en grandaj projektoj. Tiuj teknikaj iloj estas malofte uzataj. Sed la ideoj devenas de aliaj medioj, kiuj normale estas veste konataj. Do Tcl similas al C, Java kaj aliaj skriptaj lingvoj. XOTcl estas simila al Java, C++, Ryby kaj Python. Fine la programa medio XOTclIDE estas programita en tradicio de medioj por programa lingvo Smalltalk, kiuj influis ankaŭ aliajn programajn mediojn. Do sperta programisto ne trovas en tiu medio vere ion novan.

Mi preparis la tutan programan medion kiel EsperantiloSDK.
Vi povas facile instali ĝin sur vindozo kaj linukso. Sen aldonaj obstakloj vi povas uzi la programon, trarigardi ĝian programfonton kaj adaptigi kaj plivastigi ĝin.

Taskoj ĉe programado de nova traduka modulo

Oni povas tiujn laborojn distingi inter lingvistikaj taskoj kaj programaj taskoj.

Lingvistikaj taskoj

  • Kolektado de informoj pri gramatiko de cela lingvo.
    • Fleksio de substantivoj, verboj kaj adjektivoj
    • Fleksio de pronomoj
    • Projektado de fleksiaj grupoj kaj priskriboj en vortaro
    • Reguloj pri vortordo
    • Reguloj pri traduko de subfrazoj
    • Reguloj pri vortfarado
    • Korelativoj
  • Mana preparo de ekzemplaj tradukoj
  • Preparo de vortaro (vortlistoj kaj priskriboj)
  • Preparo de esceptoj en fleksio (ekzemple anglaj fortaj verboj: take, took, token)
  • Testado de sistemo

Programaj taskoj

  • Krado de nova traduka modulo kiel kopio de iu ekzistanta modulo
  • Programado de generatoro por fleksio
  • Programado de generatoro por numeroj
  • Programado de esceptoj kaj specialaj reguloj

Ellerno de sistemo. Praktikaj sugestoj

Jam en normala eldono de Esperantilo vi povas lerni iom pri proceso de tradukado.
Vi povas uzi tiujn funkciojn.

  • Menuo – Redaktu->Montru Sintakso – Analizo de fonta teksto
  • Menuo – Redaktu->Inspektu tradukon de frazo – Analizo de tradukado

sintakso-inspect

traduko-inspect
La sistemo XOTclIDE enhavas multajn ilojn por inspektado de programaj strukturoj kaj proceso de tradukado.
Se vi uzas la EsperantiloSDK, vi havas ankaŭ aldonajn eblojn.
La duopa klako en montrilo de sintakso sur iu elemento malfermigas tn. inspektan fenestron, en kiu
vi povas inspekti la variablojn kaj metodojn de iu elemento.
La proceso de tradukado estas bone priskribita en artikolo „Kiel komputilo tradukas?“.
Ekzistas ankaŭ multaj aliaj artikoloj pri tiu temo.


objektoinspektilo
Se vi jam scias ion pri programa lingvo Tcl, XOTcl kaj la programa medio XOTclIDE, vi povus tuj trarigardi la programfonton de programo kaj tuj adaptigi la sistemon en fenesto Component Browser. Atentu, ke XOTclIDE estas interaktiva sistemo. Tio signifas, ke vi samtempe povas kuri la programon kaj programi ĝin.

Konkretaj informoj pri programado

Se vi lanĉis EsperantiloSDK vi vidas fensetron de XOTclIDE, sed ankaŭ fenestro kun nomo EsperantiloCentro. De tiu lasta fenestro vi povas lanĉi la konatan redaktilon de Esperantilo kaj ankaŭ atingi kelkajn specialajn funkciojn per programado.


esperantilcentro
Por programado de maŝina tradukado estas gravaj subaj programaj moduloj.

Modulo Priskribo
EspSintaksaAnalizo Anazizo de esperanta teksto
EspTradukilo Bazaj funkcioj por tradukado
EspPlTradukilo traduka modulo por pola lingvo
EspDeTradukilo traduka modulo por germana lingvo
EspEnTradukilo traduka modulo por angla lingvo

Precipe vi devas „nur“ programi vian propran Esp??Tradukilo.

Tie vi povas vidi la priskrobjn de eroj de programo. Tamen mi sugestas trarigardi la fontprogramon kaj programan strukturon de Esperantilo tuj en EsperantiloSDK per modulomontrilo (angle: Component Browser).

Mi nun volas priskribi kelkajn teknikojn, kiujn vi povas uzi dum adaptado de modulo.

En ceteraj kazoj la vortoj de cela lingvo estas enmetitaj direkte en la programa fonto. Tial vi povas vidi la fremdlingvan vorton de la baza lingvo, kiu ne venas de vortaro, en la cela teksto.
Vi povas trovi facile la lokon en programo, kiu tion kaŭzis per serĉado de teksto en modulomontrilo.
Uzu la menuon (Method->Search Text->In Component.


method-search-which
Ofte iu metodo faras pli ol vi bezonas. Vi povas simple forigi la metodon (menuo: Method->Delete). La programo uzas en tiu kazo la pli bazan metodon kaj la programo daŭre funkcias.

Vi povas kompari metodojn de aliaj moduloj per funkcio (menuo: Method->Search Implementers.

La baza klaso, kiu respondas pri la tradukado estas FrazTraduko en modulo EspTradukilo. Vidu la metodon traduku.

Modulomontrilo

Ĉiuj vortoj estas objektoj, kiuj devenas de derivita klaso de la klaso TradukElemento.
Ekzemple ĉiu pola substantivo estas objekto de klaso ETPlSubstantivo.
Tiu klaso havas tiujn parencojn:

ETPlSubstantivo
  ETPlTradukElemento
  ETSubstantivo
    ElemTraduko
       ArboFolio
          ArboElemento

Vi povas rigardi la parencajn strukturojn per Heritage Browser, kiun vi lanĉas per
Class->Heritage Browser. Kiel vi vidas, la programo Esperantilo uzas konsekvence la objekteman programadon. La klaso „ETSubstantivo“ estas uzata en ĉiujn tradukajn modulojn kaj enhavas bazajn trajtojn de substantivo.


heritagebrowser
Se vi modifis unu metodon (funkcion) kaj ĝi ne funkcias, vi povas senprobleme reveni al malnova eldono. Do ni ne bezonas komenti aŭ malkomenti partojn de programo. Uzu la menuon: (Method->Version Control->$gt;Editions) aŭ (Method->Version Cotrol->Previous Version).

En ĉiu metodo, vi povas enmeti tn. haltpunkton (Breakpoint). Por tiu vi skribu en aldona linio: my halt. (Vi devas aldone enlegi la novan metodon per menu Edit->Save aŭ klavkombino Ctrl-S)
Se la programo denove uzas tiun metodon, vi povas inspketi la fluon de programo en sencimilo (debugger). Tiel vi ofte povus pli ekkoni pri programo ol nur legante la statikan programfonton. Vi povas pluruli la programon per butono Resume.


sencimilo

La preciza priskribo de tuta programo ne estas praktika. Pli bone estas lernia la programan lingvo kaj legi la programon direkte.

Kiel komenci?

Se vi estas preta komenci vian okupon pri programado de Esperantilo, kontaktu min. Eble mi povus fari la plej malfacilajn taskojn por la komenco aŭ doni al vi kelkajn rimarkojn.

12.9.2007

Maŝina tradukado el pola lingvo al Esperanto

Filed under: pola lingvo,programado — artur @ 18:46

Mi ne planis programi maŝinan tradukadon el pola lingvo, tamen nun mi dum longa tempo laboris pri tiu temo, kaj la venonta versio de Esperantilo enhavos unuan fojon la maŝinan tradukadon el pola lingvo al esperanta lingvo. La ĉefa kaŭzo pri mia frua rezisto je tiu temo estis, ke mi pritraktis la sintaksan analizon de pola lingvo kiel tre komplika, tro komplika por miaj rimedoj. Post kelkaj eksperimentoj mi konstatis, ke plena (profunda) sintaksa analizo ne estas tiel necesa por pola lingvo. Ekzistas ankaŭ la libera projekto morfologik kaj la s_fsa, kiuj oferas polan etiketilon. Do mi povis reuzi jam ekzistantan programaron. Tamen la vortprovizo de projekto morfologik, kvankam ĝi estas tre abunda, enhavis multe da eraroj. Do mi devis unue purigi tiun provizon. Por tiu tasko mi produktis de vortaro de Esperantilo ĉiujn fleksiajn formojn. Tiujn funkciojn mi jam bezonis por tradukado al pola lingvo. Feliĉe la laborkvanto ne estis tiel granda kaj mi povis rapide atingi unuajn rezultojn.

Ĉe tiu temo mi frontis unufoje la problemon de ambiguo de naturaj lingvoj. Por bona tradukado oni bezonas bonan senambiguilon (angle: disambigulation). La sendisambiguo koncernas ĉefe du problemojn.

  • Trovi la bazan vorton
  • Trovi unusencan gramatikan etiketon

Mi frue eĉ ne supozis, kiom da ambigueco ekzistas en pola lingvo. Mi pensas, ke nia cerbo faras tiun taskon tiel rapide, ke la ambigueco ne iĝas konscia. Do mi rimarkis tiun ambiguon nur dum la testado de tradukado.

Mi donas kelkajn ekzemplojn.

mam - verbo (mieć-havi), substatnivo (mama-patrino)
bez - konjukcio (sen), substantivo (sambuko)
jak - konjunkcio (kiel), substantivo (gruntbovo)

Ankaŭ la pola fleksio estas parte tre ambigua.

książki - baza vorto: książka
singularo, genetivo
pluralo, nominativo
pluralo, akuzativo

En pola lingvo akuzativo kaj nominativo por senvivaj substantivoj de vira genro estas samaj. Do mi devis uzi multajn diferencajn teknikojn por difini la gramatikan funkcion de vortoj en pola frazo. Pola lingvo havas ankaŭ komplikajn trajtojn ĉe negado kaj numeraloj. Jen la tabelo, kiu montras kelkajn defiojn de pola lingvo.

Ja mam książkę. Mi havas libron.
Ja nie mam książki. (genetivo-singularo) Mi ne havas libron.
Ja mam książki. (akuzativo-pluralo) Mi havas librojn.
Cena książki jest wysoka. (genetivo-singularo) Prezo de libro estas alta.

En tiu ekzemplo la vorto „książki“ devas esti tradukita depende de kunteksto al „libron, librojn aŭ de libro“.
Tamen ĉiujn tiujn frazojnj la programo nun povas korekte traduki. Do mi esperas, ke la tradukado el pola lingvo estus ankaŭ iam utila. Mi pensas, ke se la traduko estus komprenebla, tiam jam multaj esperantistoj povus kompreni polajn tekstojn. Do tiu direkto de tradukado estus eble pli interesa ol tradukado de Esperanto al pola lingvo. Tiu okupo estas pro mi bona okazo ekkoni la polan lingvon. Tiun scion oni nur tre malfacile atingas per legado de gramatikaj libroj. Eble ankaŭ la cerboj de polaj gramatikistoj malkaŝas al ili kelkajn gravajn fenomenojn de pola lingvo.

10.8.2007

Renkonto kun Esperantisto kaj uzanto de Programo Esperantilo

Filed under: ĝenerale,germana lingvo,reagoj — artur @ 17:34

Per interreta letero mi konatiĝis kun Esperantisto Eckhard Stoll, kiu eble estas al ceteraj homoj konata de Radio Sauerland Welle kaj elsendoj pri fondaĵo Bona Espero. Post kelkaj leteroj kaj longa telefonado ni decidis renkonti. Eckhard estas ankaŭ la kreinto de alia traduka programo Ecoso. Do ni havis multegon por priparoli pri programado kaj maŝina tradukado. Ni parolis multege pri teknikaj aferoj kaj interŝanĝis ideojn pri tradukaj programoj. Mi povis montri direkte kelkajn specialajn funkciojn de programo Esperantilo kaj rakonti pri ĝia programado.

Mi decidis detale priskribi kelkajn ideojn de tiu renkonto. Tio estas ankaŭ por mi la unua okazo por paroli direkte kun uzanto de Esperantilo. Per tiuj diskutoj mi eksciis pri plibonigindaj flankoj de programo kaj ekhavis ideojn por plua evoluo. La programo Ecoso ne oferas altan kvaliton de maŝina tradukado, tamen ĝi enhavas funkciojn, kiuj ne estas nun en la programo Esperantilo. Oni povis tajpi Esperantajn vortojn kaj samtempe observi la tradukadon al germana lingvo. Mi longe ne povus imagi, kiu vere bezonus tiun funkcion. En mia kapo mi havis nur unu tipon de uzado de programo. La uzanto havas Esperantan tekston, kiun li volas traduki al cela nacia lingvo. Tamen mi devis konfesi, ke maŝina tradukado estus ankaŭ uzebla por propedeŭtikaj kialoj. Ni imagu, ke komencanta lernato de Esperanta lingvo volas krei esperantan tekston. Lia provizo de esperantaj vortoj ne estas granda. Li ankaŭ havas problemojn kun esperanta gramatiko. Li tamen volas skribi leteron al iu alia Esperantisto. En tiu kazo li kutime uzus ofte vortaron kaj necesus korektadon. La programo Ecoso estas farita direkte por tiuj uzantoj. Oni tajpas esperantajn vortojn kaj povas direkte kontroli en vortaro, ĉu la vorto estas korekta. Do la maŝina tradukado ĉefe gravas kiel kontrola teksto. Tio nun ankaŭ estas por mi pli evidenta, ĉar mi ofte rimarkas erarojn en miaj esperantaj tekstoj nur, post kiam mi tradukis ilin al pola lingvo. Do la kombino de literumado, gramatika kontrolado kaj maŝina tradukado estas tre avantaĝaj por komencantoj de esperanta lingvo. Mi ankaŭ en frua blogo pensis pri uzantoj, sed pri tiu tipo de uzado mi ne pensis.

De eldono 0.94 Esperantilo ankaŭ enhavas tiel nomatan rapidan vortaron, kiu laboras simile al programo Ecoso. Mankas nun nur la ebleco samtempe montri la tradukon de vortoj en separita fenestro. Esperantilo tradukas ne po unu vorto, sed ĝi bezonas por bona traduko la tutan frazon. La akceptebla solvo estus, ke esperantilo tradukas tuj ĉiun vorton laŭ primitiva maniero. Sed kiam la frazo estas finita, la programo retradukas la tutan frazon en pli bona kvalito. Nun ekzistas en Esperantilo t.n. „Tradukileto“ (menu Tradukado->Tradukileto), kiu estas speciale farita por samtempa tradukado de mallongaj tekstoj. Oni povus plivastigi la funkciadon de tiu ilo, por ke ĝi estu pli simila al programo Ecoso.

Mi kaptis la okazon kaj detale demandis Eckard pri ĝia uzado de programo Esperantilon. Tio estis por mi tre instrua. Ni diskutis longe pri vortaro de Esperantilo. Bedaŭrinde Eckhard ne povis bone uzi tiun vortaron sen mia detala priskribo. La uzula interfaco de vortaro evidentiĝis kiel malklara. Mi uzas la vortaron tre ofte kaj ne supozis tiujn malfacilaĵojn. Speciale malklara evidentiĝis la dudirekta serĉado de vortoj. Por tio oni havas du specialajn kampojn. Ankaŭ la montrado de rezultoj kaj la ebleco de direkta redaktado de tradukoj estis malklara. La leciono por mi estas, ke uzantoj atendas, ke la vortaro aspektu kiel papera vortaro. Oni havu nur unu kampon por entajpi la vorton. Ankaŭ la gramatikaj priskriboj ne estas klaraj. Se la avaraĝa uzanto povus redakti mem la vortaron, la priskribo de gramatiko kaj fleksio devus esti pli facila. Normale altnivela preparo de vortaroj estas tasko por profesiaj lingvistoj. Se tiu vortaro estas uzata en maŝina tradukado, tiu tasko estas eĉ pli malfacila. La programo devus plifaciligi tiun taskon ankaŭ por neprofesiuloj. La plej bona solvo estus, se la programo oferus kelkajn ekzemplojn de fleksio por elekto kaj la uzanto nur devus elekti la korektan frazon. Ni ankaŭ diskutis lange pri komuna flegado de vortaro. Ĝis nun mankas bonaj liberaj vortaroj pro esperanta lingvo, kiujn oni povus uzi en maŝina tradukado. Sekvaj funkcioj estus necesaj:

  • facila importado kaj eksportado de ŝanĝoj direkte per interreto
  • historio de ŝanĝoj en vortaro
  • ĉiu ŝanĝo havas aŭtoron
  • akceptado de ŝanĝoj per elektitaj kompetentaj lingvistoj
  • priskribo de certeco de iu traduko
  • Akcepto de ŝanĝoj nur por ne certaj tradukoj

Tiu projekto necesus vastan akcepton de germana kaj esperanta komunumo. Ekzistas nun multaj similaj projektoj, kiuj kolektas vortojn por Esperanto kaj por ĉiu lingvo. Bedaŭrinde ĉe multaj tiaj projektoj la uzado de vortaroj ne estas libera. Do mi ne estas certa, ĉu indus krei ion novan. Tio devus esti ankaŭ separita projekto. Kvankam mi devis akcepti, ke la nuna vortaro ne estas facila, mi tre kutimiĝis kun nuna funkciado. Bone estas, ke mi direkte povas redakti tradukojn sen aldonaj paŝoj. En aliaj programoj oni devas trairi per multaj fenestroj por adaptigi unu tradukon. Ankaŭ en tiu kazo evidentiĝas, ke diferencaj uzantoj volas havi diferencan interfacon. Mi povas diferenci:

  • Uzantoj kiuj nur legas vortaron kaj nenio scias pri gramatiko
  • Uzantoj kiuj nur legas vortaron kaj tre malofte korektas tradukojn. Ili havas nur bazajn konojn pri gramatiko
  • Lingvistoj, kiu ofte uzas vortaron kaj volas direkte redakti tradukojn. (angle: Poweruser)

Nuna vortaro bezonan plibonigon, sed eble bona ideo estus havi du separitajn vortarojn por almenaŭ du tipoj de uzantoj.

Ĝenerale mi devas diri, ke multaj funkcioj de Esperantilo ne estas konataj. Eble pli bona solvo estus dividi la programon en kelkaj programoj, kiuj enhavas funkciojn speciale por unu grupo de uzantoj. Mi pensas, ke la plej granda parto de esperantistoj ne scias multe pri lingvistiko, gramatiko kaj komputiloj. Kaj speciale por tiu grupo la programo povus esti aparte utila. Por tiu homoj estas necesa aldona dokumentaro kaj speciala instrukciado. Eble mi povus iam pretigi intrukcajn videojn. Mi pensas, ke direkta kontakto kun uzantoj estas la sola eblo plibonigi la programon.

Ni diskutis multe pri plibonigo de germana tradukado. Jes, mi havas mutajn ideojn, sed mi decidis nun prizorgi nur polan maŝinan tradukadon. La tasko estas pena kaj mi volas, ke almenaŭ unu lingvo estos bone tradukota. Do eble en venonta jaro mi denove okupus pri germana lingvo.

Sukcesa programo devas havi stabilan kernon, kiu povas solvi la planitajn taskojn, kaj ankaŭ klaran interfacon. Se unu de tiuj elementoj ne estas bona, la programo ne trovos akcepton. Direkta kontakto kun Esperantistoj tre helpas. Mi esperas, ke mi en la venonto povus partopreni en esperantaj aranĝoj kaj renkonti la uzantojn de programo rekte.

Older Posts »

Powered by WordPress