Przejdź do głównej zawartości

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.

Komentarze

Anonimowy pisze…
Ciekawe jest że jedna z pierwszych wersji "LanguageTool" jeszcze w Pythonie posiadała "chunking".
Jest to dobrze opisane w pracy magisterskiej autora. W wersji w javie on z tego zrezygnował.
Nawet napisałem list do autora z zapytaniem o to ale niestety sourceforge tak dobrze filtruje spamy, że listy zawsze wracają bez odpowiedzi.

Swoją drogą w morfologik wyraz "kota" wraca z tag "subst:sg:nom:f".
Czy takie błędy są częste? Wygląda na to, że tagger operował na założeniach statystycznych.
W moim programie "Esperantilo". www.esperantilo.org generuję polską fleksje ze słownika.
Program tłymaczy z esperanto na polki.
Może opłacało by się cześć bazy morfologika wygenerować.

Kontakt
mail (małpa) xdobry (punkt) de
Artur Trzewik
Anonimowy pisze…
wydaje mi sie, że jeśli chodzi o słowniki to jedynym poprawnie działającym mógłby się okazać
slownik. To innowacyjne podejście do współczesnosci, translator ten potrafi tłumaczyć zdania w ponad 21 językach świata. Strona jest bardzo przejrzysta, łatwa w obsłudze w dodatku skrypt tłumaczy tekst w ciagu kilku sekund.

Popularne posty z tego bloga

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?

Gromadzimy błędy językowe

Tu zbieram błędy, które mają być wykrywane regułami. Część z tych błędów można dodać także do list autokorekty w Ooo (a nawet w programie MS Word). Warto pamiętać, że na liście muszą być tylko te błędy, których nie wykryje już korektor pisowni (a zatem błędne formy fleksyjne i proste błędy ortograficzne nie muszą być tutaj umieszczane). Zapraszam do komentowania i uzupełniania tej listy, na pewno nie jest wyczerpująca. Mówiąc krótko, to taki negatywny słownik języka polskiego ;) Nowomowa, ale nie błąd: wychodzić|wyjść * naprzeciw -> popierać *, iść na rękę * wprowadzić kogo w co -> zapoznać kogo z czym [fałszywe alarmy] w przypomnieniu -> przypominając [za dużo fałszywych alarmów] do wojny -> przed wojną [fałszywe alarmy, wiele poprawnych zwrotów] więcej chory -> coraz bardziej chory [rzadkie] widzieć się zmuszonym -> być zmuszonym w uzupełnieniu -> uzupełniając do roku -> przed upływem roku [za dużo fałszywych alarmów] trzymać wagę, firmę, mowę ś

Wikipedia history diff as a revision corpus

(As this is of interest not only to the Polish-speaking community, this post is in English.) Recently, after some discussions on the lingucomponent list at OpenOffice.org on the method of finding frequent typos, I did some experiments on the revision history logs. Background. The developers of grammar checkers, and autocorrect lists, have hard times with finding relevant corpora. Revision history is an excellent source about native speakers perception of linguistic norms. Frequently revised typos are perceived as errors that need to be corrected, so using these typos on autocorrect lists is justified. The same goes for style, grammar and usage errors. Method . Experiments involved three steps: Clean the history dump (??wiki-latest-pages-meta-history.xml), to get only relevant parts of the dump. Using XML tools isn't recommended (I tried XSLT, forget it). Using a simple awk script, I was able to clean the > 30GB dump in an hour or so, and got a >17 GB file. The script is simp