3. Korpusy tekstów. Korpus IPI PAN. Wyrażenia regularne. Cz. 2
Transkrypt
3. Korpusy tekstów. Korpus IPI PAN. Wyrażenia regularne. Cz. 2
WK, FN-1, semestr letni 2010 Korpusy tekstów w lingwistyce. Wyrażenia regularne. Cz. II Natalia Kotsyba, IBI AL UW 10 i 17 marca 2010 Plan zajęć Powtórzenie podstaw REGEXP: kwantyfikatory, metaznaki (jaka różnica?), funkcje różnych rodzajów nawiasów, znaków interpunkcji ● Znaczniki morfoskładniowe KIPI (wybrane) {instalacja Javy, Poliqarpa, próbki KIPI} Uwaga! Dla pracy nad zadaniami wymagana jest instalacja programu Poliqarp w wersji 1.2, który można pobrać przez stronę: korpus.pl (zasoby) oraz przykładowy korpus z tejże strony, 30 mln segmentów Dla poprawnego działania wymagana jest także instalacja interpretatora Java: http://java.sun.com/javase/downloads/index.jsp (JRE) ● Praca domowa Znajdź w KIPI, tzn. sformułuj zapytania i podaj przykłady wystąpień: • przymiotnik, po którym idzie rzeczownik; • pięć rzeczowników pod rząd; • trzy formy w dopełniaczu liczby mnogiej pod rząd; • zadany wyraz, występujący blisko, ale niekoniecznie od razu po innym zadanym wyrazie; • wyrazy na literę 'z' w tekstach opublikowanych w XIX wieku; • zdania dłuższe niż 100 słów. • Ile czasowników pod rząd może występować najwięcej? • W jakim gatunku tekstów przeważają takie ciągi? *** Dalej informacja ze źródła „Ściągawka do Korpusu IPI PAN” Adam Przepiórkowski (wbudowana jako pomoc w program Poliqarp) Atrybuty orth, base, tag, pos [orth="bez"] forma ortograficzna [base="bez"] lemat [tag="subst:sg:nom:m1"] ciąg danych morfoskładniowych [pos="noun"] ang. part of speech albo fleksem za Januszem Bieniem Fleksemy: subst, depr, noun, num, numcol, adj, adja, adjp, adv, ppron12, ppron3, siebie, fin, bedzie, aglt, praet, impt, imps, inf, pcon, pant, ger, pact, ppas, winien, verb, pred, prep, conj, qub, xxs, xxx, ign, interp Kategorie i ich wartości: num (sg, pl); case (nom, gen, dat, acc, inst, loc, voc); gen (f, m1, m2,m3, n); per (pri, sec, ter); deg (pos, comp, sup); asp (imperf, perf); neg (aff, neg); alc (akc _go_, nakc)_jego_; praep (praep _niego_, npraep _jego_); acc (congr _dwaj_, rec _pięcioma_), agl (agl _niosł_, nagl _niósł_); wok (wok -em, nwok -m) Klasy gramatyczne (fleksemy) [pos="subst|depr|noun|num|numcol|adj|adja|adjp|adv|ppron12|ppron3|siebie|fin|bedz ie|aglt|praet|impt|imps|inf|pcon|pant|ger|pact|ppas|winien|verb|pred|prep|conj|qub| xxs|xxx|ign|interp"] Nieco przybliżone odpowiedniki tradycyjnych części mowy: Rzeczownik: subst, depr, noun, ger, ppron12, ppron3, siebie Przymiotnik: adj, adja, adjp Przysłówek: adv, pred, qub (dokładniej: przysłowek niestopniowalny i partykuły) Liczebnik: num, numcol Zaimek: ppron12 (osobowy 1 i 2 osoba), ppron3 (3 osoba), siebie, ppron Czasownik: fin, bedzie, aglt, praet, impt, imps, inf, pcon, pant, ger, pact, ppas, winien, verb Przyimek: prep Spójnik: conj Interpunkcja: interp Inne: xxs, xxx, ign (nierozpoznane), znacznik pomocniczy Uwaga: za pomocą form na czerwono (aliasów) można znaleźć cały zbiór, który jest na czarno, tzn. polecenie [pos="noun"] znajdzie rzeczowniki najzwyklejsze (subst), odczasownikowe na -nie np. bieganie (ger), deprecjatywne, np. profesory Co się składa na czasownik (verb) formy czasu terazniejszego i przyszłego, np. przyjdę, przychodzę, które dalej przy potrzebie są rozróżniane za pomocą aspektu bedzie formy czasu przyszłego od być: będę, będziesz, itd. aglt formy być w postaci „przyklejonej” do form podstawowych przeszłych praet (pseudo)imiesłów, do którego „przykleja się” aglt, por. [pos=praet][pos=aglt] impt rozkaźnik imps bezosobnik (forny na -no/-to) inf bezokolicznik pcon imiesłów przysłówkowy współczesny pant imiesłów przysłówkowy uprzedni ger gerundium aka odczasownikowe rzeczowniki na -nie np. bieganie pact imiesłów przymiotnikowy czynny ppas imiesłów przymiotnikowy bierny winien lematy winien, powinien wraz z formami fin Kategorie gramatyczne (ich wartości) [tag=".*sg:nom:m1.*"] ciąg danych morfoskładniowych Liczba (pojedyncza): num (sg, pl); Przypadek (mianownik, dopełniacz, celownik, biernik, narzędnik, miejscownik, wołacz): case (nom, gen, dat, acc, inst, loc, voc); Rodzaj (żeński, męski osobowy, męski zwierzęcy, męski przedmiotowy, nijaki): gen (f, m1, m2,m3, n); Osoba (pierwsza, druga, trzecia): per (pri, sec, ter); Stopień (równy, wyższy, najwyższy): deg (pos, comp, sup); Aspekt (niedokonany, dokonany): asp (imperf, perf). Zapytania o atrybuty i ich wartości formułujemy podobnie do zapytań o lematy, części mowy albo formy ortograficzne: [gen=m1] albo [case=gen] Kategorie gramatyczne (ich wartości) Pozostałe: mniej istotne, szczegóły są na http://korpus.pl/pl/cheatsheet/node2.html#SECTION000210 00000000000000 neg (aff, neg); akc (akc go, nakc jego); praep (praep niego, npraep jego); acc (congr dwaj, rec pięcioma), agl (agl niosł, nagl niósł); wok (wok -em, nwok -m) Atrybuty [orth] i [base] ● ● ● Wartościami atrybutów base i orth mogą być wyrażenia regularne, podobnie jak w wypadku prostych zapytań o formy, np.: [orth="bez.?"/i] znalezione zostaną segmenty bez, Beza, bezy itp., ale nie bzem czy bezami [base="bez.?"/i] znalezione zostaną wszystkie segmenty, których forma hasłowa ma 3 lub 4 litery i zaczyna się od bez (z dużej albo małej litery), czyli np. segmenty bzem, bez, bezami itp. Zapytania wyższego rzędu Zapytania o segmenty i o formy podstawowe segmentów można łączyć. Na przykład, aby znaleźć wszystkie wystąpienia segmentu minę rozumianego jako forma leksemu mina (a nie na przykład leksemu mijać), można zadać następujące zapytanie: [orth=minę & base=mina] ● Podobne znaczenie ma następujące zapytanie o te wystąpienia segmentu minę, które nie są interpretowane jako formy leksemu mijać. [orth=minę & base!=mijać] Jaka jest teoretycznie możliwa różnica w odpowiedziach na dwa powyższe zapytania? ● Warunek, że forma hasłowa to nie mijać, można zadać także, umieszczając znak negacji (wykrzyknik) przed nazwą atrybutu, a więc poniższe zapytanie jest w pełni równoważne zapytaniu powyższemu. [orth=minę & !base=mijać] ● Zapytania wyższego rzędu Operator & spełnia rolę logicznej koniunkcji. Operatorem do niego dualnym jest operator |, spełniający rolę logicznej alternatywy. [base=on | base=ja] wszystkie formy zaimków ON i JA, równoważne zapytaniu [base="on|ja"], [base=on | orth=mnie | orth=ciebie] wszystkie formy zaimka ON, a także segmenty mnie i ciebie, [orth=pora & !(base=por | base=pora)] segment pora nie będący ani formą leksemu POR, ani formą leksemu PORA. ● ● Aby lepiej zrozumieć różnicę pomiędzy operatorami & i |, porównajmy następujące dwa zapytania: [orth=minę & base=mina] [orth=minę | base=mina] Zapytania wyższego rzędu ● ● ● ● ● ● ● znalezienie wszystkich segmentów w korpusie: [] znalezienie dwóch form oddzielonych od siebie dowolnymi dwoma segmentami, np.: [orth=się][][][base=bać] W wyniku tego zapytania zostaną znalezione ciągi takie jak się nikogo nie bać, się Boga nie boicie itp. zapytania o formy oddalone od siebie o najwyżej pięć pozycji, np. zapytanie o formę leksemu BAĆ występującą dwie, trzy lub cztery pozycje dalej niż forma się może wyglądać następująco: [orth=się][]{2,4}[base=bać] Jaki wynik (intepretacja jak wyżej) da zapytanie: [orth=się][orth!="[.!?,:]"]{,5}[base=bać] | [base=bać][base="on|ja|ty|my|wy"]?[orth=się] Podaj przykłady trafień z korpusu z prawym i lewym kontekstem o długości 20 segmentów każdy Zapytania o znaczniki morfosyntaktyczne Zastąpienie warunku orth!="[.!?,:]" bezpośrednim odwołaniem do "klasy gramatycznej" interp: [orth=się][pos!=interp]{,5}[base=bać] |[base=bać][base="on|ja|ty|my|wy"]?[orth=się] ● zapytanie o sekwencję dwóch form rzeczownikowych rozpoczynających się na a może być sformułowane w sposób następujący: [pos=subst & orth="a.*"]{2} ● Uproszczenie za pomocą wyrażeń regularnych: [pos=ppron12 | pos=ppron3] [pos="ppron12|ppron3"] [pos="ppron(12|3)"] [pos="ppron[123]+"] [pos="ppron.+"] [pos="ppron"/x] ● Zapytania o znaczniki morfosyntaktyczne A zatem zapytanie o formy BAĆ SIĘ może zostać jeszcze bardziej uproszczone do następującego zapytania: [orth=się][pos!=interp]{,5}[base=bać] |[base=bać][pos=ppron.+]?[orth=się] [number=sg] znalezione zostaną wszystkie formy w liczbie pojedynczej, [pos=subst & number=sg] znalezione zostaną formy rzeczownikowe w liczbie pojedynczej, [pos=subst & gender!=f] formy rzeczownikowe rodzaju męskiego lub nijakiego, [number=sg & case="nom|acc" & gender="m[123]"] pojedyncze mianownikowe lub biernikowe formy męskie. Aliasy (równoważniki) alias masc noun pron verb definicja m1 m2 m3 subst depr ger xxs ppron12 ppron3 ppron12 ppron3 siebie fin praet aglt bedzie inf imps impt pact ppas pcon pant ger winien przy tak zdefiniowanych aliasach noun i masc, poniższe dwa zapytania są równoważne: [pos=noun & gender=masc] [pos="subst|depr|ger|xxs|ppron12|ppron3" & gender="m1|m2|m3"] Ograniczenie kontekstu do zdania (sentence) lub akapitu (paragraph): within s, p [base=bać][orth!=się]+[orth=się] within s Atrybut "tag" O klasy gramatyczne i kategorie gramatyczne można także pytać łącznie, używając do tego atrybutu tag. Na przykład, aby znaleźć wszystkie rzeczowniki nijakie w mianowniku o pojedynczej wartości liczby, można zadać następujące zapytanie: [tag=subst:sg:nom:n] Wartości atrybutu tag mają postać kl:kat :kat :...:kat, gdzie kl to nazwa klasy gramatycznej, a kat to wartości kategorii przysługujących tej klasie. Tak jak w wypadku innych atrybutów, specyfikacja atrybutu tag może być zadana wyrażeniem regularnym, np.: [tag=".*:sg:(nom|acc):m[123].*"] [tag="sg:(nom|acc):m[123]"/x]