Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

31.10.2006

Nunaj problemoj kun maŝina tradukado al germana lingvo

Filed under: germana lingvo,maŝina tradukado — artur @ 19:10

Nun mi havas du eblojn sisteme testi la kvaliton de maŝina tradukado. Unue mi havas la aron de ekzemplaj frazoj (germanaj ekzemploj). Mi havas ankaŭ la ilon, kiu aŭtomate rekonas ŝanĝojn en tradukado post ŝanĝoj en programo.
Tiel mi frue povas ekkoni, ĉu ŝanĝoj en programo ne havas pliajn eble negativajn influojn ol tiuj, kiujn mi celis.

Sed mi rimarkis, ke la vera kvalito de maŝina tradukado estas videbla nur en realaj tekstoj kompare al realaj homaj tradukoj. Tial mi programis la medion por facile kompari tradukadojn (ekzemplo Ekzemplo de tradukado).

Mi nun malrapide trarigardas la rezultojn. Nun mi devas konstati, ke la kvalito de germanaj tradukoj estas la plej
malaltaj de ĉiuj. Kelkaj frazoj estas eĉ tiel fuŝe tradukitaj, ke la senco de frazo ne estas rekonebla.
Mi analizis kelkajn frazojn, kaj devas konstati, ke la germana lingvo havas kelkajn specialaĵojn, kiu malfaciligas la tradukadon. Tiujn kelkajn specialaĵojn mi eĉ ĝis nun tute ne pritraktis en programo. Germana lingvo postulas ankaŭ pli bona kvalito de analizo de esperantaj frazoj, ol pola aŭ angla lingvoj.

(relative clause extraposition) – Relativsatzextraposition

Esperante oni povus nomi tiun fenomenon: kroma pozicio de relativa subfrazo.
Bonan priskribon en germana lingvo oni trovas ĉi tie.

En germana lingvo oni ofte devas transloki kelkajn verbajn specojn al fino de frazo:

Ekzemploj:


Ich möchte das Buch lesen. (Mi volas legi la libron.)

Er wird sich mit dem Mächchen morgen nicht treffen. (Li ne renkontos la knabinon morgaŭ).

Er reist morgen ab (verbo: abreisen). (Li forveturos morgaŭ)

Tiu okazas ĉe:

  • helpaj verboj (wollen, müssen, …)
  • estonta tempo
  • tranĉeblaj verboj (Trenbare Verben)

La programo en nuna eldono 0.84 bone tradukas tiujn specialaĵojn por facilaj frazoj, sed tute fiaskas ĉe kompleksaj frazoj kun subfrazoj.

Ekzemploj de kroma pozicio de relativa subfrazo:


Mi legos la libron, kiun mi hieraŭ aĉetis.

Sen kroma pozicio

Ich werde das Buch, das ich gestern gekauft habe, lesen.

Kun kroma pozicio

Ich werde das Buch lesen, das ich gester gekauft habe.

En la lasta frazo la relativa frazo ne staras direkte apud la substantivo ‚Buch‘. Ambaŭ frazoj estas gramatike tute korektaj. Ne estas tre klare evidente, kiam la kroma pozicio devas esti aplikata. La ĝenerala tendenco estas, ke por longaj subfrazoj eble multoblaj la kroma pozicio estas preferigita.

nfvp – non finite verb pharases

La dua problemo en la nuna eldona estas ne korekte analizitaj i-frazpartoj (engle: non finite verb pharese).

Ekzemplo:

Mi volas paroli pri tiu libro.

Ankaŭ en tiuj i-frazpartoj en germana lingvo la verbo venas al fina pozicio.

Traduko:


Ich will über dieses Buch sprechen.

Nun la sintaksa analizo en la programo ne povas korekte ekkoni tutajn i-frazpartojn, sed teknike tio estas ebla
kaj mi certe tion faros en venonta eldono de programo.

i-frazpartoj en sintaksa analizo


Mi volas vidi vin. (korekte)

Mi volas paroli pri tio. (malkorekte)
Tial la tradukado modulo de germana lingvo ne translokigis la verbon de i-frazparto al fino de tiu frazparto, sed al fino de ĉefa frazo. Tiu funkcias bone por facilaj frazoj, kvankam la baza sintaksa analizo ne estas korekta.

Mi volas paroli pri tio. Ich will darüber sprechen

La problemojn faras kompleksaj frazoj kun multaj i-frazpartoj. Nun la programo tradukas:

Mi venas paroli pri tio, vidi vin kaj la libron legi. Ich komme über dem, dich und das Buch lesen, zu zu sehen sprechen.

La traduko estas fiaska. Ŝajnas ke mi devas investi tempon por plibonigi la sintaksan analizon. I-frazpartoj ne estas bone rekonataj. Poste mi devos adapti la tradukan modulon por germana lingvo.

La alia problemo estas la germana glosaro (vortaro)

Ŝajne la vortaro estas tre vasta, sed aliflanke por maŝina tradukado, oni ne bezonas ĉiujn eblajn sinonimojn por unu esperanta vorto, sed unu traduko, kiu estas taŭga por plej granda nombro de tradukoj.
Ekzemple por vorto ‚fari‘ la glosaro enhavas sekvantajn tradukojn: machen, erschaffen, anfertigen, herstellen, tun, vollbringen, schließen, hinkriegen, tätigen, leiten, zurücklegen.
Kelkajn de ili oni uzas en tre maloftaj situacioj. En la kampo „ordo“ oni povas specifi, kiu traduko havas la plej altan prioritaton, sed por multaj vortoj tiu ĝis nun ne estas farita.

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

29.10.2006

Artikolo pri Esperantilo en komputila ĵurnalo (Linux Magazine)

Filed under: reagoj — artur @ 11:38

Bona informo pro la projekto, kiu eble estas rezulto de traduko de projekto al angla lingvo. Post la traduko mi povis registri la programon en retejo freshmeat , kiu kolektas informojn pri liberaj programoj (angle: open source). Tiu eble ankaŭ rezultis per mencio de projekto en aliaj retejoj.

Nur du semajnojn poste la programo estas priskribita en konata komputila ĵurnalo (Linux Magazin) germana eldono: Linux Magazin (10/2006) kaj unu monaton poste en angla eldono: Linux Magazine (11/2006). Mi legis nur la anglan eldonon. La programo estas priskribita sur duona paĝo. La aŭtoro skribis multe pri Esperanto mem kiel lingvo, substrekante ties
liberecon similan al tiu de Linukso kaj malferma programado. Zamenhof estas persono, kiu rezignis pri siaj propraj rajtoj rilate al la lingvo, sia inventaĵo, por bono de homaro. Tian saman faras ja multegaj programistoj de libera programado, kies plej bona komuna elfaraĵo estas mastruma sistemo Linukso. Mi mem uzas Linukson por programi kaj testi la Esperantilon, la eldono por vindozo estas preparita poste.

Kiam mi rigardas la elŝutan statistikon de Esperantilo, mi konstatas, ke la plejparto de uzantoj de programo uzas Vindozon.

Programistoj de libera programado komunkas preskaŭ nur per angla lingvo, kvankam ekzistas multaj programoj, kiuj
estas tradukitaj al naciaj lingvoj. Se la ideoj de Esperanto kaj libera programado estas similaj, ili tamen ne nepre kunligiĝas.
Esperantistoj ne uzas Linukson kaj linuksanoj ne uzas Esperanton (krome unuopaj esceptoj).

Saluton mondo!

Filed under: ĝenerale — artur @ 10:02

Mi bonvenas ĉiujn en blogo de projekto „Esperantilo“.
Post pli ol unu jara ekzisto de programo „Esperantilo“, kiu de simpla redaktilo evoluis je lingvistika sistemo, mi decidis registri la retan adreson „esperantilo.org“ kaj lanĉi la blogon.

La projekto estas hobia kaj unuhoma, tial mi ne havas rimedojn (tempon) por oferi profesian dokumentaron.

Mi decidis, ke blogo estas bona medio por priskribi la projekton, informi pri progreso de programado kaj simple skribi ideojn kaj pensojn, kiujn mi havas dum programado.
Lastatempe mi ricevis multajn leterojn de uzantoj, mi amplekse respondas, sed tiuj respondoj ne estas videblaj por ĉiuj, en blogo la situacio estas alia.

Mi esperas ankaŭ, ke en blogo la uzantoj de programo povus priskribi iliajn spertojn kaj dezirojn al la programo, kiu estas videbla kaj arĥivita por ĉiuj, sen peniga administra laboro aŭ preparo.

Dum programado de la programo „Esperantilo“ mi kolektis multajn spertojn pri lingvistika programado rilate al Esperanta lingvo.
Unuflanke mi ne havas intereson priskribi tiujn spertojn en akademiaj medioj, sed mi volos, ke tiuj spertoj helpus al aliaj programistoj.
Ĉi tie mi volas priskribi tiujn specialajn spertojn.

Powered by WordPress