Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

30.3.2007

Esperantilo sur Linukso

Filed under: ĝenerale,programado — artur @ 18:54

Mi ĝis nun ne preparis la instalan pakedon por linukso. Multaj uloj uzas la programon sur linkuso. Mi mem programas kaj plejparte uzas la programon sur linukso. Tamen mi scias de elŝuta statistiko de servero, ke plej multaj homoj tamen uzas la vindozon. La instalado sur linukso estas sufiĉe facila por uzantoj de tiu sistemo. Oni devas elŝuti la dosieron esperantilo.bin kaj la dosieron vortaro.db.zip en unu dosierujo kaj lanĉi la programon „esperantilo.bin“. Por lanĉi la programon, vi devas enmeti la lanĉrajton por la dosiero „esperantilo.bin“. Oni tion faras per komando

chmod u+x esperantilo.bin.

Poste oni povas lanĉi la programon per komando

./esperantilo.bin

Pri la baza tekniko de programo mi skribis en mia frua blogo. Uloj, kiuj interesas pri programado de Esperantilo, povas uzi la EsperantiloSDK (more…)

13.3.2007

Uzado de Esperantilo sur TTT-Servilo

Filed under: programado — artur @ 19:14

En la lasta tempo Hokan instigis min pripensi la uzadon de Esperantilo sur TTT-Servilo. Lia ideo estas oferi la gramatikan korektilon ankaŭ per TTT-formularo, por ke la uzantoj ne bezonus instali la programon sur sia komputilo. Ekzistas nun multaj programoj, kiuj laboras nur per TTT-montrilo. Ĉiujare ili estas pli kaj pli komplikaj kaj ilia uzebleco similas al kutimaj programoj, kiuj oni devas instali sur komputilo. Mi mem kiel programisto ne estas granda ŝatanto de tiuj TTT-programoj. La programado de TTT-programoj estas peniga kaj oni ofte nur per trukoj atingas tion, kion oni volas. Longe la tekniko de TTT-montriloj ne estis stabila kaj malrapida konekto al interreto estas kaŭzo, ke uzado de tiuj TTT-programoj ne estas flua. Ekzistas ankaŭ multaj avantaĝoj de tiuj TTT-programoj:

  • Uzanto ne devas intali ilin sur sia komputilo.
  • La refreŝigo kaj administro de tiuj programoj estas centralaj sen agado de uzantoj.
  • Tiuj programoj estas atingebaj de preskaŭ ĉiu punkto de mondo.
  • Tiuj programoj estas uzeblaj per multaj homoj kaj perfektaj por grupa kunlaboro.

Mi programis la Esperantilon, en tiu maniero (en moduloj), ke oni povu ĝin uzi por multaj celoj. Esperantilo estas ja libera (malferma) programo, kiun oni povas adaptigi por ĉiu komputilo kaj uzi diversmaniere. La kondiĉo por tiu estas, ke oni scias sufiĉe pri programado aŭ ĝenerale pri informatiko. Tiu limigas la uzadon por avantaĝa homo al antaŭpreparita programo. La precipa uzado de Esperantilo estas redaktilo kaj sistemo por maŝina tradukado, kiun oni povas instali sur Vindozo kaj Linukso kaj uzi sole sur propra komputilo. Mi pensas, ke tiu scenaro de uzado estas la plej ofta kaj kutima por plejmulto de uzantoj. Pri uzado en TTT-Servilo mi ne pensis precipe, ĉar mi mem tiun funkcion ne bezonas. La servado de programoj per TTT-Servilo ne estas facila tasko. Oni bezonas la TTT-Servilon, kun kiu oni rajtas instali aldonajn programojn kaj havas plenajn administritajn rajtojn. Tiujn servilojn oni povas dungi, sed tio kostas en plej malmultekosta kazo averaĝe 50-100 Eŭro per monato. Oni pripensu ankaŭ la necesan tempon kaj scion por la administrado. Se la ttt-servilo finigos la laboron, la tuta servo malaperas. Do tiuj servoj dependas de malvasta grupo de homoj. En kazo de kutimaj programoj ili pluvivos, eĉ se la kreinto de programo perdos la intereson pri ĝi.

Kiel uzi gramatikan korektadon de Esperantilo en TTT-Servilo

Esperantilo estas skibita en skripta lingvo Tcl. Plej ofte sur la TTT-Serviloj la programoj estas skribitaj per PHP, Perl, ASP, ASP.NET kaj Javao. Sed ankaŭ Tcl estas uzebla sur TTT-Servilo. Tiu lingvo estas sufiĉe konata kaj ĉiu linuksa sistemo ofte jam havas Tcl. Mi nun preparis en Esperantilo du manierojn uzi la gramatikan korektadon en TTT-meniero. Unue oni povus lanĉi la programon kiel TTT-Servilo. Esperantilo.exe -httpServilo 8080 Poste oni povas uzi la gramatikan korektadon per adreso http://127.0.0.1:8080 Tiu estas modo, kiu taŭgas por malmultaj uzantoj. Atendu, ke tiu funkcio estas atingebla nur en venonta eldono 0.91 de programo Esperantilo.

La dua metodo estas la uzado de CGI. Tiu metodo estas pli taŭga por kutimaj TTT-Serviloj kaj ebla ankaŭ pli sekura. En tiu metodo la TTT-Servilo lanĉas por ĉiu TTT-demando la Esperantilon kaj donas al la programo la daton de HTML-formularo. Esperantilo kreas la respondan paĝon. Nun mi preparis la dosierojn kaj priskirbon, kiel instali la CGI sur Apache TTT-Servilo en EsperantiloSDK. Serĉu la dosierujon cgi kaj legu plu la dosieron LeguMin.txt.

Por sperta adminstratoro de TTT-Servilo la instalado ne devas fari grandajn problemojn. La plej malfacila tasko povas esti la instalado de aldona biblioteko XOTcl por Tcl. La dua eblo estas la instalado de kompleta senkosta Tcl-distribuo de firmao AcitveTcl. Tiu distribuo enhavas ankaŭ XOTcl.

Esperantilo sur TTT-Serviloj

En lasta tempo ekestas multaj esperantaj serviloj. Mi pensas, ke por multaj tiuj servoj la lingvistikaj funkcioj de Esperantilo povus esti tre utilaj. Uzantoj, kiuj skribas blogojn, mesaĝojn aŭ artikolojn povus aŭtomate kontroli la tekstojn. Tio eble povus plialtigi la kvaliton de esperantaj tekstoj en la reto. Eble nun la TTT-maniera servo de Esperantilo estas tre komenca kaj plivastigebla. Por allogaj funkcioj oni devus uzi JavaScript (AJAX) aŭ aliaj TTT-teknikoj. La respondo kun korektita teksto ne estas nun tre bonaspekta. Mi volonte kunlaboros kun TTT-specialistoj kaj HTML-spertuloj por plibonigi tion. Ĉar Esperantilo estas malferma kaj libera projekto ankaŭ ĉiu povus plibonigi ĝin laŭ sia gusto.

La dua eblo estas la uzado de maŝina tradukado. Per tiu funkcio oni povus krei vere internaciajn kaj multlingvajn servojn. Mi pensas, ke la plej interesa estus la internacia sendependa komunika agentejo. En tiu agentejo raportistoj skribus en Esperanto, sed la legantoj povus legi ankaŭ en aliaj lingvoj. La Esperanto estus la fonta lingvo kaj al aliaj lingvoj la Esperantilo tradukos aŭtomate. Nun nur pola tradukado havas sufiĉe altan kvaliton por uzanto. Kvankam oni tuj rimarkas, ke la rezulta teksto estas maŝine tradukita, tamen oni povas bone kompreni la rezulton. La dua eblo estas multlingva Viki-Sistemo, en kiu oni povus krei paĝojn en Esperanto, kiuj estos aŭtomate tradukitaj al aliaj lingvoj.

Mi ankaŭ volas remakri, ke ĝenerale la programo Esperantilo estas en testa fazo. La sperta administranto vidas tion de la numero de eldono 0.91, kiu estas malpli granda ol 1.

19.2.2007

Uzula interfaco de korektilo

Filed under: programado — artur @ 19:53

La nuna uzula interfaco de korektilo en Esperantilo ne estas bona. Mi rimarkis, ke mi mem nur tre malvolonte uzas la korektilon (kaj precipe la gramatikan korektilon). La korektado daŭras tro longe kaj mi preskaŭ ĉiam perdas deziron de korektado post kelkaj frazoj. Mi pli ŝatas la alian funkcion, kiu nur markas malkorektaj vortojn ruĝe. Sed tio ne funkcias por gramatika korektado ĝis nun.

Programi bonajn uzulajn interfacojn ne estas facila afero. Tial oni ofte frontas ne uzeblajn interfacojn. Pri programodo de uzulaj interfacoj oni longe ne povis trovi bonan literaturon. Bonajn konsilojn donas al ni Joel on Software- User Interface Design for Programmers. Unu de ĉefaj postuloj estas, ke oni konformigu la interfacon al konataj programoj. Homo estas ja la kutimema besto kaj ŝatas aĵojn, kiujn ĝi jam konas. Mi do rigardis pli detale kelkajn programojn, kiuj enhavas korektadon.

Gramatika korektado kaj literumado

Kvankam ekzistas inter gramatika korektado kaj literumado grandaj diferencoj, programoj ofte strebas oferi por ambaŭ funkcioj la saman interfacon. La diferencoj estas:

  • Literumado agas sur unu vorto. Gramatika korektado agas sur plena frazo.
  • Literumaj eraroj estas pli evidentaj ol gramatikaj. Ĝis nun ne ekzistas plene fidindaj gramatikajn korektilojn.
  • Ĉe literumaj eraroj la eraro ligas kun unu vorto. Ĉe gramatikaj eraroj la eraro ligas kun vorto, frazparto aŭ tuta frazo. En gramatika korektado estas ofte tre malfacile indiki la ejon de eraro.
  • Literumaj eraroj kaŭzas poste la gramatikajn erarojn. Unu gramatika eraro kaŭzas sekvajn erarojn. La dependecoj inter eraroj estas grandaj.
  • Gramatikaj eraroj estas por uzantoj tre malfacile klarigeblaj. Ofte uzantoj scias nenion pri gramatiko.

En programoj, kiujn mi rigardis, nur MS-Word enhavas literumadon kaj gramatikan korektilon en baza funkciaro. Tio ankaŭ estas indiko, ke gramatika korektado ĝis nun ne estas ofte uzata kaj por programistoj ĝi estas malfacila tasko. La dua programo, kiu regas gramatikan korektadon, estas LanguageTool, kiu ja kunlaboras kun OpenOffice, sed havas propran interfacon kaj ne uzas la normalan fenestron de korektado. Tio estas ĝis nun normala afera, ĉar tiu programo ne estas kutima parto de OpenOffice.

Open Office

OpenOffice

La granda simileco inter OpenOffice kaj MS-Word estas okulfrapa. Oni povas redakti tekston en supra kampo.

MS Word

MSWord Gramatiko

MSWord Literumado

MS-Word uzas la soman fenenstron pro literuma kaj gramatika korektado, sed la butonoj estas mirakle ŝanĝataj je neceso.

TextMaker

TextMarker

Tiu fenestro estas plej malriĉa. La uzanto eĉ ne havas ŝancon vidi la tutan frazon.

Thunderbird

Thunderbird

La fenestro havas pli multe butonoj ol aliaj programoj. Tie oni ankaŭ povas redakti la vortaron.

KDE

KDE

Ĉiu KDE-Programo uzas tiun fenestron. Oni ne povas pri io plendi.

LanguageTool

LanguageTool

La interfaco sekvas la solvoj de literuma korektado. La fenestro enhavas aldonan kompon pro priskribo. Du linioj de tio kampo estas perditaj por informo kun numero de eraro. Oni ne povas redakti tekston en supra kampo.

Esperantilo 0.89

Esperantilo 0.89

Generalaj rezultoj de trarigardo

Ĉiuj programo, kiujn mi testis, uzas por korektado separatan fenestron. Tio fenestro ofte laboras en tn. „modeless“-stato. Tio signifas, ke uzanto povas uzi la ĉefan fenestron sen malfermi la fenestron de korektilo. En tiu fenestro la uzanto ofte vidas la tutan frazon, do li vidas la kuntekston de eraro. MS-Word pritraktas la gramatikan eraron preskaŭ same kiel literumaj erarojn. La uzanto ricevas la liston de sugestoj por elekto. La unua diferenco estas la alia farbo (la verda) uzato ĉe markado. Sed se oni pli atente rigardis la fenestron, oni rimarkas, ke tiu programo dinamike ŝanĝas la nomojn de butonon kaj iliajn funkciadon. Do en la sama loko la butono ĉe gramatika eraro estas „Zum nächsten Satz“ (al sekva frazo) kaj en litermuma korektado „Zum Wörterbuch hinzufügen“ (aligu al vortaro). Tio estas tute diferencaj funkcioj. Mi ne estas certa, ke tiu estas bona solvo por uzantoj, ĉar ofte oni legas, ke oni ne ŝanĝu funkcion de butonojn.

En plenampleksaj programoj kiel OpenOffice aŭ MS-Word ekzistas parte tre kompleksa funkciado ĉe reguligo de ĉefa fenestro kaj korektila fenestro. La programo rekonas, ke uzanto ŝanĝis la tekston en ĉefa fenestro kaj konforme adaptigas la enhavon la korektila fenestro.

Preskaŭ ĉiu korektilo oferas funkciojn:

  • Ignoru nun
  • Aligu al vortaro
  • Ŝanĝu
  • Ignoru ĉiujn
  • Ŝanĝu ĉiujn
  • Adapto de lingvo

Rimarkinda estas ankaŭ la fakto, ke MS-Word preskaŭ altrudas al uzanto la aligon de nekonatajn vortojn al vortaro. Oni povas nur malfacile salti al sekva vorto sen decidi pri la nuna eraro.

Kion mi lernis por posta programado?

La interfaco de Esperantilo nepre bezonas plibonigon. Mi volas malplialtigi la nombron de butonoj kaj videblaj funkcioj. Mi volas similigi la uzadon de interfaco ĉe literumaj kaj gramatikaj eraroj.

Tamen mi ne volas havi separatan fenestron por korektilo. Mi ne ŝatas, ke iu nova fenestro kaŝas la enhavon de ĉefa fenestro. La simila situacio estas ankaŭ ĉe „trovi“-funkcio. Kelkajn novajn programoj, ekzemple „Firefox“, uzas por tiu funkcio ne novan fenestron sed malgrandan parton de ĉefa fenestro en suba kampo. Mi ŝatas tiun solvon. Tiu solvo estas eĉ pli bona, ĉar oni ne devas remontri la frazon en korektila fenestro, sed nur marki ĝin en ĉefa fenestro.

Korekturo dum skribado

Preskaŭ ĉiuj programoj povas indiki skribajn erarojn dum la skribado, aŭtomate. Tio estas ankaŭ kutima agordo ĉe plej oftaj programoj. Tiu funkcio estas diskutinda, ĉar la tuja markado de erarojn interrompas la fluon de skribado, do tio eble ĝenas la uzanton. En unuaj eldonoj de programoj tiu funkcio estas kutime malŝaltita. Ĉar averaĝa uzanto neniam ŝanĝas agordojn, multaj homoj scion nenion pri tiu funkcio.

Ĉe Esperantilo oni mem devas iniciati la literumadon aŭ gramatikan korektadon. Mi ne sentas tion kiel ĝena premo. La dua kialo, kial tio ne funkcias en Esperantilo, estas la teknika. Tiu funkcio bezonas la tn. paralelan programadon, kaj tio ne estas facila tasko en Tcl-programlingvo. Tio estas ebla sed nur malfacile realigebla. Mi pensas, ke nun aliaj funkcioj estas pli bezonataj.

Perfektigo de programo

Nun Esperantilo enhavas funkciojn, kiujn mi volis. Do venis la tempo por perfektigi la programon. Tio signifas ne nur la korektadon de evidentaj eraroj sed ankaŭ plibonigoj de uzebleco. Ĉe tiu tasko estas gravaj por mi la reagoj de uzantoj. Por programisto estas ofte psike tre malfacila tasko ŝanĝi la programon, se ĝi principe laboras senerare. Oni por tio devas venki la enan porko-hundon („Schweinehund“), kiel tion diras germanoj.

13.2.2007

Analizo de ligiloj en Vikipedio

Filed under: lingvistiko,programado — artur @ 19:21

La tre grava avantaĝo de vikipedio super la paperaj enciklopedioj estas ligiloj inter artikoloj. La vikipedio oferas ankaŭ la eblon navigi en ambaŭ direktoj. Do trovi artiklojn, kiu havas ligilon al cetera artikolo.

Mi iomete ludis kun statistika analizo de tiuj legiloj. Kiel kutime mi programis etan programon, kiu legas ceteran artikolon kaj analizas rekursie ligilon kun difinita profundo. La plej komplika parto de programo estas la vida montro de rezultoj. La programo unue kolektas ĉiujn ligojn, poste la ligoj estas orditaj laŭ ofteco. La speciala algoritmo kalkulas la gravecon de speciala vorto rilate de cetera vorto (kerna vorto). Je pli malproksima la vorto al kerna vorto des pli grava la vorto. La graveco estas ankaŭ pli granda, se la vorto estas ofte ligita al aliaj artikoloj.

ligila reto por esperanto

La ideo de analizo de retaj ligiloj ne estas nova. Tio estas la ĉefa ideo de algoritmo de konata „Google“, kiu ordigas la TTT-paĝojn laŭ graveco. La hipotezo estas, ke gravaj paĝoj havas multajn elirajn ligilojn. Se ni transigas tiun ideo al vikipedio, tiukaze la kernaj vortoj devas esti pli ofte ligitaj ol flankaj vortoj. Miaj unuaj pruvoj konstatis tiun hipotezon. Ekzemple por vorto „vino“ ni povas tre rapide trovi flankaj vortojn: vinbero, barelo, tino, komunio, likvaĵo, oziriso, amforo, trinkaĵo, biero, egipto. Sed ofte la ligojn kondukas tre rapide al tre nova kampo. Ekzemple: viro -> afriko -> libio. La kazo estas, ke en artikolo pri homo troviĝas foto kun viro el afriko, kaj la lasta estas ligita al artikolo pri afriko. Ofte la ligilaj vojoj estas tre surprizaj kaj pensigaj. Laŭ tiu maniero oni povas ankaŭ bone ekkoni, ke aŭtoroj sekvas ne nur enciklopediaj devojn.

Mi pensas ke tiu analizo estas tre taŭga por trovi aŭtomate kernaj vortoj rilate al iu faka vorto. Sur tiu vojo oni povas tre rapide (kaj plene aŭtomate) konstati, ke vortoj : „programaro, linukso, programlingvo, dosierujo“ apartenas al kampo de „komputiko“. Tio laboras mirige fidele. Mia precipa intereso de tiu ekzerco rilatas kiel kutime al maŝina tradukado. Mi pensis pri aŭtomta kategorigo de vortoj kaj tekstoj por pli bone elekti tradukajn vortarojn (percipe sinonimoj). La bonan kolekton de vortaj kompoj donas al ni jam REVO. La analizo de ligiloj en vikipedio povus plivastigi la bazan provizon de REVO. Oni povus analizi ne nur ligilojn, sed ankaŭ la koncernajn artikolojn mem por atingi pli bonajn rezultojn.

Fine mi pensas ankaŭ pri semantikaj retoj, kiuj estas necesaj por bonkvalita maŝina tradukado. La elstara projekto en tiu kampo estas angla WordNet. Retoj de ligiloj kaj semantikaj retoj estas certe aliaj aferoj, sed eble retoj de ligiloj povus helpi ĉe konstruo de semantika reto. Por miaj celoj tiel preciza semantika reto laŭ modelo de „WordNet“ ne estas bezonata. La pli ĝenerala kategoriigo estus sufiĉa. Ofte la problemo estas, ke oni devas scii, ĉu iu substantivo estas: persono, vivaĵo, abraktaĵo aŭ objekto. Mi esperas, ke kun aliaj teknikoj kiel sintaksa analizo de vikipedio, tiu kategoriigo povus esti farita tute aŭtomate.

Ekzemple de frazo: „frato estas homo, kiu …“ oni povas derivi ke „frato“ estas „persono“. Aŭ de frazo: „patro pensis pri tiu“, oni povas derivi, ke nur inteligentaj vivaĵoj povas pensi, do „patro“ estas inteligenta vivaĵo. Ankaŭ adjektivaj atributoj povas diri ion pri la subjekto. Se io havas farbon kaj grandecon, tio signifas, ke tio ne estas abstrakta. Ekzistas ankaŭ trampaj figuraj frazoj, kiun oni devas statistike forfiltri.

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

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.

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.

28.12.2006

konjunkcio kaj prepozicio: ĝis, dum, antaŭ ol, post kiam

Filed under: lingvistiko,programado — artur @ 12:21

Sintaksa analizo en Esperantilo funkcias sufiĉe bone por granda parto de frazoj. Restas nun pli komplikaj kazoj, kiuj ĝis nun ne funkcias. Ofte mi frue tute ne pritraktis tiujn kazojn, ĉar mi ne volis trokompliki la aferojn.

Vortetoj, kiuj povas havi en sintakso plurajn funkciojn, kaŭzas ĉiam problemojn. La plej problema estas evidente la vorteto: „kiel“. Sed ankaŭ vortetoj „ĝis“ kaj „dum“ rolas kiel aŭ prepozicioj aŭ konjunkcioj (aŭ pli precize frazenkondukiloj). En la lasta rolo ili estas similaj al vortetoj: „kvankam, apenaŭ, kvazaŭ“. Pli detale oni legu pri tio en PMEG.

  • Li legis multajn librojn, dum li studis.
  • Dum la mateno estas tre varme en tiu lando.

En pola lingvo oni uzas du diferencajn esprimojn por tiuj du kazoj

  • dum – gdy, w czasie gdy (kiel konjunkcio)
  • dum – w czasie (kiel prepozicio)

Vorteto ‚ĝis‘ havas ankaŭ tempan kaj lokan signifon.

  • Ĝis li laboris, li havis monon.
  • Li iras ĝis la bordo.
  • Ĝis mateno li atendis la amikon.
  • Li estis tre fama ĝis nun.

Oni atentu, ke „ĝis“ povas ankaŭ esti en unu strukturo kun primitivaj tempaj adverboj: „nun, morgaŭ, …“.Por sintaksa analizo malfacile estas diferenci en kiu rolo aperas la vorteto. Se la sintaksa analizo grupigas false la vorteton kun sekva substantiva frazparto, tiam en frazo mankas la subjekto.

  • Korekte – [Ĝis] [patro] laboris, li havis propran monon.
  • False – [Ĝis patro] laboris, li havis propran monon.

Interesaj estas fiksaj grupoj „antaŭ ol“ kaj „post kiam“, kiuj ankaŭ rolas kiel frazenkondukiloj. La grupo „antaŭ ol“ estas de tute alia speco ol iliaj eroj. „antaŭ ol“ estas nun frazenkondukiloj, kvankam nek „antaŭ“ nek „ol“ povas sole havi tiun rolon. Oni ne povas forigi unu elementon sen perdi la gramatikan korekton de tuta frazo. Tio estas en Esperanto tre malofta fenomeno, kiu tre helpas ĉe konstruo de sintaksa analizilo. Ĉe „post kiam“ oni povus konsideri „post“ kiel modifo de „kiam“. Tiuj grupoj similas ankaŭ al grupo „por ke“. Ankaŭ en Esperanto estas vera la statistika pareto regulo 20/80. 20% de kazoj rezultigas 80% de laboro. La sintaksan analizilon en Esperantilo mi programas jam 1 jaron, sed por korekte analizi la kromajn kazojn mi necesus aldonajn 5 jarojn. Eĉ pli malkontentiga esta la konstato, ke ofte la nunaj teknikaj solvoj en programo ne kapablas analizi tiujn restantajn kazojn, tial eble por ĉiam restas iuj frazoj, kiuj ne estas analizitaj korekte. Mi esperas tamen, ke programlingvo XOTcl, kiun mi uzas, estas sufiĉe fleksebla ankaŭ por tiuj kazoj.

« Newer PostsOlder Posts »

Powered by WordPress