Esperantilo Blogo en Esperanto pri projekto Esperantilo kaj komputila lingvistiko

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.

1 Kommentar »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Du musst angemeldet sein, um einen Kommentar abzugeben.

Powered by WordPress