Spis treści Artykuł originalny « Poprzedni artykul Nastepny artykul »

Stylowa i gramatyczna korektura pierwowzorami w programie “ {LanguageTool} ”

Stila kaj gramatika korektado per prototipoj en programo “LanguageTool”

Orignał w języku EsperantoMaszynowe tłumaczenie na język polski

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.

Ostatnio szczegółowo patrzałem na projekt {LanguageTool} od Danielu Naber. Ten interesujący projekt niemieckiego programisty jest teraz we względnie dorosłym stanie. Projekt dąży ofiarować gramatyczną i stylową korekturę dla rozmaitych języków. Temat dla mnie bardzo interesującego, ponieważ także Esperantilo ofiaruje podobne funkcje.

Techniczny Pomysł

Autor wybrał bardzo pragmatyczną metodę gramatycznej korektury. Oni opierają się na pierwowzorach. Program porównuje każde zdanie z pierwowzorem. Kiedy pierwowzór pasuje ze zdaniem, konieczna wiadomość i propozycja ulepszenia jest ofiarowana do użytkownika.

Ekzempla prototipo: "The is. Mesaĝo: “Vi eble volis skribi There is”.

Bardziej skąplikowane pierwowzory bazują na naznaczonych tekstach (z angielskiego: tagged text). Dla każdego słowa jest znaleziona gramatyczna kategoria ({markilo}), który może znaczyć {vortkategorion} (np. rzeczownik), przypadek albo liczbę.

Ekzempla prototipo: “give PPR advise”. PPR esta markilo por pronomoj. La regulo trovas la intermikson de vortoj “advice” kaj “advise”.

Więc program nie znajduje wszystkich omyłek lecz jedynie omyłek, które definiowano w prawidłach. Oczywiście te omyłki nie są znalezione korektą ortograficzną, ponieważ słowa są wszakże znane. Prawidła są zaprojektowane aby znaleźć najbardziej częste omyłki, albo błędy drukarskie albo omyłki zazwyczaj zrobione przez nie {anglalingvanoj}, które muszą pisać z angielskiego. Dla projektu jest bardzo ważnie, mieć statystyczne informacje o częstych omyłkach. Projekt mieści więc bazę z najbardziej częstymi omyłkami, zrobieni przez użytkowników. Projekt znalazł współpomagających, którzy definiowali dodatkowe prawidła dla kilku innych języków.

{Diplomlaboraĵo}

Projekt stworzył się jako {diplomlaboraĵo} przy uniwersytecie niemieckim. Interesująco, że aczkolwiek autor jest Niemcem, on pisał urządzenie w języku angielskim, i pierwszy język, który może zostać poprawiony, jest językiem angielskim. W urządzeniu on bardzo szczegółowo wnosi w temacie gramatycznej korektury. Urządzenie rozróżnia trzy możliwe metody:

  • syntaktyczna analiza
  • pierwowzory omyłek
  • statystycznie oparte systemy

Wybrałem w Esperantilo, które także może znaleźć gramatyczne omyłki metodę syntaktycznej analizy. Potem użytkowałem tą analizę także dla tłumaczenia maszynowego. Autor od {LanguageTool} wybrał dla pragmatycznych motywów metodę pierwowzorów (rule based checking). Pierwszy motyw dla tego jest, że teraz nie istnieją dobrzy wolni syntaktyczni analizatorzy. W tym urządzeniu autor opisuje także bardzo interesujący pogląd nastawionych języków. Nastawione języki są językami ze sztywniejsze i ściśle konieczne prawidła. Te języki, opiera się na naturalnych językach, lecz często użytkuje jedynie część słów. Cel jest po pierwsze stworzyć dokumenty, które są czytelniejsze na przykład dla członków języka obcy. Ten pomysł nie jest nowy także w Środowisku esperanckim, ponieważ istnieją także dążenia stworzyć teksty, które są lekko czytelne dla początkujących. Myślę jedynie podręcznikami jako “Gerda zginąłem” (możliwy do downloadu od {Lernu.net}), w którym znajduje się jedynie ograniczony (nastawionego) esperancki język, czyjego poziom rosnę w każdym kolejnym rozdziale.

Współpraca z {OpenOffice}

Bardzo dobra cecha projektu jest współpracą z {OpenOffice}. Można bardzo po prostu instalować (poszerzyć) edytora tekstu {OpenOffice} {LanguageTool}. Więc użytkownik nie musi porzucać jego zwyczajne środowisko aby pisać teksty. W drugiej stronie, {LanguageTool} użytkuje gotowe funkcje od {OpenOffice}, i autor od musiał programować ich same. Istnieje jednak możliwość użytkować program bez {OppenOffice}. Lecz to jest użyteczna sprawa przypuszczalnie jedynie dla testowania.

Użycie programu

W użyciu programu podobały się mi kilka cech. Użytkownik może sam włączyć i wyłączać prawidła. To jest ważne, ponieważ kilka prawideł daje wiadomość zawsze, kiedy pojawia się pewne słowo, które jest często użyte mylnie. Po drugie prawidła są konieczne zewnątrz programu we specjalnym dokumencie ({grammar.xml}) w {XML-formato}. Każdy użytkownik może, po tym jak on uczył się język programowego tych prawideł, stworzyć własne prawidła. Istnieją teraz inni autorzy, którzy jedynie stwarzają prawidła dla jakiegoś języka. To rezultuje w dobrym rozłamie pracy.

Wolne programowanie

Tym projektem jest także dobry przykład dla udanej współpracy kilku wolnych projektów ({Open} {Source}). Kluczową technikę aby znaleźć {markilojn} dla słowa wyda projekt od Zakończywszy {state} {utilities} od Jan Daciuk. Prawidła dla języka polskiego są wcześniej programowane w innym pochodnym projekcie przez Morfologik. Pisałem w moim weblogu, że to zadanie znakowania ({pos} {tagging}) jest dla esperanckiego języka bardzo prostego. Lecz dla innych języków zadanie jest bardzo skomplikowane. Przypuszczam, że autor projektu nie miał szans zrealizować projekt bez pomocy innych wolnych źródeł.

Mogę jedynie mieć nadzieję, że także w Środowisku esperanckim stworzą się takie wolne lingwistyczne przyrządy i lingwistyczne źródła, które pomagają kolejnym projektom. Na przykład byłoby ogromnie mieć bazę najbardziej częstych omyłek w Esperanckich tekstach. Bardzo interesujący jest pomysł Autora projektu {morfologik} w weblogu (język polski), który podsuwa rozpatrywać zmiany w wikipedi, ponieważ często zmiany są korektami gramatyki i stylu. Już przedtem trudziłem się o analizie wiadomości w grupie {soc.culture.esperanto}, ponieważ często znajduje się tam listy jedynie z korektami uprzednich listów. Lecz program, który automatycznie może znaleźć te korekty, nie byłby bardzo prosty.

Interesująca historia projektu

Twórca projektu na pozór często zmienił strategię i zrobił doświadczenia z rozmaitymi możliwościami. On trzy raz zmieniał język programowy i całkiem programował ponownie projekt. Po pierwsze on użytkował Perl, potem Python i teraz {Java}. Znalazłem jedynie wyjaśnienie, dlaczego on zmienił język Perl do Python. Python jest czystszy i lepiej obiektowy. Motywu dla zmiany Python do {Java} nie znalazłem. Wybór programowego języka mógłby być bardzo ważny dla projektu. {Java-programoj} dobrze współdziałają z {OppenOffice} lecz zazwyczaj programowanie nie są tak efektywne jak Python. Język programowy jest często pierwszym przypadkiem aby znaleźć innych programistów. W wolnym programowaniu programuje się gratis, programowanie musi cieszyć się programistę. I liczne projekty stwarzają się jedynie dla zadania uczyć się albo użytkować jakąś technikę.

Czego uczyłem się od tego projektu

Po pierwsze mogę oglądać udany projekt i przemyśleć jego historię. Ono mogłoby być przykładem do naśladowania także dla Esperantilo. Już przedtem myślałem o korektach stylowych w Esperantilo, i nawet ja zbierałem kilka propozycji, lecz w końcu koncentrowałem się o tłumaczeniu maszynowym. Dobry pomysł jest oczywiście zewnętrzną definicją prawideł, które mógą być redagowane przez użytkownika, i możliwość wyłączać kilka prawideł. To jest nawet ważniejsze, ponieważ w Środowisku esperanckim istnieją kilka kondycji, które nie są społem zaakceptowane i godne dyskusji. Druga lekcja jest dobrą współpracą z {OpenOffice}. Tym jest przypuszczalnie główny przypadek dla licznych współpomagających i użytkowników. Esperantilo teraz jest głównie systemem tłumaczeniowym, i przypuszczalnie byłoby dobrze mieć dobrą współpracę z {OpenOffice}. Programować to jest bardzo żmudne i technicznie skomplikowana praca. Mam nadzieję, że przypuszczalnie kiedyś stwarza jakiś wolny system tłumaczeniowy dla {OpenOffice} i będę musiał jedynie {enprogrami} Esperantilo do tego programu.

Artukuł został przetłumaczony w pełni maszynowo przez wolny program Esperantilo
Adres kontaktowy:
mail@xdobry.de