Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

27.1.2007

Tre similaj vortoj

Filed under: lingvistiko,programado — artur @ 11:31

En lasta tempo kelkaj Esperantistoj ekinteresiĝis pri aŭtomata korektado en Programo Esperantilo. La vigla korespondado finiĝis per nova mesaĝ-grupo Komputila lingvistiko. La unua frukto de tiu kunlaboro estas korektita bazo de erarekzemploj Ekzemploj de eraroj, kiun mi uzas por testado kaj kiel teoria fonto de programado de korektilo.

Ĉar mi denove pensis pri aŭtomata korektado, mi decidis analizi la vortprovizon de esperanto je tre similaj vortoj. La analizo trovis vortoj, kiuj estas:

  • same longaj
  • sama unua kaj lasta litero
  • diferencas nur je unu litero
  • sen participoj

Mi analizis ĉiujn vortojn ĝis frekventaca grupo 15 de mia frekventeca bazo de vortoj. Ĉar la vortoj devenas de analizo de tekstaro, estas eble, ke kelkajn vortojn nun estas oftaj skriberaroj. Mi dividis la listojn je 3 kategorioj:

  • similaj: ĉiuj vortoj – nombro 10446
  • similaj sone: vortoj, kiuj simile sonas, do ili diferencas je litergrupoj (dt rl pb sŝ cĉ hĥ) – nombro 679. Tiuj vortoj kutime estas problemaj por azianoj.
  • similaj vide: vortoj, kiuj simile aspektas , do ili diferencas je litergrupoj (nm rn ao bh) – nombro 420

Mi nun ne scias, kiel oni povas uzi tiujn listojn en praktiko. Mi supozas, ke tiuj vortoj estas ofte intermiksitaj.

23.1.2007

Perfekta programa lingvo por komputila lingvistiko

Filed under: programado — artur @ 19:33

La nombro de programaj lingvoj estas tre granda (pli ol 1000), kaj ĉiun jaron novaj programaj lingvoj ekestas. Oni povas diri pri evoluo de programaj lingvoj, ĉar la ideoj kaj konceptoj de programado estas heredigitaj de unu lingvo al alia. La evoluo ofte progresas en multajn diferencajn direktojn, sed kelkaj lingvoj denove unuigas konceptojn de aliaj maljunaj lingvoj. Do ankaŭ en la kampo de programaj lingvoj ni havas la babilan turon. (Wikipedia: history of programming languages)

La unuopaj programaj lingvoj mem evoluas kaj estas ofte plivastigataj kaj influataj de evoluo de aliaj lingvoj. Programistoj tre vigle kaj volonte diskutas pri la perfekta kaj la plej utila programa lingvo.

La kaŭzoj por diferenceco de programaj lingvoj estas diferencaj ol tiuj de naturaj lingvoj. La novaj programaj lingvoj ekestas pro teknika aŭ scienca evoluo aŭ komercaj interesoj de firmaoj. Ĉiu nova programlingvo promesas pli bonan uzadon de tekniko, pli grandan efikecon, pli grandan uzeblecon aŭ taŭgecon por iu tasko, kaj pli vastan subtenon de diferencaj komputilaj sistemoj. Multaj malgrandaj sciencaj programlingvoj ekestas kiel eksperimento aŭ nur pro kreemo de sciencistoj.

Mi mem lernis ĝis nun pli ol 20 programajn lingvojn kaj uzis pli longan tempon ĉirkaŭ 12 lingvojn. Miaj plej gravaj programaj lingvoj ordigitaj laŭ tempo de lerno estis:

  1. Basic – C-64
  2. Assembler – C-64
  3. C – Amiga 500
  4. C++ – Amiga 500
  5. Modula 2 – (dum studado)
  6. Java
  7. Tcl
  8. Perl
  9. XOTcl
  10. Smalltalk
  11. C#
  12. JavaScript

Mi pristudis ankaŭ: Ruby, PHP, Python, Haskell, Lisp, Polog, Oz (verŝajne ankaŭ kelkaj aliaj). Aktuale mi programas plej intense en lingvoj: Java, XOTcl, C#.

La plej popularaj programaj lingvoj estas lingvoj kun plej multnombra programaro kaj plej granda nombro de programistoj. Aktuale tiuj lingvoj estas: C, Java, C#, Perl, Python, Visual Basic, PHP, JavaScript, Ruby kaj maljuna Cobol. Vidu ankaŭ Statistiko pri populareco de programlingvoj Tiuj indeksoj kutime pritraktas kelkajn indicojn por komputi la popularecon. Lingvo, kiu iĝis plej rapide populara, estis en la jaro 2006 la lingvo Ruby. Programistoj do lernas tiujn lingvojn por pli facile trovi la laboron. Oni povas trovi pli da informoj pri tiu lingvo.

Oni povas diferenci kelkajn kategoriojn kaj trajtojn de programaj lingvoj.

  • kutima arto de problemoj, kiujn pritraktas la lingvo
  • baza koncepto de lingvo: funkcioj, objektoj, …
  • testado de sintakso (tipoj)
  • arto de kurado
  • baza permesilo de lingvo
  • lingvoj por cetera mastruma sistemo.
  • komunikebloj kun aliaj programoj aŭ sistemoj
  • reuzado de alilingvaj programoj
  • lingvoj por cetera homgrupo: lernantoj, matematiksitoj, hobiuloj

Programistoj scias, ke principe per ĉiu lingvo kun potenco de Turing-maŝino estas eble programi ĉiujn algoritmojn. Mia sperto estas, ke oni uzu por ĉiu takso la plej avantaĝan lingvon. Estas bone koni kelkajn programajn lingvojn kaj ne preferi ĝenerale unu ceteran lingvon. Ofte oni povas reuzi spertojn de programistoj en unu lingvo por programi sistemon en la alia lingvo. Oni devas pripensi ne nur la nunan situacion, sed ankaŭ aliaj ĉirkunstancojn.

  • Kiuj aliaj programistoj devas flegi la programon
  • Kun kiuj aliaj sistemoj devas komuniki la programo

En profesia laboro la elekto de programa lingvo ne estas tasko de programisto kaj ofte tio estas historia elekto.
Lernado de nova programa lingvo estas peniga laboro, sed kun ĉiu aldona lingvo, kiun oni regas, la lernado estas pli facila. Programistojn ofte bezonas kelkajn jarojn por bone regi iun programan lingvon. Grava estas ankaŭ la regado de programaj iloj kaj de programa medio. Oni bezonas ankaŭ spertojn pri kutimaj solvoj kaj insidojn de tiu programa lingvo. Tial programistoj forte kontraŭas la aliajn lingvojn ofte nur por tute egocentraj kialoj, kiuj estas la sekurigo la valoro de ilia sperto

Elekto de programlingvo

Mi pensas, ke plej ofte tiu elekto estas tute hazarda kaj dependas de lernejo kaj laborejo de programisto. Se oni havas la ŝancon mem elekti la lingvon oni pritaksu:

  • Popularecon de lingvo (aktuala kaj historia)
    • Nombro de libroj pri tiu lingvo
    • Nombro de uzantoj. Vigleco de komunumo de programistoj
    • Historio kaj deveno de programa lingvo
  • Ekzisto de programa medio kaj aldonaj programaj iloj por tiu lingvo
  • Nombro de ekzemplaj programoj en tiu lingvo
  • Kategorio de programoj programitaj en tiu lingvo
  • Aldonaj ebloj de lingvo (GUI, Ligiloj kun dato-bazo, XML)
  • Permesilo kaj komerca aŭ libera uzado de baza fonto de programa lingvo

Programa Lingvo por Komputila Lingvistiko

Lingvistika programado estas tre vasta kampo, kaj ne estas facile diri, kiu programa lingvo estas la plej avantaĝa por tio. Oni devas diferenci inter sciencaj esploraj programoj aŭ sistemoj programitaj por averaĝa uzanto. Ofte lingvistika programaro estas parto de aliaj grandaj sistemoj (ekzemple: tekstaj redaktiloj) kaj devas subordigi sin al ruloj de gasta sistemo.

Por lingvistika programaro grava estas facila reuzado. Tial multaj lingvistikaj sistemoj estas programitaj en Javo, kiu nuntempe havas grandan rolon en komerca programado. La ĉefa avantaĝo de tiu programlingvo estas granda populareco en pluraj kampoj. Sed ankaŭ ekzistas grandaj lingvistikaj programoj programitaj per skriptaj lingvoj kiel: Python (NLTK), Perl kaj Tcl (Ellogon).

Mi spertis, ke sekvaj trajtoj estas gravaj por komputila lingvistika:

  • subteno de UTF-8 kaj aliaj historiaj enkodoj
  • programado de grafika uzantointerfaco
  • facila kaj utila prilaboro de signoĉenoj
  • por prilaboro de tekstoj estas tre praktikaj regulaj esprimoj
  • prilaboro de XML-dokumentoj
  • interfaco al SQL-datumbazoj
  • bona interkomuniko kun aliaj programoj
  • bona programa medio
  • facila instalado kaj pretigo de instaladaj paketoj

Kelkajn lingvistikaj sistemoj, kiuj bazas sur limiglogika programado aŭ predikatkalkulo, uzas specialajn programlingvojn kiel Prolog aŭ Oz. Tiuj sistemoj estis plejofte kreitaj en universitataj medioj.Mi mem spertis, ke la plej avantaĝaj estas dinamikaj skriptlingvoj, kiuj estas ankaŭ nuntempe taŭgaj por grandaj sistemoj. Nun la plej popularaj kaj rekomendindaj estas lingvoj: Python kaj Ruby. Frue la programistoj ofte diskutis pri esprimpovo de lingvo aŭ sintakso. Mi ŝatas lingvoj, en kiuj oni povas per mallongaj esperimoj programi potencajn reuzeblajn strukturojn. Tiuj lingvoj estas: Smalltalk, Ruby, Python aŭ XOTcl.

Jen ekzempla kodo, kiu donas la lastaj 2 literon de vorto por diferencaj programaj lingvoj.

  • Java – vorto.substring(vorto.length()-2)
  • C# – vorto.Substring(vorto.Length-2)
  • Python – vorto[-2:]
  • Tcl – string range $vorto end-2 end
  • Smalltalk – vorto last: 2
  • Ruby – vorto[-2,2]
  • C – if (strlen(vorto)>2) vorto += strlen(vorto)-2;
  • C++ – new String(vorto,vorto.lenght()-2,2)

Por C kaj C++ tiu takso estas eĉ pli komplika, ĉar oni devas ankaŭ pripensi la uzadon de memoro. Oni bone vidas, ke tiu simpla tasko estas en Smalltalk kaj en skriptaj lingvo la plej klara kaj mallonga.Lingvoj kiel C++, Java aŭ C#, kiuj havas ridigan statikan tipan sistemon havas tre grandan rolon en komerco kaj estas uzataj por tre grandaj komercaj projektoj. Sed por komputila lingvistiko, kie la algoritmoj povas esti tre komplika, tiu ridiga tipa sistemo povas tre ĝeni kaj malutili. Tiuj lingvoj ne oferas potencajn abstraktaĵojn por mallongigi la programan kodon. Do la programado per tiuj lingvoj estas malpli efika kaj la rezulta kodo pli longa. Tio estas ankaŭ maloportuna por posta flego de sistemo.

La konata strategio estas ankaŭ programi unue la prototipon en skripta lingvo kaj poste, kiam oni estas certa pri la funkciado, reprogrami tiun modulon en lingvo kiel C,C++, Java aŭ C#. Tion oni faras plej ofte por rapidigi aŭ malpligrandigi tiun modulon. Lingvo Tcl estas ankaŭ nomata kiel glutea lingvo. Tiu lingvo estas do uzata kiel gluteo de moduloj programitaj en lingvo C aŭ C++. Ankaŭ aliaj skriptaj lingvoj povas esti uzataj kiel gluteo.

Mia sperto estas, ke ankaŭ grava estas stabila programa medio, populareco kaj aldonaj moduloj. Ĉiam estas pli oportune reuzi fremdan modulon ol programi ilin de komenco. Oni atentu ankaŭ, ke aliaj programistoj volas ankaŭ tralegi kaj reuzi la programpecojn. En profesiaj sistemoj ĉiu linio de kodo estas nur unufoje skribita sed averaĝe 10-foje tralegita. Fine al neniu malutilas lerni multajn programajn lingvojn.

Programa lingvo de „Esperantilo“

Esperantilo estas programita en Tcl (Wikipedia) kun aldona objektema modulo XOTcl. La lingvo apartenas al tiel nomataj skriptaj kaj interpretaj lingvoj. Tiu lingvo estas ofte uzata de ne informatikistoj, ĉar ĝi estas facile lernebla. Lingvo Tcl estis tre populara en 80-aj jaroj, sed ĝia populareco nun konstante malkreskas. En lasta tempo Tcl malgajnas la popularecon principe por lingvoj: Python kaj Ruby, kiuj oferas enprogramitan objektemon.

Normale oni programas en tiu lingvo nur malgrandajn programojn. Esperantilo estas en tiu kazo escepto. Tio estis ebla plejparte, ĉar mi uzis objekteman metodon por strukturi la programon. Kiel programada medio mi uzas XOTclIDE. Tiu medio estas programita laŭ modelo de Smalltalk medioj. Ĝi ebligas interaktivan metodon de programado kaj facilan trarigardon de sistemo.

Mi mem elektis tiun lingvon pro mia propra prefero. Mi spertis, ke per skriptaj kaj dinamikaj programaj lingvoj mia efikeco de programado estas la plej alta. Kompare al programlingvo Java aŭ C# per XOTcl mi estas 5-10 foje pli efika, kvankam mi ankaŭ havas multjaran sperton kun tiuj lingvoj. Tcl havas grandan maturan komunumon de programistoj. Ilia ĉefa medio estas Wiki Tcl kaj mesaĝlistoj comp.lang.tcl. Ekzistas multaj libroj kaj ekzemplaj programoj por tiu lingvo.

La efikeco de programado kaj eblo de rapidaj eksperimentoj estis la plej grava kaŭzo por elekto de lingvo. Sed ankaŭ aliaj trajtoj de tiu lingvo estas oportunaj por lingvistika programado:

  • subteno de UTF-8
  • facileco de programado de grafikaj uzantinterfacoj
  • subteno de ĉiuj aktualaj mastrumaj sistemoj
  • malgranda dimensio de instaladaj programoj
  • direkta subteno de signoĉenoj kiel ĉefa koncepto de lingvo
  • tre malgranda nombro de sintaksaj reguloj
  • facila lernado
  • facila reuzo de aliaj programoj per C-lingvo interfaco
  • facila enmikso de C/C++-moduloj
  • facila instalado por averaĝa uzanto

Ĉar neniu lingvo estas perfekta. Mi rimarkas ankaŭ kelkajn maloportunaj trajtojn:

  • Lingvo ne subtenas la koncepton de logika programado aŭ regulbazita programado, kiu estas ofte uzataj ĉe sintaksa analizo
  • La lingvo ne atingas la plej bonan rapidecon de C-programoj.
  • Objektema programdo per aldona modulo XOTcl ne estas tre populara
  • Malgranda komerca uzado de tiu lingvo (escepte de administrado de komputilaj sistemoj). Preskaŭ neniu subteno de grandaj komputilaj firmaoj.
  • Malgranda akcepto de tiu lingvo de aliaj programistoj

19.1.2007

Nova eldono 0.88 de programo „Esperantilo“

Filed under: ĝenerale — artur @ 21:40

Novaj funkcioj

  • Korektado de HTML paĝoj per ekstera programo HTML Tidy.
  • Ĉiuj preferaĵoj povas estas redaktata en unu dialogo (menuo; Prefaraĵoj->Redaktu prefaraĵojn)
  • Gramatika kaj stila korektado laŭ ekzemploj (pri koncepto legu blogon)
  • Pola traduka vortaro estas plivastigita je 3000 vortojn. La tradukojn estas plejparte trovitaj aŭtomate laŭ reguloj de pola vortfarado.
  • Oni povas nun precize difini la literojn uzatajn en redaktilo.
  • Esperantilo enhavas nun aldonajn enkodojn de Tcl-programlingvo.
  • Plibonigo de gramatika korektado.

Sintaksa Anlizo

  • Korekta analizo de duopaj frazkondikiloj „krom ke, malgraŭ ke, sen ke“
  • Analizo de infinitivaj priskriboj de adjektivoj kaj substantivoj: „preta labori, ordono ataki“. Tiuj adjektivoj kaj substantivoj devas estas speciale markitaj en esperanta vortaro.

Maŝina Tradukado al Pola Lingvo

  • Uzado de esperanto-esperanto vortaro ĉe tradukado
  • Substantivigo de verboj ĉe traduko de subfrazoj: „sen + INF, krom + INF“.
  • Aŭtomata derivo de „eto“-substantivoj laŭ reguloj de pola vortfarado.

Forigitaj eraroj

  • Misfunkcio de navigada kroniko en REVO-montrilo.
  • Word-dosieroj povas esti denove tradukataj per tradukada asistento.
  • Misfunkcio ĉe enigo de multaj vortoj en traduka vortaro.
  • Aliaj malgrandaj korektoj

Dankon al KaGu kaj Enbor por testado kaj erarreportoj.

17.1.2007

Maŝina tradukado de propraj nomoj

Filed under: maŝina tradukado — artur @ 19:45

Propraj nomoj farigas multajn problemojn ĉe maŝina tradukado kaj gramatika korektado. Malfacila estas la identigo de propraj nomoj kaj ilia sintaksa analizo. Ankaŭ tradukado de propraj nomoj ne estas facila kaj oni frontas multajn problemojn. En la plej simpla kazo propraj nomoj tute ne estas tradukitaj, en alia kazo depende de cela lingvo propraj nomoj devas havi fleksiajn finilojn. Kiel kutime la bonan enkondukon donas PMEG.

Similajn problemojn oni frontas ankaŭ ĉe mallongiĝoj, akronimoj, matematikaj simboloj kaj citaĵoj.

Korekta pritakso de propraj nomoj estas tre grava ĉe maŝina traduko. Ĉar en multaj ĵurnalaj tekstoj preskaŭ ne ekzistas frazoj sen propraj nomoj, la okulfrapa kvalito de tradukado dependas multe de tradukado de propraj nomoj.

Specoj de Propraj Nomoj

Propraj nomoj ĝenerale funkcias en frazo same kiel substantivoj. Ĝenerale oni povas diferenci proprajn nomojn laŭ:

  • Esperantigitaj aŭ ne esperantigitaj propraj nomoj
  • unuvortaj aŭ multvortaj propraj nomoj
  • puraj substantivaj aŭ adjektivigitaj propraj nomoj (ekz: Varsovia vento
  • tipoj de nomigitaj objektoj: geografiaj nomoj, firmaoj, homoj, asocioj, titoloj
  • Propraj nomoj, kiuj estas normalaj esperantoj frazpartoj (ekz: Libera Folio, Ondo de Esperanto)

Esperantigitaj propraj nomoj faras la plej malgrandajn problemojn, ĉar ili povas esti pritraktataj kiel normalaj esperantaj vortoj. En Esperantilo oni povas difini en esperanta vortaro por radikoj kaj substantivo, ke ili estas propraj nomoj. La gramatika korektilo sugestas skribi ĉiujn proprajn nomoj per grandaj literoj.

Propraj Nomoj en Sintaksa Analizo

Propraj nomoj funkcias en frazo same kiel substantivoj, sed ili ne povas havi la difinilon ‚la‘. Ne esperantigitaj propraj nomoj kutime ne havas la akuzativan finilon. Kelkaj esperantigitaj propraj nomoj aperas nur en plurala formo (ekz: filipinoj)

  • Paweł Lemian skibis tiun leteron.
  • Mi renkontis Krystyna lastan semajnon.
  • La reĝo ankaŭ fundis urbon Mins Mazowiecki.
  • Reihn estas la plej granda rivero en Germanio.
  • TEJO-uloj partoprenis IS parolis pri EO kaj dancis laŭ DĴ ĉe E-muziko.
  • Maŝina Tradukado (MT) ne sukcesis plene. Oni ne devas multe atendi de MT.

En sintaksa analizo oni rimarku du konstruaĵojn. Unue la identiga priskribo de ceteraj substantivoj:

  • Sinjoro Marek Boder
  • Urbo Rybnik
  • Firmao MicoBrain

Due la familinomoj aperas ofte kun antaŭnomoj en duopoj. Sintaksa analizilo en Esperantilo grupigas tiuj nomojn en branĉo „nomo“.

sintaksa analizo de propraj nomoj

Identigo de Propraj Nomoj

Oni povas uzi kelkajn trajtojn de propraj nomoj por identigo

  • Propraj nomoj estas skribitaj per granda litero.
  • Propraj nomoj staras ofte post ceteraj substantivoj (sinjoro, rivero, libro, urbo…).
  • Ne esperantigitaj propraj nomoj ofte enhavas ne esperantajn literojn („xyąóćęłńśźż“).
  • Proprajn nomojn oni ofte skribas en apostrofoj.
  • Proprajn nomojn oni ofte skribas per kursivaj literoj.
  • Mallongiĝoj kaj Akronimoj uzas nur grandajn literojn (UEA, TEJO, UFO).
  • Propraj nomoj aperas multfoje en unu teksto.

Esperantilo uzas ankaŭ la internan liston de ignoritaj vortoj por identigi proprajn nomojn. Pripensebla estas ankaŭ vortaro de propraj nomoj. La kompleta listo de ĉiuj geografiaj nomoj aŭ ĉiuj homoj ne estas realigebla, sed oni povas celi kolekti proprajn nomojn, kiuj estas ofte uzataj en ia tekstaro.

Teknike tre komplika estas identigo de propraj nomoj, kiuj estas ŝajne normalaj esperantaj frazpartoj. Tio estas ofte nomoj de ĵurnaloj kaj asociacioj. Ankaŭ ofte neesperantigitaj propraj nomoj, familinomoj aŭ antaŭnomoj estas hazarde kutimaj esperantaj vortoj. Ni pripensu konatajn Esperantistojn: Claude Piron, Barbara Pietrzak.

Fine oni povas la taskon de identigo de propraj nomoj lasi al uzanto kaj oferi al li komfortan surfacon.

Aŭtomata kolektado kaj testado de propraj nomoj

Identigo de propraj nomoj povas esti praktika funkcio ĉe analizo de tekstaro. Por identigo de familinomoj estus tre praktika la listo de oftaj antaŭnomoj aŭ familinomoj. Ĉe konataj homoj aŭ geografiaj nomoj oni povus aŭtomate konsulti aliajn gradajn leksikonojn ekzemple: Vikipedio.

Tradukado de Propraj Nomoj

La tradukado de propraj nomoj estas aparte komplika afero. Unue oni devas kondiĉi, ke sintaksa analizo bone rekonis tiujn. La tradukado dependas de cela lingvo kaj la speco de propra nomo. Ni havas sekvajn eblojn.

  • Esperantigitaj propraj nomoj estas tradukitaj laŭ traduka vortaro.
  • Ne esperantigitaj propraj nomoj ne estas tradukitaj.
  • Ne esperantigitaj propraj nomoj estas tradukitaj laŭ reguloj de fonta lingvo.

En slavaj lingvoj, kie verboj estas fleksigitaj laŭ genro, estas tre grava la genro de la persono. Ekzemple oni tradukas.

  • Barbar Pietrzak legis . Barbar Pietrzak czytała.
  • Claude Piron legis. Barbar Pietrzak czytał.

Ankaŭ en pola lingvo familinomoj havas finilojn.

  • Mi ofte aŭskultis Barbar Pietrzak en pola radio. Często słuchałem Barbarę Pietrzak w polskim radiu.

Ĉar ne esperantigitaj geografiaj nomoj uzas la nomon de fonta lingvo, estas granda problemo, kiam la cela lingvo havas enproprigitan formon de tiu nomo.

  • Mi estis en Köln. (pola traduko) Jestem w Kolonii.

Plej komplika estas la tradukado de akronimoj kaj propraj nomoj, kiuj estas normalaj esperantaj subfrazoj. Ofte akronimoj ekzistas por iu specifa lingvo aŭ kulturo. Tipaj akronimoj de Esperanto UEA kaj TEJO oni ne povas traduki rekte al nacia lingvo, ĉar en tiu lingvo, tiuj nomoj ne estas konataj. La solvo povas esti ŝanĝo de akrionimoj al plena nomo aŭ aldona priskribo.

  • Kongreso de UEA okazis en Pekino. (pola traduko) Kongres UEA (Światowego Związku Esperantystów) miał miejsce w Pekinie.

Komplika estas ankaŭ pritrakto de nomoj de ĵurnaloj aŭ asocioj, kiuj ofte estas regulaj frazpartoj. Pricipe tiujn nomojn oni ne tradukas, sed ofte aldonas pluajn informojn.

  • Libera Folio okulfrapas per mistrafaj titoloj de siaj artikoloj. (pola traduko) "Libera Folio" (esperancka gazeta internetowa) zaskakuje nieudanymi tutułami swoich artykułów.

Tradukado de propraj nomoj en Esperantilo

Esperantilo ĝis nuna eldono prilaboras nur kelkajn tipojn de propraj nomoj. Esperantigitaj propraj nomoj ne faras problemojn kaj povas esti difinitaj en traduka vortaro. Sintaksa analizilo rekonas grupojn de antaŭnomo kaj familinomo, se ĝi trafas du nekonatajn vortojn, kiuj estas skribitaj per granda litero. Identiga suplemento de substantivo estas rekonata. Mankas nun la eblo difini kompleksaj propraj nomoj kaj tradukado de akronimoj. Ankaŭ bezonata por pola tradukado genro de antaŭnomoj ne estas uzata, do ĉiuj nomoj estas aŭ viraj aŭ inaj. Fleksio de familinomoj estas en pola lingvo tre kompleksa kaj ĝis nun tute ne konsiderata. Mi volas iam kolekti ĉiujn substantivoj, kiuj povas estas priskribitaj per propraj nomoj (ekz: Sinjoro, Urbo, Rivero, Firmao). Mi supozas, ke por plibonigo de tradukado, estus necesa antaŭa analizo de teksto je propraj nomoj.

Alia temo estas la difino de tradukaj informoj de uzanto por cetera teksto. Tio estas propraj vortaroj kaj listoj kun propraj nomoj.

12.1.2007

Prilaboro de HTML-paĝoj per Esperantilo – programo „TIDY“

Filed under: programado,uzantoj — artur @ 19:41

Esperantilo estas baza UTF8-redaktilo aŭ Tekstredaktilo.

Per ĝi oni ne povas prilabori tekstajn dokumentojn simile al dokumentoredaktilo ekzemple kiel Open Office. Dokumentoredaktiloj oferas funkciojn, kiuj ebligas, ke uzanto povas vidi kaj prilabori tekstajn dokumentojn sur komputilo same kiel ili aspektos post la preso. Tiu funkcio oni nomas per angla akronimo WYSIWYG.

Sed ankaŭ per baza tekstredaktilo oni povas prilabori riĉaspektajn dokumentojn. Oni uzas por tio specialajn formatojn. Plej konataj estas HTML, LatexDocBook. La lasta formato bazas sur formato XML.

Oni povas uzi Esperantilon por redaktado de tiuj formatoj, kiuj bazas sur tekstaj formatoj. Esperantilo enhavas ankaŭ aldonajn funkciojn por prilaboro de formatoj HTML kaj XML. Tiuj formatoj estas rekonataj ĉe literumado, gramatika korektado kaj maŝina tradukado. Ekzistas speciala funkcio (menuo: Dosiero-Montru en HTML-Foliumilo) por montri la redaktatan paĝon en HTML-Foliumilo.

Mi mem uzas Esperantilon por redaktado de miaj TTT-paĝoj. Uzantoj sugestis al mi pliriĉigi la redaktilon per aldonaj funkcioj por prilaboro de HTML-paĝoj. Mi ofte devas decidi, kiujn funkciojn mi programos. Ofte reagoj de uzantoj aŭ miaj portempaj bezonoj kaj interesoj influas la decidon. Ĉar tempo kaj aliaj rimedoj estas limigitaj, do la decido ne estas facila. En la unua flanko mi volas programi funkciojn, kiujn mi mem aŭ aliaj uzantoj bezonas, en la dua flanko mi ne volas reprogrami funkciojn, kiujn havas aliaj programoj. Ekzistas do multe da aliaj tre bonaj kaj liberaj HTML-redaktiloj. Sed ne ekzistas programoj, kiuj povas korekti esperantajn tekstojn aŭ aŭtomate traduki de esperanta lingvo. Tial mi konscie ne programis konatajn specialajn funkciojn.

Por ne programi ĉion mem oni povas sekvi du strategiojn. Aŭ enprogrami la funkciojn de Esperanto en aliajn programojn. La plej bona por tiu takso estus OpenOffice. Aŭ uzi aliajn programojn aŭ pecojn de programoj en Esperantilo. Mi jam reuzas por literumado la programon Hunspell.

Mi delonge jam konas la programon Tidy, kiu povas kontroli kaj purigi la HTML-dosierojn. Ĉar la funkcio de Tidy estas tre utila, mi decidis direkte subteni tiun taŭgan programon en Esperantilo. Per menuo (Korektado->HTML-XML->Testu HTML) oni povas testi la HTML-dosieron je korekteco laŭ HTML-reguloj. Post la korektado aperas en la suba kampo de redaktilo listo kun eraroj en html-formato. Oni povas selekti la mesaĝon kaj la redaktilo montras en teksto la precizan kampon de eraro. Ĉar la programo Tidy estas angla kaj ne subtenas la esperantan lingvon, la mesaĝoj estas nur en angla lingvo. La programo mem estas tre malgranda (300kbytes), do mi decidis ankaŭ enmeti la programon en instalprogramon de Esperantilo por vidnozo. La uzantoj de Linukso eble facile povas instali tiun programon mem aŭ ofte jam havas ĝin en la sistemo. Tiu funkcio venos en sekva eldono de Esperantilo. Tio estos eble jam en kelkaj semajnoj.

9.1.2007

lingvistiko, esperanto, komputilaj projektoj

Filed under: ĝenerale,lingvistiko,maŝina tradukado — artur @ 21:01

Ideo de maŝina tradukado ekzistas ekde apero de komputiloj. Maŝina tradukado kaj arta penso estis la revo de unuaj programistoj, eble ĉar tiuj temoj estus bone komprenataj por vasta publiko. Tradukado estas malfacila tasko, kiun povas plenumi nur kelkaj homoj post longa lernado. Tial komputilo, kiu tradukas, estus la pruvo por taŭgeco de komputiloj.

Ĉiu nun scias, ke ne ekzistas komputiloj, kiuj povas pensi aŭ traduki en nivelo de homoj. Longe post multaj fiaskaj projektoj, en kiuj oni perdis grandan kvanton de mono, eĉ specialistoj pensis, ke programado de tiuj sistemoj ne estas ebla. Historio de komputika lingvistiko bone priskribas la konata dokumento Machine Translation: past, present, future. Ofte eĉ Esperantistoj varbas por Esperanto kun argumento, ke maŝina tradukado ne estas ebla kaj neniam estos ebla. En tiu kazo oni ofte prezentas tre bizarajn frazojn, kiuj nur tre malfacile estas tradukeblaj eĉ por profesiaj tradukistoj. Mi estas certa, ke per similaj argumentoj oni povus ankaŭ pruvi, ke tradukado ĝenerale ne estas ebla. Sed la temo de komputila lingvistiko ne mortis kaj eĉ lastatempe bone progresas. Kvankam ne ekzistas perfektaj tradukaj programoj, la unuopaj eroj de komputila lingvistiko aperas pli kaj pli ofte. Preskaŭ ĉiu uzas nun literumadon en redaktiloj kaj komputilajn vortarojn. Ankaŭ „google“ estas ja infano de komputila lingvistiko.

Kial fiaskis tiom da projektoj pri maŝina tradukado?

Oni povus ĝenerale diri, ke komputilaj projektoj tre ofte fiaskas. La duono de projektoj neniam finiĝas kaj 75% de projektoj ne atingas la celojn. Ili estas pli multekostaj aŭ ne havas la necesajn planitajn funkciojn. La temo de maŝina tradukado havas aldonojn specialajn trajtojn, kiuj eĉ faras tiujn projektojn eĉ pli malfacilajn kaj pli riskajn. Tio estas:

  • Oni havas tre altajn atendojn. Oni volas programojn, kiuj regas multajn lingvojn, tradukas en reala tempo en multaj direktoj kaj povas kompreni diritajn vortojn kaj mem paroli.
  • Oni bezonas multajn specialistojn de diversaj kampoj
  • La baza lingvistika teorio, kiu estas praktike taŭga, ne ekzistis. La historiaj teorioj ne estis taŭgaj por multaj kazoj.
  • Lingvistikaj programaj postulas grandajn necesojn al komputiloj. Ĝis 1980 komputiloj ne estas taŭgaj por lingvistiko, ĉar ili ne havis necesan rapidecon kaj memoron. La haveblaj komputiloj en frua tempo estis tro multekostaj. Oni pripensu, ke eĉ baza vortaro havas 50000 vortojn. Prilabori, traserĉi aŭ redakti tiun kvanton de informoj estas por tiamaj komputiloj tre malfacila tasko.
  • La projektoj preskaŭ ĉiam komencis de nulo. Lingvistoj nenion sciis pri komputiloj, programistoj nenion sciis pri lingvistiko. Oni devus skribi programojn kaj solvi bazajn teknikajn defiojn. Lingvistoj devis krei taŭgajn teoriojn.
  • Ĉiu profesia projekto havas nur limigitan kvanton da rimedoj. La unua limo estas tempo. Oni devas havi rezultojn post unu aŭ du jaroj. Post tiu tempo la membroj de projekto komencas iom komprenis pri la temo de projekto.
  • Tiuj projektoj estis tro grandaj. Organizado de grandaj projektoj estas eĉ pli komplika ol la temo de projektoj. La respondeculoj ofte pensas, ke ĉiu problemo estas solvebla per aldonaj partoprenantoj de projekto. Konata programista anekdoto diras, ke laŭ tiu pensmaniero oni povus konstati: Por havi unu novan homon oni necesus unu virinon kaj 9 monatojn da tempo. Oni povus duonigi la tempon havante du virinojn.
  • Ne ekzistis komputilaj materialoj, kiujn oni povis uzi de komenco.

Mi pensas, ke la unua problemo estas, ke la projektoj volis sole atingi ĉion. Oni ne provis dividi la taskon en multaj kampoj. Kvankam projektoj fiaskas, ili ofte lasas multajn rezultojn aŭ eĉ solvojn de unuopaj problemoj. Sed por monaj kaŭzoj estas ofte maleble transdoni tiujn rezultojn al sekvaj projektoj. Do multaj rezultoj malaperas en arkivoj por ĉiam. La projektoj malaperas, kvazaŭ ili neniam estis. En plej bona kazo restas de tiuj projektoj malgranda raporto aŭ scienca laboraĵo, sed vortaroj aŭ programa kodo, ĉio ĉi malaperas por ĉiam.

La unuaj projektoj estis pagitaj de militaj fortoj, ĉar ili bezonis maŝinan tradukadon por spionado de aliaj landoj. Tial la rezultoj de tiuj projektoj estis ŝtataj sekretoj. En universitatoj, kiuj ankaŭ havis lingvistikajn projektojn, oni uzis por projektoj studentojn, kiuj ne estas bonaj spertaj programistoj kaj ofte forlasis la projekton post unu aŭ du jaroj. Tio estas tro mallonga periodo por efike produkti uzeblajn rezultojn. Komercaj projektoj fiaskis miaopinie precipe por kazo de mallonga tempo. Komercistoj pensas precipe nur en unujaraj periodoj de librotenado. Ĝis nun preskaŭ ne ekzistas merkato por partoj de solvoj de komputiko. Tiu kampo de komerca programado laboras laŭ maniero ĉio aŭ nenio. Ĉu iu memoras pri sistemoj kiel Amiga OS, OS/2 aŭ diversaj aliaj programoj, kiuj por ĉiam malaperis, kvankam ĝi rulis bone kaj estis uzeblaj. Ĝis antaŭ mallonga tempo ŝajnis, ke en tiu komerca kampo povas esti nur unu gajninto. Tio estas aŭ IBM aŭ MS. Sed nun ekzistas alia komputila mondo de liberaj programoj. Do estas eble ruli la tutan sistemon nur per libera programaro.

Lingvistikaj projektoj. Ĉu problemo de interkomunikado?

Programistoj kaj lingvistoj devenas el tute aliaj kampoj de scienco. Ili havis alian manieron solvi la problemojn. Mi pensas, ke malbona kunlaboro inter lingvistoj kaj programistoj estas ankaŭ granda kaŭzo de malsukcesoj. Programistoj devenas de scienca kampo de matematiko. Ili serĉis laŭ matematika maniero la mallongan precizan formulon, kiu estas vera por ĉiu kazo. La akademia teorio de lingvistiko estas plena da logikaj formuloj, kiuj preskaŭ malestas en praktika uzo. La naturajn lingvojn oni ne povas priskribi per simplaj formuloj.

En komputilaj projektoj oni kutime havas du grupojn de homoj. La unua grupo estas tiel nomataj teknikaj fakuloj. Tio estas programistoj. Alia grupo estas fakaj specialistoj, kiuj scias iom pri temo de projekto. La sukceso de projekto dependas ofte de ebleco de lernado de du grupoj unu de alia. Programistoj devas lerni de fakuloj kaj fakuloj devas lerni de programistoj.

Lingvistoj devenas de humanecaj sciencoj, simile al filozofio aŭ literaturo. Por ili lingvo estis historie io sakra, io magia, io, kion oni ne nepre devas logike kompreni. Lingvistoj pritraktas lingvojn kun preskaŭ religia maniero. Ili akceptas misterojn kaj nelogikajn esprimojn. Ili ne pruvas. Ili ŝategas debati pri kuriozaĵoj. La argumento de aŭtoritato estas pli grava ol logika pruvo. Lingvistikaj teorioj estis do frue tute maltaŭgaj por programistoj, kiuj devas ja liveri pragmatikajn kaj praktikajn rezultojn. Mi pensas, ke nova generacio de lingvistoj iom post iom lernas uzi sciencajn metodojn en lingvistiko. Ili uzas statistikon, pruvas la rezultojn sur grandaj tekstaroj. Ili lernis ordigi la teorion laŭ ofteco de uzebleco. Kuriozaĵoj ne plu rolas gravan rolon en teorioj. Ili eĉ lernis uzi la komputilon kaj permesas al la aliaj tuŝi ilian sakran lingvon.

Sed ankaŭ la sinteno de programistoj kun rigida matematika fundo estas malutila por lingvistikaj projektoj. Bonan priskribon de takso de programado donas al ni Kulturaj aspektoj de komputil-programado. Programistoj atendis de natura lingvo similajn trajtojn, kiel ili tion konas de programaj lingvoj. Pritrakti naturajn lingvojn estas unue la arto administri esceptojn. Tial oni ne povas atenti iun formulon, kiu priskribas ĉiujn fenomenojn de lingvo.

La kutimaj problemoj, kiujn frontas programistoj, estas ankaŭ aliaj ol tiuj de lingvistiko. Kutime rezultoj de programoj devas esti tre certaj. Oni pripensu komputilaj sistemoj, kiuj de multaj jaroj laboras en bankoj aŭ en komerco. Komputiloj regulas multajn sistemojn. Ili konservas grandajn datumojn. Ili devas esti sekuraj kaj certaj. En lingvistiko, la problemoj estas ofte ne certaj. La problemoj havas statistikan naturon. En komputiko, ĉiu esprimo estas aŭ vera aŭ malvera. Naturaj lingvoj ne havas tiujn trajtojn. Tial lingvistikaj programoj devas prilabori datojn, kiuj enhavas erarojn, kiuj ne estas tute analizeblaj. Rezultojn de maŝina tradukado oni nur malfacile povas pritaksi, ĉar eĉ tradukoj de homoj estas diskuteblaj. Ne ekzistas objektiva mezuro de kvalito de tradukado.

Natura lingvo sekvas la statistikajn principojn de naturaj fenomenoj. Ekzemple oni povas kun 10 simplaj reguloj bone priskribi 80% de tekstojn, por restajn 10% oni bezonus 20 regulojn, kaj por lastaj 10% de tekstoj oni bezonus tute alian teorion kaj por multaj homoj tiuj frazoj estus diskutindaj rilate al ilia korekteco. Tiu fenomeno estas konata sur la nomo principo de Pareto

Komputila lingvistiko en nuna Stato

Lingvistoj kaj programistoj multe lernis de fruaj malsukcesoj. La nunaj sciencaj laboraĵoj havas altan praktikan taŭgecon. Ekzistas sukcesaj projektoj, kiuj pritraktas nur unu limigitan kampon de lingvistiko. Aliaj projektoj povas uzi la rezulton de aliaj projektoj. Por tio pli grava estas ankaŭ la libera programado, kiu sen monaj komplikaĵoj permesas uzi fruajn rezultojn de aliaj projektoj. La GPL permesilo garantias, ke la laboro de homoj iĝas parto de homa heredaĵo kaj ne malaperas en iu tirkesto. Tiu laboro ne povas esti ankaŭ misuzata de komercaj firmaoj. Sed ĉiam ekzistas danĝero, ke grandaj komercaj fortoj, kiuj por iĝi pli granda uzas iliajn plej danĝeraj armilojn, tio estas advokatoj, por malpermesi al aliaj ian aktivadon kaj pensadon. La plej malnobla kaj malverplena ilo en monoj de advokatoj estas softvaraj patentoj.

Malkontentiga estas ankaŭ komercigo de universitataj projektoj. Kvankam multaj universitataj projektoj estas financitaj de publika mono, kiu devenas ja de niaj impostoj, la rezultoj de tiuj esploroj ne estas libere atingeblaj. Do por angla lingvo ekzistas la libera semantika mapo de vortoj WordNet, sed la simila projekto por eŭropaj lingvoj EuroNet estas atingebla nur je granda prezo. Multaj universitatoj kunlaboras en tiu kampo kaj interŝanĝas la rezultojn de iliaj esploroj senpage, sed tio ja signifus, ke nur universitatoj rajtas esplori science laŭ sciencaj principoj, laŭ kiuj ja la scienca kono estas publika bono. Fine tiu komercigita scienco helpus al neniu kaj rezultoj, kiuj ne estas atingeblaj en vero ne ekzistas.

Kompreno de aŭtoraj rajtoj ĉe lingvistikaj fontoj povus esti malfacila problemo por komputila lingvistiko. Ĝenerale lingvo ne apartenas al iu speciala ulo. Zamenhofo ankaŭ igis Esperanton publika bono kaj li rezignis pri aŭtoraj rajtoj de Esperanto. Sed tio ne estas certa afero ĉe vortaroj. Vortaro estas unue la propraĵo de eldonejo. Ĉu vorto, kiu aperas en vortaro iĝas aŭtomate propraĵo de eldonejo. Ĉu iu frazo, aŭ iu speciala uzo de vorto estas propraĵo de aŭtoro de tiu frazo. Por eviti tiujn problemojn mi nur uzas liberajn fontojn kiel REVO ĉe mia programado. Povus esti, ke aliaj fontoj estas pli bonaj, sed uzo de tiuj fontoj estas malrekomendinda. Ni pripensu do la situacion. Mi korektis la internan vortaron en programo laŭ priskribo de profesia vortaro en tradicia libra formo, kiun mi aĉetis je normala prezo. Ĉe unu vorto tio ja ne estas problemo, sed se mi tion faris ĉe 100 aŭ 1000 vortoj, mi povas havi problemojn, ĉar iu povas akuzi min, ke mi ŝtelis la parton de vortaro. Tiu povos esti tre granda problemo ĉe Esperanto, ĉar tiu lingvo estas nova kaj konstruita, kontraŭe al naciaj lingvoj oni povus trovi la kreinto de iu vorto, frazo kaj speciala gramatika uzo. Mi esperas, ke mi ne havos tiun problemon, ĉar nek la programo nek Esperanto iĝos tiel popularaj, ke iuj komercistoj havos interesojn financi advokatojn por malkonstrui tiun projekton. Eble pro normalaj uloj tio ĝenerale ŝajnas tre malebla afero, sed tio bedaŭrinde ofte okazas ĉe programado.

Ekestis tamen pozitivaj aferoj. Multaj komercaj firmaoj publikigas la rezultojn de ilia laboro laŭ GPL permesilo. Ekzemple tre konata programlingvo JAVA iĝis lastatempe la parto de libera programaro. Memkompreneble, la firmaoj faras tion en situacio, kiam ili ne povas venki la komercan konkuranton kaj per tiu paŝo, ili volas minimume malfortigi la konkuranton. Sed firmaoj ankaŭ rimarkis, ke malfermo de projektoj pozitive influas la projektojn kaj tamen lasas al ili la eblojn perlabori monon per aldonaj servoj. Ankaŭ granda lingvistika projekto Open Logos iĝis malferma. Tio estas tre kontentiga afero, ĉar fontoj, kiuj unue iĝas parto de libera programado ne povas esti enproprigitaj de iu, do ili fariĝas la parto de homeca heredo.

Nun ekzistas multaj fontoj en interreto, de kiu oni povas elĉerpi la scion pri lingvistiko. Okulfrape estas, ke precipe nur pro angla lingvo ekzistas kompleta oferto de solvoj. Malfeliĉe angla lingvo estas la lingvo, kiu apartenas de komputila vidpunkto al la plej malfacila lingvo por komputila pritraktado. Tial la progreso estas tre malrapida. Tre kontentiga por mi estas la fakto, ke ankaŭ por pola kaj germana lingvo aperas bonaj fontoj. (pola gramatiko, Germana vortaro de sinonimoj) Ili estas ofte publikigaj de hobiuloj, sed kun bona kvalito.

Por grandaj lingvoj oni nun povus konstrui fortan sistemon de partoj, kiuj nun ekzistas. Programistoj scias, ke intergluo de moduloj, kiuj uzas diferencajn komputilajn teknikojn estas ofte tre malfacila tasko. Tial oni ne atendu rapidan progreson.
En komerca kampo ekzistas firmaoj, kiuj sukcesas vendi lingvistajn programojn al profesiaj tradukistoj je granda prezo. Kvankam profesiaj tradukistoj estas ofte plej grandaj kritikistoj de ideo de maŝina tradukado, ili mem ofte uzas tiujn programojn. Mi miras, ke ĝis nun oni pagas por tradukoj je tradukita vorto, kvankam ofte por kutimaj dokumentoj, la tradukistoj havas ja ŝablonojn kun preta tradukado sur iliaj komputiloj kaj ĉe „tradukado“ ili devas enskribi nur kelkajn nomojn kaj datojn. La profesia tradukado de oficialaj dokumentoj estas fabriko de mono, kaj tiuj homoj faros ĉion por longe havi tiun fonton de facila mono.

Oni ne esperu, ke profesiaj programoj aperas iam por Esperanto. Ne ekzistas oficialaj dokumentoj en Esperanto, kiujn oni devus traduki, do la neceso de tiuj programoj preskaŭ ne ekzistas. Nun nur kelkaj grandaj lingvoj estas entute pritraktataj de tiuj programoj.

Esperanto en komputila lingvistiko

Oni ofte parolas en Esperantujo pri taŭgeco de Esperanto por lingvistika komputiko. Tamen la rezultoj estas mizeraj. La principa kaŭzo de tio estas, ke projektoj, kiuj estas pagitaj de naciaj fontoj, ne volas subteni ne nacian lingvon. Esperanto povis ja ŝteliri en tiujn projektojn kiel interlingvo, sed verdire Esperanto ne estas el teknika vidpunkto bona interlingvo (legu). Mi ne pensas, ke tio ofte reokazos en la venonta tempo. Sed ekzistas projektoj en alia direkto, kiuj estas subtenataj de esperantista medio. Por mi la gravaj projektoj estas REVO, Tekstaro kaj PMEG. Esperanta vikipedio estas ankaŭ grava. Oni devas konstati, ke Esperanto konkurencas kun aliaj lingvoj en tiu kampo. Se oni komencas lingvistikan projekton, oni pritraktas, kiuj fontoj kaj solvoj estas nun uzeblaj kaj pretaj. En la unua flanko Esperanto promesas esti pli facila, en la dua flanko aliaj lingvoj (principe angla lingvo) havas pli da pretaj solvoj kaj fontoj. Mi pensas, ke ankaŭ en tiu kampo Esperanto jam malvenkis kun angla lingvo. Unue nun ĉiu programisto konas jam anglan lingvon, ĉar sen angla lingvo si ne sukcesis iĝi programisto. Due, kiu volas lerni novan kaj malofte uzatan lingvon de malgranda grupo por eksperimenti kun ĝi? Oni faras tion nur pro hobia intereso aŭ por lernado. La facileco de Esperanto ne povas konkeri la vastan aperon de angla lingvo en komputila lingvistiko. Mi pensas, ke nun la unua ŝanco per ia estado de Esperanto en komputila lingvistiko estas hobiaj projektoj kaj libera programado. En tiu situacio estas grave, ke ĉiuj fontoj estas publikigitaj laŭ libera permesilo.

Libera programado kaj komputila lingvistiko

Libera programado havis kelkajn sukcesojn en sia historio. La plej granda sukceso estas la libera mastruma sistemo linukso. Nun estas eble uzi komputilon, kiu rulas nur liberajn programojn. Tiuj programoj estas eĉ tiel grande sukcesaj, ke komercaj firmaoj, interesiĝas pri tiuj projektoj, kaj ne programistoj uzas tiujn programojn. Ĝis nun liberaj programoj estas skribitaj plejofte de programistoj por programistoj. Ili programis mastrumajn sistemojn, redaktilojn, programajn ilojn por sia ĉiutaga laboro. La natura lingvo estas por programistoj ne tre interesa. Tamen restas iama revo de fruaj programistoj programi komputilon, kiu pensas kaj kiu tradukas.

La defio de maŝina tradukado estas do interesa kaj konata por programistoj. Ĝis nun aperis jam kelkaj projektoj, kiuj aŭ rapide mortis aŭ ne estas aktive pluevoluigita (Traduki, Linguaphile, Translato). Tio estas normala afero. Plej ofte programistoj ne estas pretaj sole kaj por longa tempo prilabori unu temon. Ĉar ekestas tre multa kvanto de liberaj projektoj, oni nur tre malfacile povas trovi uzantojn kaj helpantojn. Ŝanco, ke iu projekto travivos la tempon de intereso de la unua aŭtoro estas tre malgranda. Komputilaj projektoj bezonas kutime kelkajn jarojn de maturiĝo. Tiu longa tempo estas necesa ĵus por lingvistikaj projektoj, ĉar en tiu tempo oni devas lerni vastan teorion. La maturiĝoestas ankaŭ necesa post reagoj de uzantoj. Estas tre malfacila afero programi programon, kiu estas facile uzebla. Por programistoj, iliaj propraj programoj estas ĉiam facilaj, tial ili nur malfacile rimarkas malfacilaĵojn pri uzebleco de programoj.

Projekto „Esperantilo“

Kiam mi komencis programi la unuajn liniojn de kodo por Esperantilo, mi neniam pensis, ke post du jaroj mi programos maŝinan tradukadon kaj pensos pri sintaksa analizo. Mi volis nur havi simplan redaktilon por vindozo kaj linukso, per kiu sen peniga instalado oni povas skribi tiujn strangajn esperantajn literojn. Poste mi pensis pri literumado kaj gramatika korektado, ĉar mi ĉiam forgesis la akuzativon. Mi skribis la programon unue por mi mem. Poste mi legis multe pri maŝina tradukado kaj ĝenerale pri komputila lingvistiko. Mi rimarkis, ke aŭtoroj ne estis bonaj programistoj, kaj ke ili tute ne konas novajn teknikojn de programado. En tiama tempo mi okupiĝis pri nova programa lingvo XOTcl kaj programada medio XOTclIDE, kiun mi antaŭe mem programis. Mi serĉis temon por pruvi la taŭgecon de tiu lingvo kaj programa medio. En miaj fruaj spertoj mi rimarkis, ke tiu programa lingvo permesas al mi pli efikan programadon. Mi ankaŭ trovis en interreto kelkajn materialojn pri Esperanto. Esperanton mi lernis frue tute hazarde de mia kolego kaj mi eĉ partoprenis la lokan kurson en urbo Essen. Mi ne iĝis membro de iu esperanta asocio. Mi trovis tre viglan REVO, MPEG kaj Tekstaron. Do mi ne devis komenci de nulo. Mi havis fontojn, kiujn mi povis uzi. Mi ankaŭ informis min pri similaj projektoj kaj ofte traserĉis la reton. Mi ne havas grandajn celojn kaj planojn, sed mi provis aldoni novajn funkciojn, kaj se ili funkcias, mi programas plu. Ĉar mi sciis, ke la risko, ke mi ne sukcesos, estas tre granda, mi de komenco elektis kelkajn strategiojn por malaltigi tiun riskon.

Mia programa metodo estas grande influata de tiel nomata Extrame Programming, kiun mi konis de programlingvo Smalltalk. La programa medio ebligas tiel nomatan interaktivan programadon. Laŭ tiu metodo oni povas ŝanĝi programon, kiu samtempe rulas. Tio estas tre helpema ĉe lingvistikaj programoj kaj tio instigas al eksperimentoj. Unue mi limigis la plej forajn celojn al tiuj, kiuj mi mem povas iam atingi. Do mi volis elpensi novan lingvon aŭ konstrui tute novan teknikon. Due mi difinis por mi kelkajn strategiojn:

  • La programo celas nur traduki de Esperanto kaj prilabori nur Esperantan lingvon.
  • La celaj lingvoj estas lingvoj, kiujn mi mem konas.
  • Mi ne kalkulas je helpo de aliaj je moto: „mi komencis ion kaj la aliaj tion finigis“.
  • Mi uzas jam konatajn teknikojn kaj teoriojn. Ĉar mi ne estas lingvisto mi ne volas eklabori novan sciencajn teoriojn.
  • Se tio estas ebla, mi uzas pretajn liberajn solvojn. Mi koncentriĝis pri specialaj esperantaj temoj, ĉar estas ne verŝajne, ke aliaj tiun faris.
  • La programo ĉiam devus esti uzebla por iu takso kaj liveri rezultojn. Poste la celo estas plibonigi la rezultojn. Mi celas evoluan progreson. Mi ne volis, ke la programo estas uzebla nur post kelkaj jaroj.
  • Mi publikiĝas samtempe ĉiujn rezultojn: vortarojn, fontan kodon, testajn frazojn.
  • Mi unue faras taskojn, kiujn nur mi mem povas fari. Do mi programas, sed mi uzas pretajn vortarojn. Mi mem ne kompletiĝas la vortarojn, ĉar tio povas fari poste aliaj. Mi plibonigas la vortarojn nur ĉe evidentaj eraroj.
  • Mi serĉas la dialogon kun uzantoj laŭ la maniero de libera programado.
  • Mi ne kunligas kun la programo iujn komercajn planojn kaj mi evitas ligojn kun komercaj medioj.

Esperantilo estas eksperimento, la programado povus ĉiam finiĝi, ekzemple ĉar mi ne vidus ŝancojn por plua evoluo aŭ mi ne plu ĝojus la programadon. Tial mi volas sekurigi la rezultojn de tiu projekto. Mi publikigas ĉiujn fontojn kaj vortarojn. Sekvaj projektoj povus tiujn fontojn uzi. Mi ankaŭ skribas tiun blogon por dokumenti la laboron. Ankaŭ, se la projekto estas hobia kaj malperfekta, ĝi povas esti fonto por kritiko kaj por komparo kun sekvaj projektoj.

Homoj sugestis al mi, ke tiu projekto estas tro ambicia, por hobia projekto de unu homo. Jes, mi certe tute same pritraktis tiun projekton frue, se iu donis al mi la planon programi ĝin. Sed nun mi jam pruvis por mi mem, ke estas eble pli ol mi tion pensis frue. Certe tio ne estas pruvo, ke la projekto progresas en simila tempo poste. En tiu projekto oni do ne pritaksu planojn sed faktojn. Kaj faktoj ne povas esti ambiciaj, ili estas veraj aŭ malveraj. Mi skribas tion, ĉar mi spertas, ke ofte eĉ uzantoj, kiuj iomete uzis la programon, ne raportas erarojn, ĉar ili pensas, ke la projekto ne havas ŝancon de pluevoluo.

Mi ankaŭ ne estas naiva programisto pri libera programado, ĉar mi havas longan sperton en tiu medio. Fakto estas, ke plej granda parto de projektoj vivas de unu persono, do mi devas fari ĉion sole. Programistoj, kiuj ĵus skribis kelkajn liniojn kaj poste varbas por aliaj programistojn devas seniluziigi, se ili esperas je granda helpo. La motivoj de programistoj de libera programado estas diferencaj, pura helpemo estas tre malofta. Oni certe ne povas kalkuli je helpemo de profesiuloj, ĉar ili vivtenas sin per ilia profesieco. Ankaŭ oni ne kalkulu je preciza kritiko, tio ankaŭ estus ja ia helpo.

En tiu tempo mi ankaŭ lernis multon kaj devis adapti miajn fruajn atendojn. Unue mi devis konstati, ke Esperanto estas natura lingvo kaj ne tre diferenca de aliaj naturaj lingvoj. Ekzistas kampoj en Esperanto, kiuj estas same komplikaj kiel en aliaj lingvoj. Do la facileco de Esperanto estas nur limigita en ceteraj kampoj.
Due mi rimarkis, ke la teorio de Esperanto ne estas fiksa. Ekzistas multaj diferencaj teorioj pri tiu lingvo kaj estas malfacile trovi klarajn respondojn pri detaloj. Ankaŭ la fontoj, kiuj estas atingeblaj en TTT, ne estas kompletaj.
Mi devis do ofte prilabori bazajn fontojn kiel vortaroj. Ĉar Esperanto estas tre nova lingvo kaj forte evoluas, ne ekzistas fiksa maniero de ĝia uzo. Esperantistoj ofte imitas sian gepatran lingvon. Tial la sintaksa analizo estas granda defio. La tre efika vortfarado en Esperanto malfaciligas samgrade la maŝinan tradukadon. Multaj statistikaj teknikoj de maŝina tradukado ne aplikebla por Esperanto, ĉar en tiu lingvo mankas sufiĉe grandaj paralelaj tekstoj (Tekstoj en du aŭ pluraj lingvoj). Sed tio estas ja normala prezo de naiva kaj hobia komenco.

La reagoj de uzantoj kaŭzas ofte pli da labore ol helpo. Sed ili estas necesaj kaj mi ĉiam respondas je leteroj de uzantoj kaj interesantoj. Mi ĝojas ĉiam pri la reagoj kaj mi povas diri, ke ĉiu, kiu skribas al mi, partoprenas en la projekto. Tiu blogo estas ankaŭ por mi la ilo por malplialtigi la laboron kun reagoj de uzantoj. Mi povos ja nun ofte respondi: Bonvolu legi la blogon kun numero tiu kaj tiu. Mia espero estas ankaŭ, ke aliaj programistoj malkaŝas por si mem, ke komputila lingvistiko ne estas tial senespere komplika kampo, kiel oni tion edukas.

3.1.2007

Vortaroj en Esperantilo

Filed under: programado — artur @ 19:19

Esperantilo enhavas kelkajn vortarojn, kiuj laboras ofte tute sendepende. La kaŭzoj estas kaj teknikaj kaj historiaj. Ĉar tio povas esti konfuza por uzantoj de programo, mi jen priskribas detale unuopajn vortarojn.

Esperanta vortaro

Tiu vortaro baziĝas sur unuopaj radikoj, kaj uzas similan modelon kiel REVO vortaro. La unua fonto por tiu vortaro estas ankaŭ REVO, sed poste mi vaste plivastigis la vortaron per aliaj derivoj. Mi devas konstati, ke la kvalito de tiu vortaro estas malpli alta ol REVO. La unua celo estis havi grandan nombron de validaj esperantaj vortoj. Ĉar mi uzas statistikajn metodojn kaj analizo de tekstaro, la rezultoj estas ofte adekvataj.

Ĉiu vorto en tiu vortaro havas strukturon: prefikso radiko sufikso Ekzemple prefikso: lern radiko: libr sufikso: o. Tio rezultas la vorton: „lernlibro“. Kiel sufiksoj oni povas uzi nur esperantajn finaĵojn aŭ kombinoj de tiuj. Por ekzemple oni devus difini la vorton: „pollando“ kiel „pol-land-o“ kun „land“ kiel radiko.

Tiu vortaro povas esti redaktata en speciala dialogo atingebla per menuo: Lingvistiko->Radikara Redaktilo

Tiun vortaron uzas Esperantilo por literumado, sintaksa analizo kaj gramatika korektado. Tial estas gravaj ankaŭ la gramatikaj priskriboj. Ekzemple por ĉiuj verboj oni povas difini, ĉu la verbo estas transitiva aŭ povas havi indirektan objekton.

La vortaro estas konservita kiel radikoj.xml dosiero, kiu estas en la programo. Sed mi oferas ankaŭ tiun vortaron kiel XML.

Multlingva vortaro, Traduka Glosaro

En tiu vortaro estas konservitaj tradukoj al naciaj lingvoj. Teknike ekzistas unu listo de esperantaj vortoj (nur bazaj formoj) kaj kelkaj listoj po unu por nacia lingvo. Esperanto (listo kun esperantaj vortoj, ĉiu vorto havas numeron)

1 - skribi, 2 - domo, 3 - homo

Germana lingvo

1 - schreiben, 3 - Mensch, 3 - Leute

Angla Lingvo

1 - write, 2 - house

Se oni difinas novan tradukon, paro de vortoj, kaj la esperanta vorto ne ekzistas en la unua listo, Esperantilo akceptas nur la vortojn, kiuj ekzistas en Esperanta vortaro.

Tiu vortaro povas esti redaktata en speciala dialogo atingebla per menuo: Lingvistiko->Multlingva Vortaro. Oni povas uzi ankaŭ rapidan funkcion (Traduku al nacia sub kursoro) direkte en redaktilo per klavkombinoj (Control-q, Control-space). La vortaro enhavas ankaŭ aldonaj priskriboj pri fleksio kaj gramatiko (legu pli en mia blogo pri glosaro)

Trajtoj de vortaro

  • Nur vortoj en baza formo
  • Participoj estas eblaj
  • Vortgrupoj aŭ Frazpartoj ne estas eblaj (nur unu vorto)

La vortaro estas konvservita kiel Metakit datobanko en dosiero vortaro.mk. Dum la programado mi tamen uzas SQL-Datonbankon mysql, ĉar ĝi estas pli rapida kaj oferes pli bonaj ebloj de traserĉado.

Vi povas direkte elŝuti tiujn vortarojn (unu listo po ĉiu lingvo) de Esperantilo – ĉefa pago

Vortaro de frazpartoj

Tio estas simpla teksto en speciala formato uzata ĉe tradukado. Nun nur tre bazaj funkcioj. La dosiero de pola vortaro estas frazparto_pl.txt. La vortaro uzas specialan formaton kaj ne ekzistas speciala redaktilo por tiu vortaro. Ĉar tiu funkcio estas tre nova kaj eksperimenta, la formato povus ŝanĝiĝi.

Revo Vortaro

Tute sendependa leksikono, kiu estas la kopio de REVO. Mi tamen forigis de tiu vortaroj tradukojn kaj priskribojn pri fontoj por ŝpari spacon.

Vortaroj por literumado per Hunspell

Ili estas specialaj vortaroj por programo Hunspell, kiun mi uzas en Esperantilo por literumado. Normale kun esperantilo mi eldonas nur unu vortaron por Hunspell nur por Esperanto. Tio estas dosieroj eo-Eo.dic kaj eo-Eo.aff. Mi mem ne konstruis tiujn dosierojn kaj ili povas diferenci de interna propra vortaro de Esperantilo. Tiuj dosieroj devenas de OpenOffice projekto. Pli pri tio mi skribis en blogo Literumado. Oni povas instali aldonajn dosierojn por aliaj lingvoj. En Esperantilo, Hunspell estas ĉiam uzata por konstrui liston de proponoj dum la literumado.

1.1.2007

Stila kaj gramatika korektado per prototipoj en programo „LanguageTool“

Filed under: lingvistiko,programado — artur @ 20:59

Mi lastatempe detale rigardis la projekton LanguageTool de Daniel Naber. Tiu interesa projekto de germana programisto estas nun en relative matura stato. La projekto celas oferi gramatikan kaj stilan korektadon por diversaj lingvoj. La temo por mi tre interesa, ĉar ankaŭ Esperantilo oferas similajn funkciojn.

Teknika Ideo

La aŭtoro elektis tre pragmatikan metodon de gramatika korektado. Ili baziĝas sur prototipoj. La programo komparas ĉiun frazon kun la prototipo. Kiam la prototipo konformas kun la frazo, difinita mesaĝo kaj propono de plibonigo estas oferata al uzanto.

Ekzempla prototipo: "The is". Mesaĝo: „Vi eble volis skribi There is“.

Pli kompleksaj prototipoj bazas sur markitaj tekstoj (angle: tagged text). Por ĉiu vorto estas trovita la gramatika kategorio (markilo), kiu povas signifi la vortkategorion (ekz. substantivo), kazon aŭ nombron.

Ekzempla prototipo: „give PPR advise“. PPR esta markilo por pronomoj. La regulo trovas la intermikson de vortoj „advice“ kaj „advise“.

Do la programo ne trovas ĉiujn erarojn sed nur erarojn, kiujn oni difinis en reguloj. Evidente tiuj eraroj ne estas trovitaj per literumado, ĉar la vortoj estas ja konataj. La reguloj estas projektitaj por trovi plej oftajn erarojn, aŭ tajperaroj aŭ eraroj kutime faritaj de ne anglalingvanoj, kiuj devas skribi angle. Por la projekto estas tre grave, havi la statistikajn informojn pri oftaj eraroj. La projekto enhavas do bazon kun plej oftaj eraroj, faritaj de uzantoj. La projekto trovis kunhelpantojn, kiuj difinis aldonaj reguloj por kelkaj aliaj lingvoj.

Diplomlaboraĵo

La projekto kreiĝis kiel diplomlaboraĵo ĉe germana universitato. Interese, ke kvankam la aŭtoro estas germano, li skribis la laboraĵon en angla lingvo, kaj la unua lingvo, kiu povas esti korektita, estas la angla lingvo. En la laboraĵo li tre detale enkondukas en la temo de gramatika korektado. La laboraĵo diferencas tri eblajn metodojn:

  • sintaksa analizo
  • prototipoj de eraroj
  • statistike bazitaj sistemoj

Mi elektis en esperantilo, kiu ankaŭ povas trovi gramatikajn erarojn la metodon de sintaksa analizo. Poste mi uzis tiun analizon ankaŭ por maŝina tradukado. La aŭtoro de LanguageTool elektis por pragmatikaj kialoj la metodon de prototipoj (rule based checking). La unua kialo por tio estas, ke nun ne ekzistas bonaj liberaj sintaksaj analiziloj. En tiu laboraĵo aŭtoro priskribas ankaŭ tre interesan koncepton de regulitaj lingvoj. Regulitaj lingvoj estas lingvoj kun pli rigidaj kaj strikte difinitaj reguloj. Tiuj lingvoj, baziĝas sur naturaj lingvoj, sed ofte uzas nur parton da vortoj. La celo estas unue krei dokumentojn, kiuj estas pli legeblaj ekzemple por fremdlingvanoj. Tiu ideo ne estas nova ankaŭ en Esperantujo, ĉar ekzistas ankaŭ streboj krei tekstojn, kiuj estas facile legeblaj por komencantoj. Mi pensas nur per lernolibroj kiel „Gerda malaperis“ (Elŝutebla de Lernu.net), en kiu oni trovas nur limigitan (regulitan) esperantan lingvon, kies nivelo kreskas en ĉiu sekva ĉapitro.

Kunlaboro kun OpenOffice

La tre bona trajto de projekto estas kunlaboro kun OpenOffice. Oni povas tre simple instali (plivastigi) redaktilon OpenOffice per LanguageTool. Do la uzanto ne devas forlasi ĝian kutiman medion por skribi tekstojn. En la dua flanko, LanguageTool uzas pretajn funkciojn de OpenOffice, kaj la aŭtoro de devis programi ilin mem. Ekzistas tamen la eblo uzi la programon sen OppenOffice. Sed tio estas utila afero eble nur por testado.

Uzado de programo

En la uzado de programo plaĉis al mi kelkaj trajtoj. Uzanto povas mem ŝalti kaj malŝalti la regulojn. Tio estas grava, ĉar kelkaj reguloj donas mesaĝon ĉiam, kiam aperas certa vorto, kiu estas ofte misuzata. Due la reguloj estas difinitaj ekstere de programo en speciala dokumento (grammar.xml) en XML-formato. Ĉiu uzanto povas, post kiam li lernis la programan lingvon de tiuj reguloj, krei proprajn regulojn. Ekzistas nun aliaj aŭtoroj, kiuj nur kreas regulojn por iu lingvo. Tio rezultigas bonan partigon de laboro.

Libera programado

Tiu projekto estas ankaŭ bona ekzemplo por sukcesa kunlaboro de kelkaj liberaj projektoj (Open Source). La bazan teknikon por trovi markilojn por vorto liveras la projekto de Finite state utilities de Jan Daciuk. La reguloj por pola lingvo estas programita en alia devena projekto de Morfologik. Mi skribis en mia blogo, ke tiu tasko de markado (pos tagging) estas por esperanta lingvo tre simpla. Sed por aliaj lingvoj la tasko estas tre komplika. Mi supozas, ke la aŭtoro de projekto ne havis ŝancojn realigi la projekton sen helpo de aliaj liberaj fontoj.

Mi povas nur esperi, ke ankaŭ en Esperantujo kreiĝos tiaj liberaj lingvistikaj iloj kaj lingvistikaj fontoj, kiuj helpas al sekvaj projektoj. Ekzemple estus grandege havi bazon de plej oftaj eraroj en Esperantaj tekstoj. Tre interesa estas la ideo de Aŭtoro de projekto morfologik en blogo (pola lingvo), kiu sugestas analizi la ŝanĝojn en vikipedio, ĉar ofte la ŝanĝoj estas korektoj de gramatiko kaj stilo. Mi jam antaŭe penis pri analizo de mesaĝoj en grupo soc.culture.esperanto, ĉar oni ofte trovas tie leterojn nur kun korektoj de antaŭaj leteroj. Sed programo, kiu aŭtomate povas trovi tiujn korektojn, ne estus tre simpla.

Interesa historio de projekto

La kreinto de projekto ŝajne ofte ŝanĝis la strategion kaj eksperimentis kun diversaj ebloj. Li tri foje ŝanĝis la programan lingvon kaj tute reprogramis la projekton. Unue li uzis Perl, poste Python kaj nun Java. Mi trovis nur la klarigon, kial li ŝanĝis la lingvon de Perl al Python. Python estas pli klara kaj pli bone objektema. La kialon por ŝanĝo de Python al Java mi ne trovis. La elekto de programa lingvo povus esti tre grava por projekto. Java-programoj bone kunlaboras kun OppenOffice sed kutime programado ne estas tiel efika kiel per Python. La programa lingvo estas ofte la unua kazo por trovi aliajn programistojn. En libera programado oni programas senpage, la programado devas ĝoji la programiston. Kaj multaj projektoj kreiĝas nur por tasko lerni aŭ uzi ian teknikon.

Kion mi lernis de tiu projekto

Unue mi povas pririgardi la sukcesan projekton kaj pripensi ĝian historion. Ĝi povus esti la imitmodelo ankaŭ por Esperantilo. Mi jam antaŭe pensis pri stilaj korektoj en Esperantilo, kaj eĉ mi kolektis kelkajn proponojn, sed fine mi koncentriĝis pri maŝina tradukado. Bona ideo estas evidente la ekstera difino de reguloj, kiuj povas esti redaktata de uzanto, kaj eblo malŝalti kelkajn regulojn. Tio estas eĉ pli grava, ĉar en Esperantujo ekzistas kelkaj formoj, kiuj ne estas komune akceptitaj kaj diskutindaj. La dua leciono estas bona kunlaboro kun OpenOffice. Tiu estas eble la ĉefa kazo por multaj kunhelpantoj kaj uzantoj. Esperantilo nun estas ĉefe la traduka sistemo, kaj eble estus bone havi bonan kunlaboradon kun OpenOffice. Programi tion estas tre peniga kaj teknike komplika laboro. Mi esperas, ke eble iam kreas iu libera traduka sistemo por OpenOffice kaj mi devos nur enprogrami Esperantilon en tiun programon.

Powered by WordPress