„Algorytmy grupowania przedrostków i rozbudowy komputerowego słownika dla jęz. polskiego ...
description
Transcript of „Algorytmy grupowania przedrostków i rozbudowy komputerowego słownika dla jęz. polskiego ...
„„Algorytmy grupowania Algorytmy grupowania przedrostków i rozbudowy przedrostków i rozbudowy komputerowego słownika dla komputerowego słownika dla jęz. polskiego Ispell”jęz. polskiego Ispell”
Promotor: prof. zw. dr hab. inż. Jacek MościńskiKonsultant: mgr inż. Krzysztof RzeckiAutor: Piotr Baran
Plan prezentacjiPlan prezentacjiCel i zakres pracyBudowa słownika IspellAlgorytmy deprefiksacjiNapotkane problemy i
rozwiązaniaOsiągnięte rezultaty
Zakres pracyZakres pracyPrzegląd i porównanie możliwości
oraz wydajności komputerowych słowników języka polskiego
Zaprojektowanie, implementacja i przetestowanie algorytmów służących odnajdywaniu prawidłowych przedrostków oraz grupowaniu wyrazów posiadających te same grupy przedrostków w plikach słownika dla języka polskiego Ispell
Cel pracyCel pracyZmniejszenie rozmiaru słownikaZmniejszenie wymagań
pamięciowychUłatwienie dodawania nowych
wyrazów do słownikaUłatwienie budowy narzędzi
bazujących na słowniku Ispell
Pliki Ispell’aPliki Ispell’apolish.dict – zawiera lematy
języka polskiego (ok. 290 tys.) oraz flagi, na podstawie których zachodzi odmiana
polish.aff – zawiera opis flag odmieniających
polish.hash – plik generowany automatycznie przez Ispell’a na podstawie polish.dict i polish.aff
Polish.dictPolish.dictFragment pliku: czołem czołgać/dHIik czołgowisko/UV czołgowy/bXxY czołg/QsSTSkładnia: lemat/flagi lemat
Polish.aff – przykład flagiPolish.aff – przykład flagi Flaga „s” – mianownik l.mn. dla rzeczowników
nieosobowych rodzaju męskiego oraz osobowych, lecz odmienianych identycznie jak nieosobowe
[^ACĆGJKLŃOŚZŹŻ] > Y # komputery
[CJLYŻ] > E # instruktaż[^CDS] Z > Y # aplauz[CDS] Z > E # utleniacz[KG] > I # pociągĆ > -Ć,CIE # gośćŃ > -Ń,NIE # boleńŚ > -Ś,SIE # goguśŹ > -Ź,ZIE # chabaźO > -O,E # brudzio
Flagi przedrostkoweFlagi przedrostkoweFlagi można użyć również do
definiowania przedrostkówPrzykład:
flag *b:. > NIE #dobry -> niedobry
Część praktyczna pracy polega na wyszukaniu przedrostków w słowniku i utworzeniu dla nich flag
Podstawowy algorytm Podstawowy algorytm wyszukiwania przedrostkówwyszukiwania przedrostkówPobierz wyraz ze słownikaSprawdź czy „kończy się” na
jakikolwiek inny wyraz ze słownika
Jeżeli tak, początkowa część wyrazu jest przedrostkiem
rozchodzić
rozchodzić
I wyraz II wyraz
prefix
Etapy deprefiksacjiEtapy deprefiksacjiWyszukiwanie pseudoprzedrostków
algorytmem podstawowymWybór prawidłowych przedrostkówFiltrowanie niepoprawnych związków
przedrostek-lematUsuwanie nieregularności w odmianieRozwiązanie problemu tzw. wyrazów
wieloprzedrostkowychRozbudowa słownika o nowe wyrazyPodział na słowniki temetyczne
Problemy – złe przedrostkiProblemy – złe przedrostkiAlgorytm podstawowy wyszukuje
wszystkie przedrostki, nawet niepoprawne z punktu widzenia języka polskiego, np. przedrostek woj- w wyrazie „wojna”
Rozwiązanie: filtrowanie przedrostków na podstawie tabeli poprawnych przedrostków ze „Słownika poprawnej polszczyzny PWN”
Problemy – złe przedrostkiProblemy – złe przedrostkiAlgorytm wyszukuje poprawne
przedrostki, ale niepasujące do danej części mowy, np. prefix czasownikowy ob- w rzeczowniku „obraz”
Rozwiązanie: „ręczna” analiza słownika i stworzenie tabeli przyporządkowania przedrostek=>pasujące formy
Problemy - Problemy - nieregularnościnieregularnościRóżnice w odmianie wyrazów z i
bez przedrostka:zarobić => zarabiaćrobić => rabiać #błąd!
Rozwiązanie: wyrazy z nieregularnościami nie są poddawane deprefiksacji (ze wzglądów wydajnościowych i objętościowych)
Problemy - Problemy - wieloprzedrostkowośćwieloprzedrostkowość
W języku polskim występują wyrazy wieloprzedrostkowe, np. przenajświętszy – Ispell nie obsługuje flag wielokrotnych
Rozwiązanie: „zwijanie” tylko zewnętrznego przedrostka (na szczęście mało takich wyrazów – 1,98%)
Problemy – brak flagProblemy – brak flagSłownik Ispell zawiera 26 flag –
definicja przyrostkówWymagane dodatkowe 33 flagi
na zdefiniowanie przedrostkówRozwiązanie: przekompilowanie
korektora Ispell do obsługi wszystkich znaków ASCII jako możliwych flag
Rozbudowa słownikaRozbudowa słownikaDodanie obsługi przedrostków –
rozbudowa funkcjonalnaDodanie przedrostka nie- do
imiesłowów przymiotnikowych (np. nieusprawiedliwiony)
Dodanie przedrostka wielo- do wyrazów z możliwym przedrostkiem jedno- (jednoślad => wieloślad)
Skutek: ponad 6 tys. nowych wyrazów
OsiągnięciaOsiągnięciaZmniejszenie słownika polish.dict o
8,73%
OsiągnięciaOsiągnięciaZmniejszenie pliku polish.hash o 6% (mniejsze zużycie pamięci podczas działania słownika)
Ponad 6 tys. nowych form wyrazowych
Nowa funkcjonalność słownika pozwalająca wykorzystać go w projektach NLP
Dziękuję za uwagęDziękuję za uwagęProszę o pytaniaProszę o pytania