25.8.06

Nowe języki w LanguageTool 0.8.5dev

W najnowszej, właśnie tworzonej wersji LanguageTool wbudowuję obsługę nowych języków.
Już wbudowałem obsługę francuskiego (będzie oparta na słowniku inDico Myriam Lechelt; reguły, mam nadzieję, pomoże rozwijać Laurent Godard z Indesko). Początkowo chciałem dodać obsługę na bazie Uniteksa, ale wg Laurenta ten słownik niekoniecznie jest oparty na licencji LGPLLR (LGPL for Language Resources). No cóż... Zmieniłem na poprawiony InDico.

Wprowadziłem język hiszpański z taggerem części mowy opartym na FreeLing. Niestety, sam słownik taggera był bardzo ubogi, bo w pakiecie FreeLing używa się wielu strategii heurystycznych (wg autorów skutecznych w ponad 90%). Dlatego też, żeby wyłuskać więcej informacji, po prostu otagowałem całą hiszpańską Wikipedię, a potem odfiltrowałem powstałe pliki. W wyniku powstał niezły słownik, FreeLing radził sobie z tym nieźle (wywaliłem literówki za pomocą hunspell -l).

To oczywiście przypomniało mi, że stosowany w LT tagger OpenNLP jest niestety statystyczny i dokonuje ujednoznacznienia (przez to nie zauważa błędów – solecyzmów – typu „Bill Gates earn a lot of money”, bo przypisuje „earn” kategorię IN!). Ale od czego Wikipedia angielska... Otagowałem ją OpenNLP, a potem skonstruowałem leksykon. OpenNLP nie rekonstruował leksemów w formie podstawowej (FreeLing to robi, ale co chwila się wywala, więc musiałem pokroić 500 MB tekstu na 300 porcji, żeby dodać 300 zanalizowanych nie do końca próbek). Okazało się jednak, że wyniki ma – delikatnie mówiąc – bardzo niedokładne. Być może dałoby się dla iluś form przeprowadzić zgrubne ilościowe oszacowanie, ale nie miałem ochoty na tę zabawę.
Nowy tagger dla angielskiego oparłem na listach słów Kevina Atkinsona na sourceforge. Zawierały one formy podstawowe i niezłe znaczniki gramatyczne (które poprawiłem w wielu wypadkach). Do tego ręcznie dorobiłem listę przyimków, czasowników modalnych itd. (za dostępnymi w sieci opisami tagsetu Penn TreeBank, który stosujemy). Po zmianie taggera okazało się, że ujawniło się więcej fałszywych alarmów w niektórych regułach, ale zasadniczo LT działa szybciej i dokładniej. :) A porównanie taggerów słownikowych, statystycznych – kontekstowych i statystycznych – morfologicznych to już sprawa na osobny artykuł naukowy.

Inną strategię przyjmę dla włoskiego. Jest bowiem dostępny przyjemny słownik Morph-IT! Marco Baroniego; spory, więc powinien wystarczyć. Ostatnio został nawet zaktualizowany przez autora :)

Zupełnym zaskoczeniem była też wiadomość Jagana Nadha, który buduje słownik morfologiczny dla języka Malayalam. To jeden z wielu oficjalnych języków w Indiach; mówi nim około 30 milionów osób i dopiero od niedawna ma słownik ortograficzny. Martwi mnie to, że mają własny alfabet, ale zdaje się istnieje jednoznaczna transkrypcja fonetyczna na zwykły alfabet łaciński. Zobaczymy, jak to się dalej potoczy.

Prawdopodobnie trzeba będzie utworzyć angielski samouczek dla osób przystosowujących LT do kolejnych języków. No i przyda się kreator reguł, najlepiej z testerem online w czasie rzeczywistym... A do tego potrzebny jest serwer obsługujący Javę w czasie rzeczywistym. Sourceforge.net ma Javę 1.4 (za słabą). Kreator powinien być zapewne w PHP i obsługiwać dodawanie nowych reguł i edycję istniejących (po uwierzytelnieniu), a po zatwierdzeniu reguły automatycznie uruchamiać test. Prace nad tym trwają.

Brak komentarzy: