Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

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.12.2007

Esperantilo sur OpenOffice

Filed under: programado — artur @ 11:27

La ĉefa malavantaĝo de Esperantilo por multaj uzantoj estas, ke tio programo ne estas dokumentoredaktilo, sed nur tekstredaktilo. Do ne eblas per Esperantilo formati kaj presi dokumentojn. Nur malmultaj spertaj pri komputiko uzantoj komprenas tiun diferencon. Mi ne celas ankaŭ fari de Esperantilo plenan dokumentoredaktilon, ĉar la programado de tiu sistemo estas por unu persono laboro por kelkcent jaroj.

Ekzistas jam bona libera dokumentoredaktilo OpenOffice, kiu estas bone konata en Esperantujo.
Tiu programo estas ankaŭ aktive tradukata al esperanta lingvo. Do estus tre nature kunligi funkciojn de Esperantilo kun OpenOffice. Kutime oni faros tion kiel tn. kromprogramoj (plugins) por OpenOffice.

Mi jam multe pli frue analizis eblojn de OpenOffice por integriĝo kun Esperantilo. Ekzistas ankaŭ aparta projekto de OpenOffice, kiu pritraktas gramatikan korektadon. La celo de tiu projekto estas ne programi novajn gramatikajn korektilojn, sed kunligi ekzistantajn ilojn kun OpenOffice.
Tiu tasko ne estas teknike facila. Unue la programistoj de OpenOffice devas pripensi, ke ekzistas gramatikaj korektiloj kaj poste oferi konvenan programan interfacon (angle: API) por tiuj iloj. Tiu API jam ekzistas de multaj jaroj, sed ne estas parto de aktuala OpenOffice. Ĝi estis priskribita tie kaj ankaŭ tie. Kiel oni legas sur paĝoj de OpenOffice tiu API estos parto de programo en eldono 2.4. Do tio estas la sekva eldono. Mi esperas, ke tio vere okazos.

La ĉefa problemo estas, ke la gramatika kontrolado devus esti parto de normala kontrolado. Simile al aliaj programoj, la gramatika kontrolado devus kuri en alia programa fadeno kaj ne ĝeni la normalan laboron kun programo. La malkorektaj vortoj aŭ vortgrupoj devas esti markitaj kaj uzanto povus per t.n. kunteksta menuo vidi la sugestojn de korekto.
La nuna API de OpenOffice pritraktas nur literumadon, tial la literumiloj ricevas per tiu API unuopajn vortojn kaj devas pritaksi, ĉu ili estas korektaj. Por gramatika kontrolado (ankaŭ aliaj pli vastaj kontroloj) oni devas analizi tutajn fragmentojn de teksto.
Tio estas tre komplika programado de OpenOffice, kiu postulus vastajn konojn de OpenOffice.
Tamen la projekto LanguageTool jam nun laboras kun OpenOffice. La integriĝo de tiu projekto ne estas tre bona, sed eble por nunaj ebloj la plej bona.

Mi do atendas la eldonon 2.4 de OpenOffice. Mi nun volas ekscii iom pri skribado de kromprogramoj (plugins) por OpenOffice.

Poste mi povos pensi pri aliaj funkcioj de Esperantilo, kiujn oni povos uzi de OpenOffice.
Mi pensas tie pri vortaroj kaj maŝina tradukado. Bedaŭrinde por maŝina tradukado ne ekzistas ĝis nun eĉ planoj por iu API en OpenOffice. La kaŭzo por tio eble estas, ke ne ekzistas multaj uzeblaj tradukaj sistemoj, do la programistoj de OpenOffice ne oferus API por io, kion neniu uzus. Oni ne povas pensi, ke programistoj de OpenOffice pensos iam pri iu malgranda projekto kiel Esperantilo. OpenOffice estas malferma sed ne amatora projekto, do la gvidantoj de tiu projekto certe pensas pri komerco.

23.12.2007

Nova versio de programlingvo Tcl 8.5

Filed under: programado — artur @ 10:33

Post 4 jaroj de laboro estis pretigita la nova version de lingvo Tcl. La programado de Esperantilo bazas sur tiu programa lingvo, kvankam la uzata programa lingvo estas la objektema plivastigo XOTcl. La nova Tcl enhavas kelkajn novajn kapablojn kaj estas pli rapida. Do ankaŭ Esperantilo povos profiti de tiu nova eldono.
La testas eldonoj de Tcl8.5 jam delonge ekzistis, sed mi ĝis nun ne provis ilin kun Esperantilo.
Esperantilo estas programita helpe de diversaj fremdaj moduloj kaj plivastigoj (angle: extensions). Tial la renovigo de tute programa medio ne estas facila.
Mi devis denove kompili kelkajn modulojn (XOTcl, mysqltcl, mk4tcl, sqlite, tdom, …)
Mi faris jam kelkajn testojn. Bedaŭrinde mi ne povus ruli Esperantilio sur Tcl8.5 sen kelkajn adaptojn.
Tamen mi planas uzi la novan eldonon en sekva tempo.
Por uzanto de Linukso la ŝanĝo estos videbla okulfrape. La nova Tcl (Tk) povas uzi specialajn formojn de literoj, kiu aspektas multe pli bone ol la malnova eldono (Legu pri Font Anty-Aliasing.

Esperantilo sur Linukso kun Tcl8.5

Mi volas fari ankoraŭ multajn testojn antaŭ mi eldonos Esperantilo surbaze de Tcl8.5.
Mi volas testi, ĉu vere la programo iĝis pli rapida helpe de Tcl8.5.

21.12.2007

La lasta eldono de Esperantilo en jaro 2007

Filed under: ĝenerale — artur @ 21:01

Tio estas la lasta eldono de Esperantilo en tiu jaro. Mi plejparte laboris pri plibonigo de maŝina tradukado al sveda lingvo. Ĉio ĉi okazis pro iniciato de KaGu. Mi mem tute ne regas la svedan lingvon kaj mem neniam programus tiun tradukan modulon.

Mi ankaŭ laboris pri plibonigo de tradukado de angla lingvo al Esperanto. Nun Esperanto povas traduki la bazan gramatikon de angla lingvo. Tio bone sukcesas por facilaj frazoj. Mi testis la programon sur instrua angla materialo, kiu enhavas nur facilaj frazojn. La rezultoj estas bonaj. La problemoj komencas ĉe realaj tekstoj, kiujn mi hazarde prenis de interreto. Por traduko de angla lingvo mi uzas la fremdan sintaksan analizilon de projekto „link grammar parser“. La ebloj de tiu analizilo limigos la kvaliton de tradukado. Tamen mi estas iom surprizita kiel bona tiu analizilo estas. Tio estas unu de maloftaj universitataj projektoj, kiuj rezultigis uzeblan modulon kaj ne nur sonĝitaj tekstoj.

Mi korektis ankaŭ kelkajn erarojn, kiujn feliĉe raportis la uzantoj per la ena erara raportilo de Esperanto. Multaj eraroj raportis KaGu.

Estas por mi tre malhelpa afero, ke uzantoj ne raportas pri eraroj. Mi iam ekscias pri deziroj aŭ eraroj en programo de iuj diskutforumoj. Mi iom ĉagrenas, se mi legas: „Mi ne povis uzi la programon, ĉar ĝi havas tie kaj tie eraron.“. Kiam tiuj homoj komprenos, ke se ili ne raportos pri tiu eraro, la eraro neniam estos korektita. Kial la uzantoj ne raportas al mi? Mi pensas, ke ĉe tiu afero funkcias la sama psikologia afero, kiel ĉe helpado al homoj en amaso da homoj. Se iu suferas en amaso da homoj kaj krias por helpo, neniu helpas. Ĉar ĉiu pensas, ke eble helpos iu alia. Finfine neniu helpas. Ankaŭ uzantoj, kiuj trovis iun eraron, pensas, ke aliaj eble reportos pri tio. Bedaŭrinde la nombro de Esperantistoj estas tre malgranda, kaj nur kelkaj de ili uzas tiun programon. La sama afero estas ankaŭ pri vortumo de deziroj. Mi ankaŭ nur sporade uzas kelkajn funkciojn de Esperantilo. Se neniu raportos, nenio okazos.

Nuntempe eble multaj projektoj suferas pro tiu afero. La novaj uzantoj de reto kutimis havi ĉion tuj en bona kvalito. Ekzistas multegaj interesaj aferoj en la reto. Tial oni ne havas multe da tempo por iu afero. La tempo de intereso por iu afero estas tre mallonga. Estas tre malfacila sed grave afero uzi tiun mallongan tempon por raportado kaj instigo por reagoj. Tial la programoj devas mem kolekti datojn kaj aŭtomate sendi ilin al gepatra sistemo. Tial la uzantoj mem kaŭzas pro ilia konduto tiun kolektadon de datumoj. Tio estas la prezo por mankantaj reagoj.

Nun oni povus uzi Esperantilon por tradukado inter angla kaj pola lingvoj en ambaŭ direktoj helpe de Esperanto. La rezultoj ne estos bonaj, ĉar ĉiu tradukado kaŭzas perdon de kvalito. Mi ankaŭ ne pensas, ke tio estas teknike bona ideo. Mi skribis pri tio jam tiu blogo

Nuntempe ne estas eble en Esperantilo traduki maŝine direkte inter pola kaj angla lingvoj. Tio estos temo por sekva eldono. Tiu funkcio estus ankaŭ utila por Ne-Esperantistoj. Oni tiam povos traduki direkte ekzemple de pola lingvo al germana aŭ sveda lingvoj. Mi ne planas la sekvan plivastigon de tiu programo. Mi volas nun malfermi la programadon de ĉiuj funkcioj kaj pretigi dokumentaron. La lasta eldono venos en eble aprilo. Tiam mi haltigos por iom da tempo la evoluon de programo.

Esperantilo nun rekonas la duobligon de vorto kiel ebla skriba eraro.

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.

3.9.2007

Kunsido de Projekto „Gramatika Korektilo“

Filed under: ĝenerale,lingvistiko — artur @ 19:45

La 25 kaj 26 aŭguston mi partoprenis la unuan kunsidon
de kreiĝanta projekto GramatikKontrolilo. Mallonge dirite la projekto celas krei gramatikan kontrolilon helpe de subteno de organizo ESF. La organizo jam subtenas kelkajn tre gravajn kaj sukcesajn projektojn en Esperantujo. Tiuj estas interalie la konata retejo Lernu.net, la tekstaro de Esperanto kaj tradukado de programo OpenOffice. La iniciatinto kaj la organizanto de tiu projekto estis Hokan Lundberg, kiu tre trovis kaj kontaktis ĉiujn partoprenantojn.

Tio estas por mi la unua fojo, kiam mi povus uzi Esperanton kiel parolata lingvo. Tio estis tre interesa sperto por mi. Mi havis kelkajn problemojn kun prononcado, sed entute mi povus normale paroli kaj ĉion kompreni. Mi pensas, ke longa (4 jara) aŭskultado de pola radio kaŭzis tion.

Ĉe la kunsido mi povus konatiĝi kun tre interesaj homoj. Ĉiuj estis tre engaĝiĝitaj Esperantistoj kaj lingvistoj kun vastaj konoj de komputila lingvistiko. Nun mi povis direkte paroli kun Eckhard Bick, kiu estis por mi jam delonge konata de projekto VISL. Tiun projekton mi tre atende trarigardis antaŭ kelkaj jaroj, kiam mi komencis la okupon pri komputila lingvistiko. Mi renkontis Sonja Petrović Petrovic kaj Hokan Lundberg, laborantoj de projekto „Lernu“, Judith Meyer, kiu kreis la retejon „Amikumu“, Marek Blahuš kaj Henning von Rosen.

Ĉe tiu kunsido mi povis prezenti la programon Esperantilo, kiu jam enhavas gramatikan korektadon.

Mi dekomence signalis, ke mi ne povas aktive kaj plene partopreni en la projekto. Unue mi ne havas sufiĉe da tempo, due mi ne volas okupi pri tiu temo en alia maniero kiel ŝatokupo. Tamen estis tre agrable, ke mi ankaŭ kiel neprofesiulo povis partopreni en la kunsido. Feliĉe la gvidadon de projekto povus preni Eckhard Bick, kiu estas tre sperta lingvisto kaj delonga Esperantisto kaj jam faris gramatikan kontrolilon de dana lingvo kadre de programo „ordred“. Do oni ne bezonos fari ĉion de komenco. Eckhard Bick havas diversajn pretajn modulojn por esperanta lingvo kaj la testitaj metodoj por dana lingvo. Do oni bezonas adapti tiujn metodojn kaj modulojn por esperanta lingvo. Nur kelkaj elementoj de sistemo devus esti farita tute nove. Ĉe priskribo de taskoj de projekto evidentiĝis aldonaj subprojektoj. Tiuj estas

  • Literumado
  • Bazo de sintaksaj arboj
  • Bazo de eraroj

En la unua ŝtupo de projekto la gramatika kontrolado estas oferota nur kiel reta interfaco. Poste la gramatika kontrolado devos funkcii en la programo OpenOffice. Ĉar kelkaj elementoj de sistemo estas faritaj kedare de komercaj projektoj, tiu sistemo ne estos plene malferma. Tio ne estas por mi bona informo, ĉar mi kiel programisto normale havas la intereson rekonstrui la sistemon de fontoj kaj adaptigi ĝin por aliaj taskoj aŭ operaciemaj sistemoj. Mi ankaŭ pli volonte legas la programan fontan kodon ol sciencajn laboraĵojn. Tamen ĉiuj direktaj rezultoj de tiu projekto estos malfermaj por vasta publiko. Mi esperas, ke ankaŭ la projekto Esperantilo povus profiti de tiu projekto kaj mi oferis ankaŭ helpon al tiu projekto.

Por mi la plej interesa parto de la kunsido estis la prezento de Eckhard de metodoj de analizo de tekstoj laŭ la teorio de „Contraint Satisfaction“, tiu metodo estas tre simpla. CG ne havas fonton en teorio de generativa formalismo, sed estas rezulto de tre pragmatikaj pensoj. La fontaj datoj por GG-Analizilo estas etikeditaj vortoj.
Normale ĉiuj vortoj posedas diversajn ambiguajn etiketojn. La analizilo forigas aŭ aldonas etiketojn sur nivelo de vortoj laŭ priskribitaj reguloj.
La reguloj de CG estas simplaj proceduroj laŭ modelo: „Forigu/Aldonu la etiketon ĉe vorto kun etikedoj, se la kondiĉo estas prava.“ Kondiĉoj priskribas la najbarajn vortojn. Tiu estas do pure procedura priskribo kontraŭe al diskriptiva priskribo de generativaj metodoj. La ĉefaj avantaĝoj de CG estas ĝia stabileco, rapideco kaj simpleco. Mi pensas, ke tiu metodo estas ankaŭ ekzemplo por bona divido de taskoj inter programistoj kaj lingvistoj. Nun programistoj povus programi CG-Analizilon, kaj lingvistoj havas simplan proceduran lingvon por manipulado de etiketoj. Do CG-Formalismo estas la tiel nomata Domain Specific Language.
Antaŭ 4 jaroj mi multe pensis pri la metodo, mi tiam ankaŭ trovis la liberan analizilon de projekto VISL. La nova versio de tiu analizilo estas CG3. Tamen mi havis grandajn problemojn kompreni la signifon de multnombraj etiketoj. Kvankam mi trovis ekzemplajn regulojn por angla lingvo, mi ne povis uzi tiun analizilon. La forta flanko de CG estas forigo de ambigueco. Ĉar en Esperanto tiu problemo apenaŭ ekzistas, la uzeblecon de tiu metodo mi ne konsideris tiam kiel tre granda.

Kiel mi nun scias, tre interese estas, ke la CG-on oni povas ne nur uzi por disambigueco de vortklasoj, sed ankaŭ por sintaksa analizo kaj kreo de „functional dependency grammar“. Ankaŭ semantika analizo povas uzi CG-analizilojn. Per la sama metodo oni ankaŭ povas trovi gramatikajn erarojn. Do la gramatika korektado estas nur unu elemento en la ĉeno de CG-analizoj, kiuj laboras laŭ diferencaj reguloj. La plej kompleksaj reguloj ekzistas por sintaksa analizo. La komplekseco de tiuj reguloj estas eble la plej malavantaĝa aspekto de tiu metodo. Por averaĝa lingvo oni bezonas pli aŭ malpli 900 regulojn. La flegado de tiuj reguloj ne estas facila kaj oni bezonas longan sperton pri tio. La ordo de reguloj havas grandan influon sur la rezulto. Kutime oni unue difinas bazajn regulojn kaj poste aldonas aliaj kondiĉojn kaj aliajn regulojn. Do la legebleco de reguloj iĝas pli kaj pli malalta. La difino de ĉiuj necesaj reguloj estas laboro por jaroj. Estas malavantaĝe, ke tiun laboron oni ne povas dividi inter kelkaj homoj, ĉar la influo de reguloj inter si estas tre granda. Tamen la komplekseco de reguloj estas la problemo en ĉiuj ĝisdataj metodoj. De teknika vidpunkto la formalismo de reguloj havas kelkajn malavantaĝojn, kiuj rezultigis la neceson de multaj reguloj. Per reguloj oni ne povas difini rekursiajn strukturojn. Tiuj reguloj nur limigite ebligas la uzon de ĝeneraligo (nur per difino de listoj). Ankaŭ la uzado de metodo „backtracking“, kiu por kelkaj problemoj de sintaksa analizo estus tre konvena, ne estas ebla ĉe CG.

En Esperantilo mi ankaŭ uzas la metodon, kiu estas simila al CG. La metodo estas „button-up“ kaj ne enhavas „backtracking“. Tial ankaŭ la analizo en Esperantilo ĉiam ion rezultigas kaj estas sufiĉe rapida. En Esperantilo mi havas nur 100 bazajn regulojn, kvazaŭ ili kovras preskaŭ tutan gramatikon de Esperanto. Kelkaj aldonaj analizoj por subfrazoj, relativaj subfrazoj kaj infinitivaj frazpartoj estas programitaj speciale. La diferenco inter Esperantilo kaj CG estas, ke en Esperantilo dekomence ĉe sintaksa analizo vortoj estas grupigitaj kiel sintaksaj subarboj. Tial la reguloj por sekva ŝtupo povas esti difinitaj pli ĝenerale. Mi uzas la fakton, ke ofte la grupo de vortoj povas esti pritraktato nur kiel la kapo de tiu grupo. Ekzemple por ĉiuj substantivaj frazpartoj: „libro“, „bona libro“ „bona libro skribita de fama aŭtoro“ la plej grava estas la kapo „libro“. Do sekva analizo povus pritrakti nur tiun vorton. Tial okazas ĉe analizo redukto de komplekseco.

Mia nuntempa sento pri la problemo de sintaksa analizo estas, ke oni bezonus diferencajn metodojn por atingi bonajn rezultojn. La rekono de substantivaj frazpartoj postulas aliajn metodojn ol analizo de subfrazoj kaj konjunkcioj. Diskriptivaj reguloj estas ofte pli elegantaj kaj pli mallongaj ol procedurdeklaraj. Kelkajn problemojn oni povas nur bone solvi per „backtracking“.

La sukceso de CG eble plejparte baziĝas sur speciala programa lingvo, kiu estas farita nur por lingvistoj. Per tiu programa lingvo lingvistoj kapablas mem difini regulojn. Ekzistas ankaŭ kelkaj ideoj, kiel plibonigi la uzeblecon de CG. Miaopinie oni povus konsideri sekvajn punktojn:

  • Aŭtomata kreado de CG-reguloj de pli ĝeneralaj reguloj.
  • Aŭtomata kreado de CG-reguloj de statistika analizo de bazo de sintaksaj arboj.
  • Aldonaj iloj, kiuj helpos ĉe difino kaj testado de reguloj.
  • Plivastigo de CG je aldonaj metodoj.

Por pli bona pritakso de CG mi bezonus pli da informoj. La projekto VISL havas la analizilon por esperanta lingvo, sed la analizilo ankaŭ havas problemojn kun komplikaj frazoj simile al analizilo de Esperantilo. Tion mi povis konstati post kelkaj testoj per reta interfaco de projekto. Interesa estus la demando, ĉu estas eble plibonigi la analizon kaj kiom da energio tio postulus. Malbonŝanĉe reguloj por neniu lingvo estas libere atingeblaj, do oni povus nur iom havi la ideon pri la verko de reguloj post studado de kelkaj sciencaj laboraĵoj.

Se mi havos sufiĉe de libera tempo, mi volas pli detale okupiĝi pri CG-Analizilo. Mi eĉ povus uzi la liberan CG-Analizilon en Esperantilo, ĉar mi povas bone reuzi modulojn, kiuj estas skribitaj en programa lingvo C++, de programa lingvo XOTcl. La bona tasko por CG estus la analizo de pola lingvo.

Por Esperantilo estus bone klare disigi la regulojn de programado de analizilo. La programa lingvo, kiun mi uzas ĉe programado de Esperantilo, estas sufiĉe abstrakta kaj potenca por uzi meta-programadon. Do mi programas regulojn de analizo kaj la analizon en la sama programa lingvo. Aliflanke la klara diferenco inter lingvaj reguloj kaj programado de analizilo ne ekzistas tiel forte kiel en CG-metodo.

Resumo

Mi estas tre ĝoja, ke la projekto Esperantilo iel ankaŭ instigas kaj inspiras aliajn pli profesiajn projektojn. Tio estas por mi grava motivigo por plia okupo. Dum la renkontiĝo mi povis konatiĝi kun tre interesaj homoj kaj mi havis novojn ideojn. Nun mi estas tre scivola pri la sekva evoluo de tiu projekto.

« Newer PostsOlder Posts »

Powered by WordPress