Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

1.12.2006

La programado ne havas finon.

Filed under: programado — artur @ 21:08

Mi nun malrapide preparas la novan eldonon. La teknikaj novaĵoj estas pretaj. Nun mi testas la funkciadon de tuta programo. Ĝis nun mi ne tre atente pritraktis germanan lingvon, la kvalito de traduko estas malalta. La testado de tradukado iras laŭ suba metodo. Mi tradukas iun longan tekston kaj tralegas atente ĉiujn frazojn. La falsajn tradukojn mi kolektas. Poste mi analizas la erarojn. Unue mi rigardas la sintaksan analizon de fonta frazo poste mi analizas la rezulton. Mia programada medio XOTclIDE lasas al mi tre riĉajn eblojn observi la funkciadon de programo. Mi havas ilojn por inspektado de strukturoj.

Mi malkovras ĉiam ion novan. Hodiaŭ mi malkovris, ke sintaksa analizo malprava difinas la funkciojn de frazpartoj de tipo „kiom da (np)“. La funkcio de tiuj frazpartoj estas tre simila al frazpartoj laŭ modelo „multe da (np)“, pri kiu mi jam skribis en Problemoj kun frazparto de tipo “multe da …”. Mi feliĉe povis uzi la samajn strukturojn. Mi ankaŭ plibonigis la funkcion pro trovi subjekton kaj objekton. En frazoj de tipo „Kiom da libroj vi legis“, la „Kiom da libroj“ estas objekto. Frue la programo, kiu laboras de maldekstra flanko etiketigis la frazparton kiel subjekto.

Kiam la programo funkcios korekte?

Eble neniam mi atingas la seneraran staton de programo. Tio estas por mi normala konstato. Sed nun, kiam mi tralaboras miajn listojn, mi ofte ne scias, de kio mi devas komenci. La unua konsolo estas, ke unu eraro, kiun mi forigas, unu plibonigo povus pozitive influi la prilaboron de multegaj frazoj, grandaj tekstoj. Ĉiu eĉ eta plibonigo pligrandigas la kvaliton de programo. La lasta zorgo estas, ke ŝanĝoj en programo povus negative influi la funkciojn, kiuj frue korekte laboris. Mi ankaŭ volas labori efektive kaj distingi gravajn fuŝaĵojn de negravaj.

21.11.2006

Literumado – ISpell, ASpell, MySpell, Hunspell

Filed under: programado — artur @ 19:37

La baza perkomputila korektado de tekstoj estas tiel nomata literumado (angle. Spellchecking, germane: Rechtschreibkorrektur). La funkciado estas simpla: ĉiu vorto de teksto estas komparita kun interna listo de eblaj (korektaj) vortoj. Sed en detalo tiu tasko ne estas tre facila pro:

  1. Kolekto de eblaj vortoj. Necesa vortprovizo.
  2. Efika kaj memorŝpara reprezento de ĉiuj ebloj.
  3. Efika kaj memorŝpare serĉado de vortoj.
  4. Komputado de sugestoj. Similaj sed korektaj vortoj.
  5. Konsidero de reguloj de vortfarado de koncerna lingvo

Kutimaj solvoj de tiuj problemoj:

  1. Oni kolektas vortojn de granda tekstaro. Aldonaj vortoj estas kolektitaj dum uzo de programo.
  2. Plej ofte oni uzas tiel nomatan: Finite state machine por reprezentado en la memoro.
  3. Komputado de sugestoj estas temporaba. Ekzistas kelkaj algoritmoj por komputi similecon de vortoj. Konata estas ekzemple: Distanco de Levenshtein.
  4. Reguloj de vortfarado dependas de lingvo.

Literumado estis preskaŭ unua funkcio de Esperantilo, kiun mi programis. Mi uzis la vortprovizon de revo kaj tekstaron de bertilow. Mi volis ne nur kolekti eblajn vortojn, sed ankaŭ havi informoj pri korekta morfologio de vortoj. Ĉar vortfarado en Esperanto ebligas grandegan vortprovizon, ŝajnis al mi, ke la nur programo, kiu regas esperantan vortfaradon, povas bone solvi tiun problemon. Alia kazo estis, ke por konataj liberaj programoj de literumado ne ekzistis ebleco bone kunlabori kun programlingvo Tcl, kiun mi uzas. Por Linukso tio ne estas problemo, ĉar ĉiu linuksa sistemo havas aspell aŭ ispell. Problemo estas vindozo.

Liberaj programoj por literumado

Ekzistas kelkaj liberaj programoj por literumado. Ili estas ankaŭ uzataj por Esperanto.

  • ISpell
  • GNU ASpell
  • MySpell: Uzata de OpenOffice (ĝis eldono 2), Thunderbird kaj Firefox
  • Hunspell: Uzata de OpenOffice (de eldono 2), formato konforma al MySpell.

La plej vastan kaj ĝisdatan kolekton de vortaroj por Myspell kaj Hunsplell oni trovas sur Vortaroj de OpenOffice.

Problemoj kun literumado ĉe Esperantilo

La propra literumado en Esperantilo havas avantaĝojn super aliaj programoj, ĉar ĝi respektas esperantan vortfaradon. La programo diferencas ankaŭ du tipojn de eblaj skriberaroj: unue evidenta eraro, due ebla vorto, sed ne konata. Esperantilo enhavas ankaŭ komfortan redaktilon por vortaro. La problemoj estas teknikaj, programo ne estas tre rapida, ĉar ĝi volas trovi ekzaktan vortfaradon de ĉiu vorto, due en Tcl ne estas eble rapide komputi sugestojn por erara vorto. Efikaj algoritmoj por tio estas tre komplikaj. La alia malavantaĝo estas, ke en Esperantilo oni ĝis nun ne povis korekti tekstojn en aliaj lingvoj.

Hunspell en Esperantilo

Post longa pripenso mi decidis elekti Hunspell por interna literumilo de Esperantilo. La programo estas libera konforme al Esperantilo. Ĝi povas uzi vortarojn de OpenOffice projekto, kiuj estas ankaŭ popularaj en Mozilla projekto. La ĉefa teknika problemo estas skribi bibliotekon por uzi Hunspell de Tcl. Post 2 tagoj de programado mi sukcesis uzi Hunspell kun Esperantilo. Nun restas kompili la hunspell kun Tcl sur vindozo. Mi nun ne volas rezigni pri ĝisnuna literumilo en Esperantilo. Sed Hunspell povus plibonigi la uzeblecon de programo. Due la uzanto povos uzi aliajn vortarojn de OpenOffice-Provizo.

Vortlisto por Esperanta lingvo

La esperantaj vortlistoj por literumiloj enhavas 2 dosierojn. Unu dosiero kun finaĵo „.aff“ enhavas teknikajn priskribojn kaj liston de sufiksoj. La dua doziero kun finaĵo „.dic“ enhavas liston de vortoj kun priskribo pri eblaj sufiksoj. Mi analizis la sufiksojn de nuntempa vortaro por Esperanto. Ŝajnas, ke per la novaj ebloj de Hunspell, kiu povas ankaŭ kunligi kelkajn finaĵojn unu post la alia, oni povus prilabori kolekton de sufiksoj, kiuj estus pli adekvata por Esperanto.

1.11.2006

Esperantilo por Mac OS

Filed under: programado,uzantoj — artur @ 11:53

Kelkaj homoj demandis min, ĉu kaj kiam la programo estos uzebla sur MacOS. Teorie jam nun la programo estas uzebla sur MacOS. La tekniko, kiun mi uzas, ekzistas ankaŭ sur MacOS. Mi simple ne havas tiun komputilon por testi la programon aŭ prepari konvenan por Mac OS instaladan dosieron, kiun mi ja oferas por Vindozo kaj Linukso.
Esperantilo estas uzebla por MacOS, se vi kapablas prepari mem la programan medion.

Mi priskribas tie kelkajn teknikajn detalojn, kiuj helpas dum installado.

La programo estas skribita en programlingvo Tcl. La programa lingvo estas tielnomata skripta lingvo, kaj ĝi ne bezonas kompiladon. Por lanĉi la programon, oni bezonas Tcl/Tk-interpretilon, kaj kelkajn krombiblitekojn (angle: binary extension.
Tiu estas:

Ekzistas kelkaj disdonoj por MacOX, kiuj ankaŭ enhavas tiujn krombiblitekojn.

Nun laŭ mia supozo la plej konvena vojo por lanĉi Esperantilon sur Mac OS estu:

  1. Instalu Tcl/Tk de activestate.com
  2. Elŝutu esperantilo.kit kaj vortaro.db.zip
  3. en unu dosierujo.

  4. Lanĉu la programon de tiu dosierujo dosierujo_de_tcl/bin/wish esperantilo.kit. Mi ne estas certa, kiel aspektas la lanĉokomando, sed vi devas lanĉi la Tcl/Tk interpretilon kun esperantilo.kit kiel unua parametro.
  5. Testu, ĉu esperantaj literoj aspektas en ordo en menuo. Se ne, verŝajne la interpretilo mislegis la programon, kaj li ne funkcios bonorde.

Normale mi uzas por finaj uzantoj la Tclkit, sed la normalajn tclkit-interpretilojn ne enhavas kromlibrarojn XOTcl kaj tDOM.
Tiujn mi enmetas en esperantilo.kit, sed nur por Linukso kaj Vindozo.
Se mi havus tDOM kaj XOTcl por MacOS, mi povus prepari esperantilo.kit, kiu estus uzebla sur Mac OS.

30.10.2006

Algoritmo de radikigo por Esperantaj vortoj

Filed under: programado — artur @ 18:00

Unu el la bazaj algoritmoj de komputila lingvistiko estas radikigo (angle: stamming algorithm). La programo pro radikigo (angle: stammer) oni povas nomi esperante: radikilo. La ĉefa tasko de radikilo estas fortranĉi gramatikajn finaĵojn de vorto.

ekzemple:

faras -> fari
homoj -> homo
librojn -> libro

Multaj radikiloj rezultigas ankaŭ gramatikan kategorion kaj signifon de vorto:

faras -> kategorio=verbo, radiko=fari, tempo=as
librojn -> kategorio=substantivo, radiko=libro, nombro=pluralo, kazo=akuzativo

Tiun taskon oni nomas angle „tagging“.

En multaj lingvoj rezultoj ne estas unusignifas. Por unu vorto povas rezultigi multajn radikoj (trunkoj) kaj multaj eblaj gramatikaj kategorioj. Por tre fleksiaj kaj neregulaj lingvoj kiel pola lingvo programi radikilon estas tre kompleksa tasko, kiu ofte estas granda separata projekto (vidu: radikilo por pola lingvo Stempel). Tiuj radikiloj baziĝas sur grandaj vortaroj kaj statistikaj tabeloj.

Feliĉe en Esperanto la tasko de radikigo estas tre simpla, sed ekzistas ankaŭ kelkaj malfacilaĵoj. Kalkajn primitivajn vortojn en Esperanto oni povas kosideri kiel kompleksaj radikoj kun speciala finaĵo.

Ekzemple:

tamen - adjektiva formo de adverbo 'tame'
kiu - ordona formo de verbo 'kii'
ĵus - formo de verbo 'ĵi'

Mi prezentas la algoritmon ĉi tie en programlingvo Tcl, kiun mi uzas en la projekto:

proc radikigi vorto {
    if {[lsearch {en ĝis kies ties ies ĉies kaj iu neniu kiu tiu ĉiu tamen jen ĵus nun sen kun ajn kvin unu du} $vorto]>=0} {
        return $vorto
    }
    if {[regexp {^(.+?)(jn|n|j)$} $vorto m radiko]} {
       return $radiko
   }
   if {[regexp {^(.+)(is|as|os|us|u)$} $vorto m radiko]} {
       return ${radiko}i
   }
   return $vorto
}

Por fortranĉi finaĵojn mi uzis „regular expresions“. Tiu algoritmo tamen ne radikigas participojn al baza verba formo.

konata -> koni

Se atentu la ekzemplon:

monato -> moni

Malfeliĉe en Esperanto ekzistas radikoj, kiuj havas participajn finaĵojn. Tial oni bezonas vortaron kun priskribo de vortoj por majstri tiun taskon. La nombro de tiuj vortoj ne estas malgranda, ekzemploj: (soldato, advokato, diletanto, aŭtokrata, adekvata, eleganta) (ĉu ekzistas verbo – dileti).

« Newer Posts

Powered by WordPress