Przejdź do głównej zawartości

Posty

Wyświetlanie postów z czerwiec, 2006

LanguageTool 0.8.3 z obsługą polskiego!

Na stronie www.danielnaber.de/languagetool/ do pobrania jest moduł LanguageTool 0.8.3 z prototypową obsługą języka polskiego. Instalacja: W programie OpenOffice.org (testowano tylko wersję 2.0) Kliknij polecenie Narzędzia > Menedżer pakietów > Dodaj , a następnie wybierz plik LanguageTool-0.8.3.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 Check text... służące do sprawdzania tekstu. Bez programu OpenOffice.org Rozpakuj archiwum 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ń. Uwaga. Ta wersja to prototyp; zawiera tylko kilkanaście reguł dla języka polskiego. Niektóre nazwy reguł mają niepoprawne

Poprawki skryptów

Przeanalizowałem dokładniej skrypty generujące słownik morfologiczny (żeby wprowadzić kodowanie stopnia wyższego). Okazało się, że było sporo usterek. Przede wszystkim niepoprawnie obsługiwane były kombinacje prefiksów i afiksów ze słowników w formacie ispella, a przez to wszystkie formy z negacją miały losowo przydzielone znaczniki. Poza tym w jednym z podstawowych plików pośrednich znajdowało się za mało form źródłowych. Wprowadziłem następujące zmiany: flagi obecnie są traktowane nie jako ciągi znaków dosłownie, lecz najpierw sortowane (dzięki temu można było zmniejszyć objętość bazy końcówek i prefiksów): flagi w ispellu mogą występować w dowolnej kolejności, więc konkretna kolejność w słowniku nie powinna być brana pod uwagę obsługa prefiksów i sufiksów jednocześnie; rezygnacja z domyślnej obsługi wyrażeń regularnych "\>" i "\<" w skryptach awk: niektóre polskie znaki (np. „ą”) były niepoprawnie interpretowane, w związku z czym zastąpiłem to nieco mniej

Kolejna wersja słownika - 0.3

Udostępniłem nową wersję słowników w projekcie Morfologik (do pobrania z tej strony ). Zmiany obejmują: oznaczenie przysłówków stopnia wyższego i wprowadzenie jako form podstawowych tych przysłówków stopnia równego, np. „lepiej” -> „dobrze” oznaczenie przysłówków stopnia najwyższego w sposób analogiczny Uzyskałem to dzięki konsekwentnemu oznaczeniu tych części mowy w słowniku znaczeń tworzonym na stronie kurnik.pl, a następnie ręcznemu odfiltrowaniu drobnych błędów formatowania i literówek. Analiza flag regularnych form przymiotników stopnia wyższego wskazuje, że w słowniku ispella są one zakodowane tak samo, jak przymiotniki pochodzące od nazw własnych (np. Bachusowy ). Pisownia „nie” z oboma rodzajami przymiotników nie jest łączna i w obu wypadkach inna. Oznacza to, że tylko część należy oznaczyć jako adj:comp..., a formy od nazw własnych pominąć (rozpoznawać dzięki wielkiej literze w regule). Postaram się znaczniki stopnia wyższego wprowadzić w kolejnej wersji.

Nowe kodowanie reguł

Dotychczasowe kodowanie reguł, jakie zaplanował Daniel Naber w LanguageTool, jest niewystarczające dla języka polskiego z jego zmiennym szykiem. Opracowuję obecnie nową notację i kod w Javie, który ją obsługuje. Wprowadziłem: możliwość użycia wyrażeń regularnych – dla danego elementu tekstu, jego znacznika części mowy lub lematu; zmianę notacji znaczników części mowy (do tej pory musiały być wielkimi literami); Planuję wprowadzić: możliwość łatwego kodowania negacji (dawniej był to znak ^ z uproszczonej notacji wyrażeń LT; w wyrażeniach regularnych da się zakodować zanegowany ciąg, lecz jest to niezwykle rozwlekłe i ręcznie wręcz niemożliwe); możliwość specyfikowania lematu w treści reguł; przeniesienie sprawdzania, czy fragment reguły jest wrażliwy na wielkość liter, na poziom pojedynczego symbolu tekstu; możliwość określenia maksymalnej liczby symboli do opuszczenia, zanim zostanie znaleziony dany znacznik (do uproszczonej obsługi zmiennego szyku wyrazów). Najtrudniejsza kwestia wią

Dwa poziomy korekty stylistycznej

Tradycyjne korektory gramatyczne i stylistyczne operują na poziomie pojedynczego zdania (rzadziej: akapitu). Natomiast w polszczyźnie istnieją trzy rodzaje błędów występujących na poziomie nie tylko pojedynczych zdań, akapitów, ale nawet całego tekstu: powtórzenia wyrazów – błędem są powtórzenia tych samych sformułowań czy wyrazów w sąsiedztwie, ale też nasycenie takimi samymi środkami stylistycznymi całego tekstu jest niewłaściwe; rymy wewnątrz zdań i akapitów; za długie zdania, za długie akapity, za długie wyrazy (te też mogą być zbyt trudne do czytania). Pierwszy rodzaj błędów można wychwycić przez analizę frekwencyjną pojedynczych wyrazów oraz n-tek wyrazów (zapewne najczęściej dwójek i trójek uporządkowanych). Innymi słowy, mogą tu zadziałać standardowe algorytmy wykrywania kolokacji. Jest to hipoteza do sprawdzenia; dokładniej – należałoby sprawdzić, czy zbyt częste powtórzenia jednostki n w małym fragmencie tekstu są widoczne na tle częstości innych jednostek. Zapewne są; test

I kolejna wersja słownika już jest...

Na stronie projektu znowu są nowe pliki do pobrania : w słowniku wprowadzono więcej anotacji dla wyrazów bez flag ispella (m.in. dokonano anotacji wszystkich przyimków anotowanych w korpusie IPI oraz kilku dodatkowych; uzupełniłem zagubione klasy flag dla wielu czasowników, dodałem nieregularną odmianę czasownika być oraz predykatywy można, trzeba itd.). W repozytorium SVN zaktualizowałem skrypty. Do zrobienia pozostaje: uzupełnienie odmian czasowników nieregularnych (na pewno mieć , wszystkie formy są oznaczone tylko jako verb:irreg) uzupełnienie zaimków osobowych (siebie, on, ty; niektórych form w ogóle nie ma) anotowanie stopnia wyższego i najwyższego przysłówków (jest tylko adv; nie da się odróżnić dłużej i długo); brak niektórych form, np. ładniej anotowanie stopnia wyższego i najwyższego przymiotników; być może różnica polega na braku flagi negacji b ? (jeśli tak, to trzeba by to hurtem poprawić w bazie morfologicznej).