Marcin Woliński Komputerowa weryfikacja gramatyki Świdzińskiego 12 maja 2005 j INSTYTUT PODSTAW INFORMATYKI POLSKIEJ AKADEMII NAUK ul. J. K. Ordona 21, 01-237 Warszawa
Automatyczna analiza składniowa Niniejsza praca dotyczy automatycznej analizy składniowej wypowiedzeń w języku polskim. Celem automatycznej analizy składniowej jest sprawdzenie, czy wypowiedzenie (dane jako napis) jest akceptowane przez daną gramatykę formalną, i określenie jego struktury.
Automatyczna analiza składniowa Niniejsza praca dotyczy automatycznej analizy składniowej wypowiedzeń w języku polskim. Celem automatycznej analizy składniowej jest sprawdzenie, czy wypowiedzenie (dane jako napis) jest akceptowane przez daną gramatykę formalną, i określenie jego struktury. W wypadku niejednoznaczności interpretacji powinny zostać określone wszystkie struktury mogące odpowiadać danemu wypowiedzeniu.
Gramatyka Świdzińskiego (GFJP) Marek Świdziński Gramatyka formalna języka polskiego Wydawnictwa Uniwersytetu Warszawskiego, 1992 stworzona przez lingwistę możliwość realizacji komputerowej nie była celem Autora składnia powierzchniowa (bez semantyki) największa i najbardziej szczegółowa gramatyka formalna polszczyzny (460 reguł)
Cel pracy efektywna realizacja komputerowa pełnej gramatyki Świdzińskiego, weryfikacja opisu zbadanie zgodności reguł z intencjami Autora (wyrażonymi poprzez podanie zestawu zdań, które powinny być akceptowane/nieakceptowane).
Program Świgra Zasadniczym wynikiem pracy jest napisany przeze mnie program komputerowy Świgra. Program ten, zrealizowany w Prologu, jest analizatorem składniowym działającym według reguł gramatyki Świdzińskiego.
Formalizm gramatyczny Gramatyki metamorficzne prologowy formalizm gramatyczny zaproponowany przez Colmerauera: Alain Colmerauer Metamorphosis grammars W: L. Bolc (ed.), Natural Language Communication with Computers. Lecture Notes in Computer Science 63. Springer-Verlag 1978, pp. 133 189. Obecnie bardziej znany w wariancie Definite Clause Grammars (DCG).
Przykładowe reguły zr(wf, A, C, T, Rl, O, Neg0, I, Z) (r8) zsz(wf, A, C, T, Rl, O, Neg, I, Z), przec, spoj(rc, Oz, ni), zsz(wf, A1, C1, T1, Rl1, 3, Neg1, ni, Z), { równe(z, [byxx, choćby, czyżby, gdyby, jakby, jakoby, żeby]), oblneg(oz, Neg0, Neg, Neg1) }. znakkońca(p) [? ]. morfagl(f, Rl, O) [F ], { słow(f, morfagl, Rl, O) }. (int1) (jel1)
Analiza morfologiczna Analizator składniowy nie pracuje na wypowiedzeniu w formie napisu, ale na jego wstępnie zinterpretowanej postaci podzielonej na segmenty, które zostały zanalizowane morfologicznie (fleksyjnie).
Analiza morfologiczna Analizator składniowy nie pracuje na wypowiedzeniu w formie napisu, ale na jego wstępnie zinterpretowanej postaci podzielonej na segmenty, które zostały zanalizowane morfologicznie (fleksyjnie). Ściślej rzecz biorąc, każdemu segmentowi przypisywane są wszystkie możliwe interpretacje jako wykładnika pewnych form pewnych leksemów.
Analizator morfologiczny Morfeusz W programie Świgra wstępne przetwarzanie tekstu wykonuje analizator morfologiczny Morfeusz, także mojego autorstwa. Program operuje systemem znaczników opracowanym na potrzeby Korpusu IPI PAN. Dane lingwistyczne pochodzą z prac Tokarskiego i Saloniego. Dane są reprezentowane w postaci automatów skończonych. Nie jest wykonywana analiza kontekstu (program nie jest tzw. tagerem).
Analizator morfologiczny Morfeusz Wynik analizy morfologicznej jest reprezentowany w postaci grafu acyklicznego: wierzchołki odpowiadają pozycjom w tekście (pomiędzy segmentami), krawędzie są etykietowane interpretacjami morfologicznymi. Ala AL subst:sg:gen.acc:m1 ma MIEĆ fin:sg:ter:imperf kota KOT subst:sg:gen.acc:m2 Ala ALA subst:sg:nom:f ma MÓJ adj:sg:nom:f:pos kota KOTA subst:sg:nom:f.. interp
Analiza morfologiczna a GFJP W gramatyce Świdzińskiego brak reguł opisujących część jednostek najniższego poziomu (realizowanych przez pojedyncze słowa). Dopisałem około 50 reguł gramatycznych (ponad 30 dla form czasownikowych).
Analiza składniowa Problemy uniemożliwiające bezpośrednią realizację GFJP jako gramatyki metamorficznej: rozszerzenie formalizmu o permutacje, niektóre z warunków, którymi opatrzone są reguły gramatyczne, wymagały przeformułowania w celu zapewnienia ich poprawnego obliczania, jałowa rekursja (cykle złożone z nieterminali, które można dowolnie przepisywać na siebie wzajemnie), reguły opisujące zdanie elementarne wymagały daleko idącej reinterpretacji. Zmiany wprowadzałem w taki sposób, aby nie naruszyć lingwistycznej warstwy opisu.
Algorytm analizy składniowej Prologowe sformułowanie algorytmu analizy składniowej w programie Świgra jest mojego autorstwa. Stosowana jest analiza wstępująca (dla polskiego bardziej efektywna od zstępującej). Analizator buduje upakowany las analiz (pozwalający przechować wykładniczą liczbę drzew w wielomianowej pamięci). Reguły gramatyki są kompilowane do klauzul programu (a nie interpretowane w czasie wykonania).
Algorytm analizy składniowej Mój algorytm jest bardziej efektywny niż algorytm Matsumoto (BUP, Matsumoto 1983), który nie zabezpiecza przed wielokrotnym wykonywaniem pewnych obliczeń. W porównaniu z typowym analizatorem tablicowym w moim algorytmie krawędzie nieaktywne są ukryte w stosie wywołań procedur i znikają, gdy nie są już potrzebne (mniejsze zapotrzebowanie na pamięć). Mój algorytm ma gorsze pesymistyczne oszacowanie złożoności czasowej (O(n k+1 ), gdzie k jest największą długością prawej strony reguły) niż analizator tablicowy (O(n 3 )). Stosunkowo prosto można to jednak poprawić.
Przykładowe drzewo analizy wypowiedzenie zr(os, nd, ter, ozn, żeń/poj, 3, nie, ni, np, 0) ze(os, nd, ter, ozn, żeń/poj, 3, [np(mian)], nie, ni, np, br, 4) fw(np(mian), 1, nd, ter, żeń/poj, 3, nie, ni, np) knoatr(mian, żeń/poj, 3, nie, ni, np, rzecz, 5) fpt(mian, żeń/poj, row, 2, ni, np, zaim, 0) zaimprzym(ten, mian, żeń/poj) Ta TEN knoink(mian, żeń/poj, 3, nie, ni, np, rzecz, 4) formarzecz(mian, żeń/poj) poza POZA ff(os, nd, ter, ozn, żeń/poj, 3, [np(mian)], 1, nie, ni, np, br) kweneg(os, nd, ter, ozn, żeń/poj, 3, [np(mian)], 1, nie, ni, np) partykula(nie) nie NIE kweink(os, nd, ter, ozn, żeń/poj, 3, [np(mian)], 1, ni, np) formaczas1(n, os, nd, ter, ozn, żeń/poj, 3, [np(mian)], 1) wychodzi WYCHODZIĆ znakkonca(np)!! (w1) (r1) (e5) (wy1) (no27) (pt1) (jel6) (no40) (n rz) (fi1) (we21e) (jel2) (we26) (n cz4) (int2)
Inne drzewo dla tego samego zdania wypowiedzenie zr(os, nd, ter, ozn, żeń/poj, 3, tak, ni, np, 0) ze(os, nd, ter, ozn, żeń/poj, 3, [np(mian)], tak, ni, np, br, 4) fw(np(mian), 0, nd, ter, żeń/poj, 3, tak, ni, np) fw1(np(mian), 0, nd, ter, żeń/poj, 3, tak, ni, np) zaimprzym(ten, mian, żeń/poj) Ta TEN fl(nd, ter, żeń/poj, 3, tak, ni, np) fpm(poza, bier, tak, ni, np, os) przyimek(poza, bier) poza POZA fno(bier, nmo/mno, 3, tak, ni, np, os, 0) zaimos(bier, nmo/mno, 3) nie ON ff(os, nd, ter, ozn, żeń/poj, 3, [np(mian)], 0, tak, ni, np, br) formaczas1(n, os, nd, ter, ozn, żeń/poj, 3, [np(mian)], 0) wychodzi WYCHODZIĆ znakkonca(np)!! (w1) (r1) (e5) (wy4) (wy8) (jel6) (lu1) (pm1) (jel3) (no1) (n zo3) (fi1) (n cz4) (int2)
Wyniki eksperymentów poprawnych niepoprawnych akc. nieakc. akc. nieakc. liczba przykładów 515 145 469 46 34 111 91% 9% 23% 77% przeciętnie drzew 10 14 przeciętny czas (s) 0,26 0,36 0,20 0,15 przec. l. kroków 267 905 273 601 201 369 183 400 Wyniki przetworzenia 660 zdań ilustrujących książkę Świdzińskiego. Czas mierzony na komputerze z procesorem Pentium 1,8 GHz pod systemem Linux. Długości zdań wynoszą 3 do 27 segmentów (ponad połowa w zakresie 7 16).
Przykład akceptowanego zdania niepoprawnego * Ona nie czytała książkę.
Przykład akceptowanego zdania niepoprawnego (?) *? Ona nie czytała książkę. Ona nie czytała godzinę.
Podsumowanie Gramatyka Świdzińskiego okazała się poddawać realizacji komputerowej. Uzyskany program komputerowy wykazuje dużą zgodność z intencjami Autora GFJP. Konieczne ulepszenia gramatyki: frazy liczebnikowe, koordynacja wewnątrz fraz (rzeczownikowych, przymiotnikowych,... ), ograniczenie liczby nadmiarowych drzew (frazy luźne!).
Podsumowanie Opracowany przeze mnie algorytm analizy dla gramatyk metamorficznych zapewnia efektywne przetwarzanie zdań polskich. Zawarte w programie Świgra środowisko obliczeniowe dla gramatyk logicznych można wykorzystać z innymi gramatykami tego typu. Niebagatelne znaczenie dla wygody eksperymentów z gramatykami ma gotowy moduł analizy morfologicznej i przejrzysta postać graficzna uzyskiwanych drzew analizy. W zestawieniu z bogatym repertuarem konstrukcji składniowych uwzględnionym w gramatyce Świdzińskiego otwiera to interesujące możliwości automatycznego przetwarzania tekstów polskich.