„Algorytmy grupowania przedrostków i rozbudowy komputerowego słownika dla jęz. polskiego Ispell” Promotor: prof. zw. dr hab. inż. Jacek Mościński Konsultant: mgr inż. Krzysztof Rzecki Autor: Piotr Baran
Plan prezentacji Cel i zakres pracy Budowa słownika Ispell Algorytmy deprefiksacji Napotkane problemy i rozwiązania Osiągnięte rezultaty
Zakres pracy Przeglą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 pracy Zmniejszenie rozmiaru słownika Zmniejszenie wymagań pamięciowych Ułatwienie dodawania nowych wyrazów do słownika Ułatwienie budowy narzędzi bazujących na słowniku Ispell
Pliki Ispell’a polish.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.dict Fragment pliku: czołem czołgać/dHIik czołgowisko/UV czołgowy/bXxY czołg/QsST Składnia: lemat/flagi lemat
Polish.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 przedrostkowe Flagi można użyć również do definiowania przedrostków Przykład: flag *b: . > NIE #dobry -> niedobry Część praktyczna pracy polega na wyszukaniu przedrostków w słowniku i utworzeniu dla nich flag
Podstawowy algorytm wyszukiwania przedrostków Pobierz wyraz ze słownika Sprawdź czy „kończy się” na jakikolwiek inny wyraz ze słownika Jeżeli tak, początkowa część wyrazu jest przedrostkiem rozchodzić rozchodzić prefix II wyraz I wyraz
Etapy deprefiksacji Wyszukiwanie pseudoprzedrostków algorytmem podstawowym Wybór prawidłowych przedrostków Filtrowanie niepoprawnych związków przedrostek-lemat Usuwanie nieregularności w odmianie Rozwiązanie problemu tzw. wyrazów wieloprzedrostkowych Rozbudowa słownika o nowe wyrazy Podział na słowniki temetyczne
Problemy – złe przedrostki Algorytm 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 przedrostki Algorytm 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 - nieregularności Róż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 - 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 flag Słownik Ispell zawiera 26 flag – definicja przyrostków Wymagane dodatkowe 33 flagi na zdefiniowanie przedrostków Rozwiązanie: przekompilowanie korektora Ispell do obsługi wszystkich znaków ASCII jako możliwych flag
Rozbudowa słownika Dodanie obsługi przedrostków – rozbudowa funkcjonalna Dodanie 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ęcia Zmniejszenie słownika polish.dict o 8,73%
Osiągnięcia Zmniejszenie 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ę Proszę o pytania