La paĝo priskribas miajn spertojn pri programado de programo "esperantilo". Mi
ne estas lingvisto sed programisto, tial la vidpunkto estas alia kiel lingvista
vidpunkto. Multe de fenomenoj devas esti konata por spertaj esperantistoj. La
teksto ne havas nun la necesan kvaliton, sed mi volas ĝin iom post iom
plibonigi.
Vortfarado - Morfologio
Mi programis en "Esperantilo" vortarajn kaj gramatikajn korektadon kaj okupis
multe pri esperanta morfologio kaj analizis grandajn tekstarojn por kompletigi
vortlistojn aŭ testi la programon. La ideo estis ankaŭ rekoni nekonatajn
vortojn kiel eblaj derivaĵoj kaj eĉ aŭtomate lerni novajn derivaĵojn. Mi
komencis la programon per la plej simplaj metodoj kaj poste mi devis uzi pli
kaj pli komplikajn metodojn por ekhavi la bonajn rezultatojn.
Sufiksoj kiel finparto de radiko
La unua ideo estas analizi la vorton de komenco kaj de fino kaj fortranĉi la
sufiksoj kaj prefiksoj. Tio ne funkcias, ĉar ekzistas multaj de radikoj kiu
enhavas sufiksojn, kiel normalan parton sen sufiksa signifo.
krokodilo - krokod-ilo
monato - adjektiva participo - mon-at-o
Aŭtomata rekonigo de derivaĵoj
En la unua eldono mia vortaro enhavis 19000 derivaĵojn. Tiu nombro estis tro
malgranda por sukcese analizi tekstarojn (nur 40% de frazoj povis esti plene
rekonata). Sed la programo kalkulis 70% de tiuj vortoj al eblaj derivaĵoj. Mi
pensis pri aŭtomata lernado de derivaĵoj el esperanto tekstaro, sed feliĉe mi
unue ekzakte rigardis la kalkulitaj proponataj derivaĵoj. Multe de ilin estis
malkorektaj.
Ekzemploj:
galopi -> gal-op-i
dumonata - du-mon-at-a
Mi devis havi la ilon por diversigi malkorektaj derivaĵoj de tre eblaj
derivaĵoj. Mi rimarkis, ke multe de derivaĵoj oni povas kalkuli preskaŭ
aŭtomate aŭ la probablokalkulo per certaj derivaĵoj estas tiel alta, ke ili
povas esti akceptita sen duboj.
Ekzemple:
a -> i -> igi. Adjektivo al Verbo
o -> ego -> eto
i -> adi -> ado
i -> ebla (por transitivaj verboj)
o -> -hav-a
Ankaŭ por prefiksoj
a -> mal-a
a -> ne-a
o -> sen-a
Ekzistas ankaŭ evidentaj ekzemploj, ke ne ĉiu vojo eblas
mon-o , mon-e pagi, mon-a puno, mon-i ?
En la programo mi neniam kalkulis la derivaĵojn aŭtomate. Mi uzis la tekstaron
por havigi nekonatajn derivaĵojn kaj poste akceptis aŭtomate nur derivaĵojn, se
la farado ŝajnis logika laŭ la supre priskribitaj reguloj. La reston mi devis
akcepti mane, sed la programo kalkulas eblajn vortfaradojn.
Participoj kiel memstaraj derivaĵoj
Participoj devenas de verboj sed aspektas kaj funkcias kiel substantivoj,
adjektivoj aŭ adverboj. Mi decidis, ke mi ne konservu participojn, sed aŭtomate
kalkuli eblajn participojn el basa verba formo. Poste mi rimarkis, ke kelkaj
participoj kiel verboj estas tre malofte (eĉ neniam) uzata kaj sonas strange.
artefarita -> art-e-far-i ?
tielnomata -> tiel-nom-i ?
La afero eĉ plimalfaciligas, se oni volas konstrui multlingvan vortaron, ĉar
tradukoj ekzistas ofte nur por participo. Ankaŭ en aliaj lingvoj la vortfarado
de substantivaj participoj ne estas tiel evidenta kiel en esperanto kaj
konservado de tradukoj estas necesa.
Danĝeraj radikoj
Malfeliĉe por literumado, preskaŭ "ĉiu sekvo" de literoj, povas esti korekta aŭ
ebla esperanta vorto. La problemo ĉu la litersekvo estas vorto aŭ nevorto ne
estas evidenta. Ĉar la vortfarado en esperanto ne havas limojn, eblas multege.
Mi limigis tiujn eblojn por praktikaj kialoj. La vortfarada modelo estas simpla
(?prefikso?-?rad1?[o]-rad2-?suf1?-?suf?-finilo). Sed tiu ne sufiĉas. Problemojn
faras tre mallongaj radikoj, kiu ne havas grandan statistikan signifon. Ĉar en
esperanto sufiksoj estas memstaraj radikoj, eblas tre strangaj sed mallongaj
ŝajne korektaj vortoj. "op-i, on-el-a , al-eg-i, dis-obl-i, unu-obl-a". Mi
frontis la problemon, tiamaniere ke la programo ne akceptis nekonatajn
derivaĵojn faritaj nur de sufiksoj. Tiuj vortoj estas markita kiel malkorektaj
(ne eblaj). Mi esperas, ke plejparto de tiaj vortaj estas ĵus konata en la
programo. La ne solvita problemo estas ankaŭ maloftaj kaj mallongaj radikoj.
"ril-o (vestaĵo), gal-o (fluaĵo)". La lasta radiko kaŭzis, ke nekonata vorto
"galopi" estas rekonata kiel "gal-op-i". La solvo povas esti marki maloftaj
radikoj kaj sufiksoj "-op, -obl" post la statistika analizo de granda
tekstokorpuso.
komplika vortfarado
La simpla modelo (?prefikso?-?rad1?[o]-rad2-?suf1?-?suf?-gram-finilo) por
vortfarado ricevis rapide sian limon. Jen la problemoj:
- Ekzistas vortoj el pli ol 2 radikoj: ???
- Ekzistas vortoj el pli ol 2 sufiksoj: kort-eg-an-in-o
- Ekzistas primitivaj kunligitaj vortoj: sam-kiel, mal-kiel
- Internaj radikoj ne uzas bazaj formoj: kon-at-ig-i, flug-il-hav-a, loĝ-ant-aro,
arte-far-it-a
Mi decidis ne plivastigi la programon ankaŭ por akcepti ĉiujn tiaj eblaj
derivoj. La programo devas esti simpla kaj samtempa rapida. Due mi timis, ke
plivastigo de morfema parto de programo kaŭzis, ke plejparto de malkorektaj
vortoj estus rekonataj kiel eblaj derivaĵoj. Mi plivastigis la analizon de
ebleco ke inter la radikoj povas esti ankaŭ sufiksoj kaj prefikson, sed nur
tiuj kiu ekzistas en aliaj konatoj derivaĵoj.
derivaĵoj "urbo" kaj "pristribo" estas konataj.
"urbpriskribo" aŭ "urbopriskribo" estus rekonataj kiel eblaj derivaĵoj.
Mi konstruis specialajn sufiksojn de aliaj sufiksoj, kiu estas ofte parto de
sufiksa grupo (ar-an ist-in an-in ul-in em-ul). Aliaj komplikaj derivaĵoj devas
esti enskribita en la programvortaro mane.
Landonomoj - "io"
Landonomoj kaŭzis kelkajn problemojn. Unue la nomoj ne estas unuecaj, due
ŝajnas, ke ekzistas nova neoficiala sufikso "i". Ekzemple en: "Danio, Ĉinio,
Francio" sed "dana, ĉina, franca". Mia programo ne konis unue la sufikson "i",
sed tiuokaze multaj landonomoj ne povis esti rekonata. La unu solvo por la
problemo estu difini du radikojn (helpradikon) por ĉiu lando ("ĉini-o" kaj
"ĉin-a"). Tiu al mi ne plaĉis, ĉar la programo kalkulus ankaŭ "ĉinia" al ebla
derivaĵo. Mi programis por tiu kazo la specialan escepton. Landonomoj povas
havi "i" sufikson. La programo akceptas la sufikso nur por substantivoj
(o-vortoj) kaj nur por propraj nomoj, kiujn estas speciale markita en vortaro.
Gramatiko
Verba valento - implikata de derivaĵoj
Velento signifas kiel la verbo povas esti uzita. Verbo "vidi" povas havi
objekton kaj estas tial "transitiva". En vortaro ani trovis la mallongigon
"tr". Mi necesis la informojn pri la valento de ĉiu verbo por gramatika
korektado. Sed kiel ricevi la informoj aŭtomate. Unue oni povas analizi
tekstokorpuson. Mi rimarkis, ke ĉiuj transitivaj verbaj havas derivaĵon
"*ebla". Multe de transitivaj verboj povas esti ekkonata tiamaniere. Mi havis
duboj pri verbo "iri", kiu en mia vortaro estas markita kiel "intr". En
tekstokorpuso mi trovis tamen kelkajn ekzemplojn "mi iras la saman vojon" ktp.
Kejkaj sufiksoj signifas ankaŭ la valenton. Verbo kun sufikso "ig-i" estas ĉiam
transitiva.
Ekzistas ankaŭ verboj kun tiel nomataj "indirektaj objektoj" ekzemple "doni".
En esperanto malantaŭ la indirekta objekto staras prepozicio "al". Malfeliĉe la
prepozicio "al" signifas ankaŭ movon. Mi rimarkis, ke verboj, kiuj signifas
movon, havas ofte prefiksoj "al, el, en" ekzemple "eniri, eliri, eniri". Sed
ankaŭ "don-i" havas derivaĵo "al-don-i". Por diferenci tion oni povas uzi nur
la prefikso "en". Tiukaze la korekta klasifiko ne estas facila. Oni devas
analizi ĉu objekto malantaŭ prepozicio "al" estas ejo aŭ persono.
Modelo de verba velenco en Esperantilo
Nomo |
Mallongigxo |
Priskribo |
Ekzemplaj verboj |
Frazo |
transitivaj verboj (kun direkta objekta) |
obj |
ebla substantiva epiteo en akuzativo |
vidi, fari, doni |
Mi vidis domon |
indirekta objekto |
iobj |
'al' komplemento |
doni, helpi |
Mi donas tion al vi |
sensubjekta verbo |
sensubj |
Frazo sen subjekto |
esti, necesi |
estas bone |
reporta verbo |
rep |
Subpfrazo kun "ke" |
diri, vidi |
mi vidis, ke estas preta |
substantiva perverba priskribo de subjekto |
scomp |
Frazo kun subjektiva komplemento |
esti, sxajni, igxi, farigxi |
Mi estas programisto |
adjektiva perverba priskribo de subjekto |
acomp |
|
esti, sxajni, igxi, farigxi |
Li estas dika |
substantiva perverba priskribo de objekto |
socomp |
Nur kiam objekto ekzistas |
elekti, nomi |
Li elektis lin prezidanto |
adjektiva perverba priskribo de objekto |
aocomp |
Nur kiam objekto ekzistas |
farbi, bati |
Li farbis la domon blua |
signifas muvigon |
mov |
Propozicioj 'de' kaj 'al' havas muvan signifon |
iri, veturi, meti |
mi veturas de londono al pariso |
infinitivo kiel objekto |
aux |
tielnomataj helpoverboj |
devi, povi |
Mi devas lerni |
Sintaksa analizo
Sintaksa analizo de frazoj estas kondiĉo por gramatika korektado en programo
esperantilo kaj ankaŭ por venonta aŭtomata traduko. Mi ne volas priskribi la
teorion, kiun oni povas legi de aliaj fontoj, sed priskribi la funkcionado de
"esperantilo" kaj kelkaj specifaj esperantaj apartaĵoj. La plej bona priskribo
de esperanto sintakso estas Plena
Manlibro de Esperanta Gramatiko.
Ĉi tie vi povas rigardi ekzemploj de sintaksa analizo fare de programo "esperantilo"
La celo de analizo estas trovi funkciojn por ciu vorto en frazo kaj funkcion de
vortgrupoj. Por videbligi funkciojn de unuopaj vortoj oni uzas tielnomatajn
sintaksarbojn. Ĉiu vorto havas tipon kaj funkcion en frazo. Ofte uzataj estas
CG2 analiziloj. La analizo estas kutime farita en kelkaj ŝtupoj
-
Ekstraktado de vortoj kaj frazoj
-
tielnomata "Tagging" - analizo de unuopaj vortoj (Programo nomas "Tagger")
-
analizo laŭ speciale (CG2) difinitaj reguloj (por angla lingvo pli ol 1000)
"Tagging" serĉas gramatikon kategorion de vorto kaj kutime ĉiujn eblajn
funkciojn de vorto en frazo. Ekzemple;
faras - Verbo (baza formo: fari) tempo: a
hundon - Substantivo (baza formo: hundo) kazo: adjektivo nombro: singularo. Eblas funkcioj: direkta objekto
La lingvistika programado pritraktis plej parte la anglan lingvon kaj la
metodoj de analizo estas kutime konvena por tiu lingvo. CG2 metodo bone
analizis anglan lingvon, kiu estas tre malfacila por analizo. Ĉar fleksio en
angla lingvo estas tre facila unu vorto povas havi multajn funkciojn en frazo.
La funkcio de vortoj en angla lingvo estas difinita plejparte per ordo de
vortoj en frazo kaj najbaraj vortoj (interligiteco).
Rezulto de "Tagger" por angla lingvo:
TextBaseformPhrase syntax and part-of-speech
I I nominal head, pro-nominal
see see main verb, indicative present
you you nominal head, pro-nominal, sentence boundary
La CG2 analizilo provas trovi laŭ difinitaj reguloj ĉiujn funkciojn de vortoj
en frazo. La analizo finiĝas kiam:
-
funkcio de ĉiu vorto estas trovita
-
plej verŝajnaj funkcioj estas trovita
En esperanta lingvo oni povas tre facile trovi eblajn funkciojn de unuopaj
vortoj. (a-Vortoj estas adjektivoj, o-Vortoj estas substantivoj) Ekzistas nur
kelkaj vortoj kiu povas havi kelkajn funkciojn en frazo. Ekzemple "tiu" povas
roli kiel: primitiva adjektivo (tiu homo), primitiva substantivo aŭ pronomo
(tiu estas bona). Por tio multaj da analizaj problemoj de angla lingvo ne
ekzistas en esperanto.
Duavice esperanto, simile al slavaj lingvoj, ne havas fiksan ordon de vortoj en
frazo.
Li amas ŝin.
Li ŝin amas.
Amas li ŝin.
Amas ŝin li.
En angla lingvo eblas nur
Hi loves she.
Analizilo por esperanta lingvo devas solvi aliajn problemojn ol angla
analizilo. Por tio mi decidis programi novan analizilon por esperanto, mi
esperis, ke la analizilo devus esti malpli kompleksa ol angla analizilo. La
"Esperantilo" laboras ĝenerale ankaŭ en tri ŝtupoj.
Analizŝtupoj en Programo "Esperantilo"
Alie ol CG2 la analizo estas devigita ankaŭ en kelkaj ŝtupoj, kaj ĉiu ŝtupo
uzas aliaj metoj por analizo kaj estas speciale programita.
-
Serĉado de ĉeffrazoj (Citaĵoj, Dialogoj)
-
Serĉado de nominativaj kaj prepoziciaj frazoj
-
Serĉado de konjunkcioj
-
Serĉado de verbaj subfrazoj
-
Serĉado de funkcioj de nula nivelo (verbo nivelo)
Verbo kiel frazradiko
Plej ofte lingvaj analiziloj pritraktas verbon kiel difinilo de frazo (aŭ
radiko de frazo). Aliaj partoj de frazo estas funkcioj (plivastigoj) de verbo.
Verbo mem difinas, kiuj funkcioj eblas (valency
theory). Plej gravaj estas funkcioj por substantivoj (kaj substantivaj
elementoj)
-
subjekto en nominativo. (ekz: "Li vivas")
-
direkta objekto (en vortaro markita kiel "trans") en akuzativo. (ekz. "Li vidis
min")
-
indirekta objekto - prepozicia frazo kun "al" (ekz: "Li donis la libron al ŝi")
-
komplementa objekto en nominativo. (ekz. "Li nomas arturo"). Ili kunligas
subjekton kun atributo (priskribaj verboj).
Aliaj funkcioj de verbo
-
adverboj aŭ adverbaj frazoj (ekz: "Li kuiras bone")
-
atributo - adjektivoj (ekz: "Li estas granda")
Indirekta objekto en esperanto estas konstruita helpe de propozicio "al". Sed
Prepozicio "al" povas havi ankaŭ alian rolon kiel direkto por verbon, kiu
signifas movon (ekz: "Li iras al polando"). La diferenco estas grava ĉefe por
aŭtomata traduko.
Gravas ankaŭ tielnomataj AUX-Verboj (Helpoverbo) kiel: "voli, povi, ami", kiu
povas havi infinitivan verbon kiel parametro.
Leksikonbazita analizo
Por bona analizo oni bezonas bonaj plian priskribon de vortoj de leksikono. Tio
estas grava ne nur por verboj sed ankaŭ por aliaj gramatikajn kategoriojn. Oni
povas dividi adverboj je tiu kiu povas priskribi nur verbojn aŭ tiu kiu
priskribas nur aliajn vortojn.
Li konas lin sufiĉe longe.
La hundo estas tre nigra.
Pliaj priskriboj de vortoj gravas por korekta analizo
-
Ĉu substantivo signifas tempon (akuzativo ne estas direkta objekto sed adverba
frazo. Ekz.: Li lernis du monatojn)
-
Ĉu prepozicio povas signifi movon kaj loko ("en, sur,")
Ofte oni devas decidi, ĉu la informo apartenas al leksikono aŭ estas
analizregulo.
Mi volas priskribi kelkajn malfacilaĵojn:
Ne plenaj subfrazoj
La unua estas la plej bona.
Mi volas la malgrandan.
Participoj kiel plenaj verbofrazoj
En esperanto participoj rolas kiel substantivoj, adjektivoj kaj adverboj. Ofte
la participoj aperas post subjekto kaj estas priskribita per adverboj. Sed
ili ofte ne perdas la verban karakteron kaj ofte povas roli kiel plenaj verbaj
subfrazoj.
Li skribis konatan libron.
Detruita de milito urbo estis rekonstruita.
Leganta librojn reĝo estas saĝa.
Mi konas homon devenantaj de rusio.
Malofte uzataj frazformoj
En esperanto eblas multe frazformoj, kiuj tamen estas malofte uzata.
-
postmetitajn adjektivoj (A-vortojn)
-
kompleksaj infinitivaj verbo frazoj.
-
subjektivaj priskriboj de adjektivaj kaj adverbaj frazoj.
-
priskribo de frazoj per infinitiva verbo.
Konjunkcioj
Kunigiloj estas plej malfacilaj por analizi ĉar ili povas havi multajn
funkciojn. Konjunkcio "kaj" povas kunligi vortojn, frazpartojn kaj tutajn
frazojn.
Li havas katon kaj hundon.
Li devas legi la libron kaj lerni.
Li loĝas en urbo kaj ŝi loĝas en vilaĝo.
En analizo oni ofte devas serĉi ne infinitivaj verboj en malproksimo de
konjunkcio por bone ekkoni la propran funkcion.
Komo
Simile al konjunkcioj komo ankaŭ kaŭzas multaj problemoj en analizo. Komoj
povas havi multajn roloj
-
Kunligi voroj aŭ frazoj.
-
Disigi relativajn frazojn.
-
Disigi komentofrazoj
-
Disigi specialaj frazaj komenciloj aŭ finiloj
Li volas dormi, ŝi volas kanti.
La urbo, en kiu mi loĝas, estas granda.
La prezidanto, jam ne unuan fojon, promesis multegon.
Ho, Tio ne eblas.
Ŝi volonte legas, ĉu ne.
Krome ne ekzistas klaraj reguloj por uzado de komo en esperanto. Plejparto
personoj uzas regulojn de sia gepatra lingvo. Tiu povas kaŭzi trouzadon kaj
malsufiĉan uzadon de komo. En germana lingvo antaŭ "kaj" (und) ne devas esti
komo, sed antaŭ "ke" (daß) oni devas komon skribi. En esperantaj tekstoj mi
trovis multajn diferencajn skribmanierojn. Fine mi decidis akcepti multajn
skribmanierojn.
- antaŭ: "ke", "ĉar" oni povas skribi komon sed tiu ne estas necesa
- komo antaŭ "kaj" eblas, se disigaj subfrazoj havas je ĉefverbon kaj subjekton
- oni povas disigi adjektivon je komo sed tio ne estas nepra ("Li havas rapidan,
belan veturilon")
Konstantoj kaj Propraj nomoj
Konstantoj estas neesperantaj vortoj en esperantaj tekstoj. Plej ofte tiuj
estas fremdlingvaj propraj nomoj. Tiuj vortoj estas parto de ignorlisto por
literumado. La afero plimalfaciligas por gramatika korektado, ĉar la funkcio de
vorto ne estas konata. Esperantilo tiuokaze traktas tiujn vortojn kiel
priskriboj de subjektoj.
La prezidanto Kwasniewski estas en germanio multfoje.
multfunkcia Simbolo (")
En tekstoj " povas ofte enkonduki ne esperantan vorton aŭ citaĵoj, kiu
povas esti eĉ multfrazaj.
La usona filmo "star wars" estas tre konata.
Li aldonis poste: "Mi estas sata. Mi volas dormi".
Fremdlingvaj vortoj aŭ plenaj frazoj en esperantaj tekstoj igas multajn
problemojn por gramatika analizo. En XML-tekstoj ili estu markita per speciala
XML-markilo.
retaj ligiloj pri sintaksa lingvanalizo
Mi serĉas lingvajn materialojn pri tiu kampo. Bonvolu informi min pri interesaj
retpaĝoj.