20.5.07

LanguageTool 0.9

Pojawiła się nowa wersja LanguageTool. Zmiany liczne:
  • więcej polskich reguł;
  • większy zestaw reguł francuskich;
  • lepsze podpowiedzi angielskie i polskie - wyrazy w podpowiedziach są odmieniane;
  • możliwość podglądu plików reguł w przeglądarce internetowej;
  • możliwość edycji plików reguł w edytorze XXE (w trybie niemalże WYSIWYG, a może raczej WYSYWIM - what you see is what you mean);
  • dezambiguator regułowy (na razie tylko dla francuskiego);
  • możliwość używania zmiennych w regułach XML;
  • rozpoznawanie złożonych wyrazów niemieckich;
  • zaczątki obsługi słoweńskiego.
Uwaga: w OpenOffice.org 2.2 PL Menedżer pakietów nazywa się nazwę Menedżer rozszerzeń).

Instalacja:

  • W programie OpenOffice.org 2.x
    • Kliknij polecenie Narzędzia > Menedżer pakietów > Dodaj, a następnie wybierz plik LanguageTool-0.9.zip (bez rozpakowywania). Po otwarciu nowego okna edytora OpenOffice.org Writer (naciśnij klawisze Ctrl+N) w menu pojawi się nowe menu LanguageTool, które zawiera polecenie Sprawdź tekst... służące do sprawdzania tekstu.
  • Bez programu OpenOffice.org
    • Rozpakuj archiwum LanguageTool-0.9.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
  1. Należy upewnić się, czy w systemie zainstalowana jest Java w wersji co najmniej 1.5.
  2. Ta wersja środowiska Java musi być widoczna dla OpenOffice.org (Narzędzia > Opcje > Java).
Reguły

Wdrożone reguły widoczne są na stronie Wykrywane błędy.

17.5.07

Morfologik-stemming 1.1

Dawid postanowił uporządkować nieco kod Stempelatora i zmienić jego nazwę. Obecnie biblioteka nosi dumną nazwę „morfologik-stemming” i zawiera najnowszy słownik Morfologika (1.2).

Dokonano zmian w API, wprowadzono specjalne pliki metadanych, charakteryzujące typy słowników. Jest też możliwość łatwiejszego użycia z wiersza polecenia.

Wszystkie pliki dostępne na serwerach sourceforge, czyli tutaj.

12.5.07

Plany i aktualne prace

W aktualnie opracowywanej wersji LanguageTool (0.9) wprowadzamy wiele nowych możliwości. Jedną z najważniejszych – dla Polaków – będą lepsze podpowiedzi. Jeśli na przykład błędnie użyty zostanie jakiś czasownik w utartym zwrocie frazeologicznym, reguła może tworzyć podpowiedź zawierającą prawidłowy czasownik w odpowiedniej formie gramatycznej. Weźmy błędne zdanie:

Pełni naprawdę istotną rolę w żegludze różnych typów statków

Program obecnie podpowiada następujące poprawki:

  • Pełni naprawdę istotną funkcję
  • Odgrywa naprawdę istotną rolę
I można dzięki temu szybko poprawić błędne zdanie. To samo dotyczy innych części mowy, co widać na stronie z listą wykrywanych przez reguły błędów, gdzie udokumentowałem większość podpowiedzi tworzonych przez reguły LanguageTool dla polszczyzny. Piszę „większość”, bo jest jeszcze garść reguł, nad którymi muszę popracować.
Problem pojawia się bowiem w razie poprawki wymagającej zmiany przypadka. Gdy wiadomo, że chodzi o jeden rzeczownik, sprawa jest banalna. Gdy rzeczownik jest zawsze poprzedzony tylko przymiotnikiem, jest podobnie. Sęk w tym, że grupy nominalne w polszczyźnie dosyć trudno ująć prostą regułą. Prawdopodobnie konieczne będzie wprowadzenie specjalnych reguł znakujących grupy nominalne w segmentatorze (ang. chunker) opracowującym tekst oznakowany już znacznikami części mowy i znacznikami strukturalnymi (początek i koniec zdania, koniec akapitu). Napisanie tych reguł nie będzie łatwe z kilku powodów; nie tylko idzie o trudność formalnego ujęcia grupy nominalnej – ale i o fakt, że związek zgody nie zawsze w błędnie napisanym tekście świadczy o istnieniu grupy nominalnej. W językach bez przedimków i rodzajników uchwycenie tych grup jest niestety trudniejsze, więc będę musiał zadowolić się heurystyką. Zostawiam sobie to na wersję 1.x, ale „oprzyrządowanie” praktycznie już istnieje, gdyż na potrzeby Agnes Souque, opracowującej reguły francuskie, napisałem klasę dezambiguatora, która wykorzystuje pliki reguł dezambiguacji bardzo zbliżone do plików reguł błędów. Rozbudowanie tej klasy o możliwość znakowania wyrażeń złożonych jest stosunkowo łatwe i będzie wymagać dopisania kilku linijek kodu w Javie.
Bardziej ambitne plany wiążą się z wykorzystaniem słownika synonimów. O cóż chodzi? Niektóre błędy gramatyczne i stylistyczne są wykrywalne tylko przy wykorzystaniu pewnego zasobu wiedzy semantycznej, a nie tylko regularności czysto syntaktycznych. Chociażby zasada mówiąca, iż wyrażenia „przy pomocy” należy używać tylko w odniesieniu do osób, a nie rzeczy, wymaga kategoryzacji wyrazów na oznaczające rzeczy i osoby (albo przynajmniej osoby i nie-osoby). Podobnie wyrażenie „za pomocą” z pewnością nie może być używane (normalnie, czyli nieironicznie) w odniesieniu do osób. Tego rodzaju prawidłowości występują w wielu językach. Dobrze się składa, że bynajmniej program korygujący błędy nie musi zawierać pełnej wiedzy o świecie, na podstawie mógłby wnioskować o kategorii przedmiotów denotowanych przez wyrazy. Do tego celu wystarczy sieć semantyczna, a przykładem takiej (nieco chałupniczo robionej) sieci jest właśnie tworzony w sposób otwarty słownik synonimów. Wystarczy zatem ze słownika synonimów wydobyć niektóre informacje o przyporządkowaniu wyrazów do pewnych „grubych” kategorii (np. kategorii „osoba, podmiot”). Oczywiście, zdecydowanie lepsze wyniki uzyskać by można z WordNetu dla angielszczyzny. Tak czy inaczej planuję wprowadzenie tagera „semantycznego” (w takim skromnym sensie) – znakującego wyrazy pewnymi cechami kategoryzacyjnymi. Technicznie wiele to nie będzie wymagać, a może ułatwić wyłapywanie trudnych do uchwycenia innych błędów.

8.5.07

Morfologik 1.2

Ponieważ eksperymenty ze słownikiem syntezy gramatycznej były utrudnione przez niechlujne znaczniki w wersji 1.1 słowników, wczoraj poświęciłem pół godziny na ujednolicenie ich. Przy okazji usunąłem wiele drobnych błędów, dodałem czasownik „iść” do słownika form nieregularnych oraz usunąłem znacznik „aglt”, którym błędnie oznaczana była forma trybu przypuszczającego. Obecnie tryb przypuszczający jest oznaczony znacznikiem „pot:praet” (pot od łacińskiego potentialis, a praet od praeteritum). Liczba kombinacji znaczników zmniejszyła się przeto znacznie.

Oczywiście, korzystałem z najnowszych wersji słownika ze strony Kurnika, że zarymuję na dobry dzionek ;)

Pliki niebawem pojawią na sourceforge.net.

2.5.07

Morfologik 1.1

Opublikowałem kolejną wersję słownika morfologicznego. Nowości:

  • ujednolicenie oznaczenia form finitywnych (znacznik „fin” zagubił się wcześniej przy wielu czasownikach);
  • ujednolicenie oznaczenia potencjalnej negacji (zmiana z „pneg” na stosowany w tagsecie IPI znacznik „aff”),
  • dodanie znacznika „pos” na oznaczenie stopnia równego przymiotników,
  • poprawki dotyczące dopełniacza l. mn. wielu rzeczowników rodzaju męskiego (męskoosobowych i niemęskoosobowych),
  • dodanie nietypowego znacznika „refl” dla czasowników zwrotnych,
  • aktualizacja zgodnie z nową wersją słownika na stronie kurnik.pl/slownik.
To jednak nie koniec nowości. Wśród słowników binarnych jest słownik syntezy gramatycznej, który potrafi generować wyrazy odmienione dla zadanej formy podstawowej i znacznika formy. W wypadku użycia w programie fsa_morph należy podać następujący ciąg na wejściu:

wyraz|znacznik

(np. „niemiecki|adjp”). Na wyjściu pojawi się forma przymiotnika niemiecki będąca przymiotnikiem poprzyimkowym, tj. „niemiecku”.

Słownik syntezy gramatycznej znalazł zastosowanie w korektorze LanguageTool 0.9 do generowania podpowiedzi z użyciem odmiany wyrazów.