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]