200 likes | 323 Views
„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
E N D
„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