13.11.10

Morfologik 1.7

Dziś udostępniłem wersję 1.7 słownika Morfologik. Zmiany są liczne, a to dzięki Adamowi Radziszewskiemu, który nakłonił mnie do sporych porządków w znacznikach, a i sam sporo z nich uporządkował automatycznie.

Większe zmiany:
  • nie ma już zbędnego znacznika indecl;
  • wszystkie czasowniki są jednolicie oznaczone jako perf, imperf lub imperf.perf;
  • rodzaj męski występuje już wyłącznie w trzech wariantach (m1, m2, m3), choć nadal nie wszystkie wyrazy są prawidłowo oznaczone;
  • udokumentowałem znacznik nstd, którym oznaczam formy niestandardowe odmian (chodzi o wyraz „domie”);
  • znaczniki alternatywne są obecnie sortowane alfabetycznie (acc.dat.gen);
  • drobne poprawki brakujących oznaczeń biernika dla rzeczowników rodzaju m1.

26.9.10

LanguageTool 1.1

Udostępniliśmy dziś nową wersję korektora LanguageTool - 1.1. Z nowości: obsługa nowych języków (m.in. białoruski i malayalam), bardzo liczne poprawki i usprawnienia reguł, a także możliwość sprawdzania tekstów dwujęzycznych (przydatne dla tłumaczy). Ta ostatnia opcja będzie przydatna raczej tylko dla osób zainteresowanych wykorzystaniem interfejsu programowego LT (API) do połączenia z oprogramowaniem wspomagającym tłumaczenie. W wersji 1.1 polskich reguł jest więcej (1022) i są bardziej ogólne.

W programie OpenOffice.org 3.0.1 lub nowszym

Metoda prosta
Dwukrotnie kliknij pobrany plik LanguageTool-1.0.0.oxt. Jeśli w systemie jest zarejestrowane rozszerzenie .oxt (robią to aktualne wersje OpenOffice.org), nastąpi uruchomienie instalatora.

Metoda tradycyjna
Kliknij polecenie Narzędzia > Menedżer rozszerzeń > Dodaj, a następnie wybierz plik LanguageTool-1.0.0.oxt. Zamknij pakiet (łącznie z modułem szybkiego uruchamiania).

Po ponownym otwarciu OpenOffice.org będzie możliwe automatyczne sprawdzanie tekstu. Jako test wpisz zdanie: „To zdanie zdanie jest z błędem”.

Bez programu OpenOffice.org
Rozpakuj archiwum LanguageTool-1.0.0.oxt (jest to plik w formacie .zip) i uruchom plik LanguageToolGui.jar, klikając go dwukrotnie. Jeśli na danym komputerze nie skonfigurowano skojarzenia dla plików *.jar, uruchom program z wiersza poleceń za pomocą polecenia java -jar LanguageToolGUI.jar. Plik LanguageTool.jar jest natomiast korektorem działającym z poziomu wiersza poleceń.Rozpakuj znajdujący się w archiwum plik standalone-libs.zip do tego samego katalogu, do którego rozpakowano pliki z archiwum.

W razie problemów

Należy upewnić się, czy w systemie zainstalowana jest Java w wersji co najmniej 1.5. Środowisko GIJ ma błędy uniemożliwiające użytkowanie LT; należy korzystać z Javy w wersji IcedTea lub firmy Sun. Zalecana jest Java 1.6.Ta wersja środowiska Java musi być widoczna dla OpenOffice.org (Narzędzia > Opcje > Java).Nazwa użytkownika w systemie Windows nie może zawierać polskich liter, jeśli pakiet OpenOffice.org jest starszy niż 3.1.W systemie Ubuntu konieczna jest instalacja pakietu openoffice.org-java-common, gdyż OpenOffice jest domyślnie instalowany bez bibliotek obsługujących Javę.

4.5.10

Paper on developing LanguageTool available

My paper on developing LanguageTool, focused mostly on new features needed to support many different languages in LT, has just been published in Software - Practice and Experience (if you have no access to SPE, here is the final uncorrected draft). The paper contains a section with empirical results - I tested LanguageTool on Polish, and compared the results with Microsoft Word grammar checker (the only one that exists for Polish beside LanguageTool). The results are pretty good - whereas LanguageTool rules seem to create few false alarms (the precision level is around 90% for most test samples), MS Word tends to have a lot of them (the precision level is in best cases around 50%, and in many cases even lower).


Sample text



MS Word matches



MS Word precision



LT matches



LT precision



Frequency Dictionary Corpus



4572



22,00%



8552



92,00%



Camera-ready book



586



1,00%



323



54,00%



Culinary forum



75



17,00%



186



90,00%



Catholic church notices



24



0,00%



140



87,00%



Left-wing political commentary



58



1,00%



242



97,00%



Right-wing political commentary



51



5,00%



274



93,00%



Left-wing professional politician blog



91



13,00%



238



90,00%



Right-wing professional politician blog



59



55,00%



98



94,00%



Stock-market analyst blog



43



4,00%



134



95,00%



Political blog



12



50,00%



67



98,00%



Popular personal blog 1



67



8,00%



127



88,00%



Popular personal blog 2



57



47,00%



124



98,00%




As promised in the paper, I am making my testing set freely available, as the results were evaluated manually only by myself. Now, the methodology was very simple: instead of trying to figure out the total number of errors in the text, I simply checked if rules created any problems, i.e., offered suggestions that would result in grammar errors. This way, I avoided the possible objection that I treated some corrections as useless just because I thought you might leave the text as is. Instead of arguing over such cases, I treat them as correct.

There are two testing samples: files from LanguageTool, in a text format (zipped), and from Microsoft Word (also zipped). Note: to see errors as marked by Microsoft Word, you actually need to have Microsoft Word 2000 or newer (some files are in docx format). I tested the files with Microsoft Word 2006. I excluded one file from the testing sample due to copyright restrictions; the text contained withing samples is from the Frequency Dictionary of Polish Corpus, or from web blogs.

The paper has a longer section that describes the syntax for XML rules (which is now slightly out of date, as I made unification a bit simpler to use, by using native XML constructs) and describes the architecture of the checker. People that want to become language maintainers might therefore find it interesting (I hope!).

16.4.10

Powered by morfologik-stemming...

Biblioteka morfologik-stemming wykorzystywana jest m.in. w następujących projektach:

morfologik-stemming 1.4.0

Dziś wydaliśmy nową wersję biblioteki morfologik-stemming. Największą zmianą jest możliwość tworzenia automatów FSA bezpośrednio w Javie. Służy do tego narzędzie wiersza poleceń fsa_build. Aby tworzyć słowniki do lematyzacji można też wykorzystać narzędzie tab2morph, które implementuje funkcje skryptów morph_data z pakietu FSA, ale zawsze poprawnie obsługuje kodowanie UTF-8, z którym skrypty w Perlu i AWK nie zawsze dobrze sobie radziły. Zmiany w API widoczne są w dokumentacji.

Jednocześnie zmieniliśmy słownik zamieszczony w pakiecie na najnowszy. Dzięki temu cały pakiet ma też inne licencje: kod ma BSD, a słownik LGPL lub Creative Commons ShareAlike.

14.4.10

Morfologik 1.6

Dzisiaj wydałem nową wersję (1.6) leksykonu morfosyntaktycznego Morfologik. Zmiany są niewielkie - głównie poprawki zauważonych błędów, takich jak niewłaściwe znaczniki, bzdurne formy (np. usunąłem wyraz "ca", który był połową wyrazu "z-ca") czy literówki. Usunąłem też zbędny znacznik "indecl", teraz stosowany jest wszędzie "qub". Mówiąc krótko, są tu głównie drobne poprawki różnych błędów.

Większą zmianą jest podwójne licencjonowanie: słownik może być wykorzystywany na licencji LGPL v3, tak jak wcześniej, albo Creative Commons ShareAlike.

28.3.10

Imiesłów przysłówkowy bez orzeczenia

W zdaniach z imiesłowami przysłówkowymi (-ąc i -wszy), zakończonych znakiem interpunkcyjnym, powinno występować orzeczenie. Dopuszczalne jest opuszczenie orzeczenia w tytule. W tytule nie stosuje się jednak kropek na końcu. Na przykład:

Czekając na Godota

Czekając na Godota, zabawiali się rozmową.

Błąd ten jest tym bardziej rażący w zdaniach, w których występuje zdanie podrzędne:

!Czekając na Godota, który nie przychodził.

Usterka zostanie wykryta także w błędnie formułowanych pytaniach:

!Rozmawiając o sporcie, który sport uprawiasz?

W powyższym przykładzie podmiot imiesłowu jest inny od podmiotu pytania (my rozmawiamy, a sport uprawiasz tylko ty). Powinno być: Skoro już mowa o sporcie, którą dyscyplinę uprawiasz?


25.3.10

Ślimaki, ach ślimaki

W supermarketach czasem odkrywają nowe krainy. Oto francuska sieć sklepów wielkopowierzchniowych ujawnia istnienie Burguncji:

Smacznego. Ja pozostanę przy wierze w istnienie Burgundii. I nie potrafię się przekonać, że ślimaki są rybami.

LanguageTool i OmegaT

Narzędzie wspomagające pracę tłumaczy OmegaT (w wersji beta 2.1.4) właśnie uzyskało możliwość korzystania z LanguageTool jako dodatkowego modułu. Efekty widać od razu:

12.3.10

Testy segmentacji

Do niedawna nie było dla polszczyzny korpusu, w którym ręcznie zweryfikowano by podział na zdania (a przynajmniej ja nic o dostępności takiego zasobu nie wiedziałem). Całe szczęście, trwają prace nad Narodowym Korpusem Języka Polskiego – i obejmują one także ręczne oznaczenie tekstu, w tym podział go na zdania. Uzyskałem do testów próbkę obecnie opracowywanego tekstu, aby móc przetestować swoje reguły.
Okazało się, że stosujemy nieco inne konwencje – np. ja uznawałem, że liczby porządkowe na początku zdań są osobnym elementem, a nie fragmentem zdania (w OpenOffice.org takie liczby generowane automatycznie nie są w ogóle widoczne dla LanguageTool). Ale po ujednoliceniu takich konwencji przystąpiłem do testów. Wykryłem trochę usterek w regułach SRX, usunąłem je i wyniki są obecnie następujące.
W próbce było 42426 znaczników podziału (dalej oznaczone jako Z). Dokładność (precision) podziału wyniosła 0,993234. Kompletność (recall) 0,998353. Poprawność (accuracy) 0,991609. (Wszystkie te parametry liczyłem jako ilorazy, odpowiednio Z oraz sumy Z i podziałów dodanych przez SRX; Z oraz sumy Z i podziałów brakujących w pliku posegmentowanym przez SRX; wreszcie Z oraz sumy Z i podziałów dodanych przez SRX i brakujących w SRX).
Nie da się dojść, rzecz jasna, mechanicznymi środkami typu reguły SRX, do poziomu 1, bo niektóre podziały zależą od analizy znaczeniowo-logicznej zdania. Ale jest całkiem już nieźle! :)

AKTUALIZACJA: przy właściwym ustawieniu segmentacji na końcach wierszy udało się uzyskać kompletność równą 1 (to trochę artefakt wynikający z przetwarzania danych wejściowych) i dokładność 0,996933.

AKTUALIZACJA 2: po zamianie końców wierszy na spacje, udało się uzyskać bardziej wiarygodny wynik, mianowicie kompletność wynosi 0,994935, a dokładność – 0,997027. Przy zamianie 50% końców wierszy na spacje i usunięciu 50% wierszy kompletność spadła do
0,949978, a dokładność do 0,997426. Przy usunięciu wszystkich spacji wyniki były odpowiednio 0,909843 (kompletność) i 0,997695 (dokładność). Ponieważ w tekstach brak spacji lub końca wiersza po kropce przed kolejnym zdaniem jest zjawiskiem sporadycznym (lecz jego częstość w języku jest trudna do oszacowania ze względu na to, że w przetworzonych korpusach występują już całe zdania), w wypadku innych tekstów kompletność powinna być bliższa wartości z przedziału od 0,994935 a 0,949978, co jest całkiem niezłym wynikiem.

2.3.10

morfologik-stemming 1.3.0

Wydaliśmy dziś nową wersję biblioteki morfologik-stemming. Zawiera ona trochę usprawnień związanych z wydajnością, w tym m.in. możliwość innego binarnego przekodowania automatu fsa (CFSA), umożliwiającą uzyskanie mniej więcej 10% mniejszego pliku, który jest obsługiwany szybciej.
API wysokiego poziomu nie uległo zmianie.