Składnia zapytań w programie Poliqarp jest wzorowana na składni używanej w programie Corpus Query Processor (CQP) stworzonym na Uniwersytecie w Stuttgarcie, zawiera jednak szereg rozszerzeń i udogodnień. Niniejszy rozdział omawia składnię zapytań programu Poliqarp i ilustruje ją wieloma przykładami.
W najprostszym wypadku zapytanie to ciąg szukanych segmentów, np.:
W drugim z powyższych dwóch zapytań występują trzy segmenty odpowiadające dwóm słowom: przyszedłem i rano. W wypadku prostych zapytań o formy Poliqarp próbuje wykryć sytuacje, w których słowo składa się z kilku segmentów i znaleźć odpowiednie ciągi segmentów, a zatem prawidłowe wyniki dadzą także zapytania:
Domyślnie rozróżniana jest kasztowość (wielkość) liter, a zatem poniższe dwa zapytania dadzą różne wyniki:
W zapytaniach o segmenty mogą wystąpić standardowe wyrażenia regularne wykorzystujące następujące znaki specjalne: ?, *, +, ., ,, |, {, }, [, ], (, ) oraz liczby naturalne pisane cyframi arabskimi, np. 0 czy 21, przy czym specyfikacje segmentów zawierające wyrażenia regularne muszą być ujęte w cudzysłowy ". Ponieważ formalny opis wyrażeń regularnych wykracza poza ramy niniejszej publikacji, ograniczymy się tutaj do kilku przykładów, które powinny pozwolić użytkownikowi na szybkie przyswojenie składni i znaczenia takich wyrażeń.
Specyfikacje segmentów podane powyżej muszą pasować do całych segmentów stąd konieczność umieszczenia po obu stronach ciągu (la){3,} w zapytaniu 13. o segmenty zawierające ciąg lalala wyrażenia .*, pasującego do dowolnego ciągu znaków. Ten sam efekt zostanie osiągnięty przy użyciu flagi /x, oznaczającej, że dana specyfikacja segmentu musi pasować przynajmniej do części danego segmentu, niekoniecznie do całego segmentu:
Aby znaleźć wszystkie formy leksemu KORPUS, można użyć następującego zapytania:
Atrybut base jest jednym z wielu możliwych atrybutów, jakie mogą pojawić się w zapytaniu. Wartością tego atrybutu powinna być specyfikacja formy podstawowej (hasłowej), a zatem zapytanie [base=pisać] może być użyte do znalezienia form typu pisać, piszę, pisała, piszcie, pisanie, pisano, pisane itp.
Innym możliwym atrybutem jest orth wartości tego atrybutu określają same segmenty, a zatem następujące pary zapytań są równoważne:
Nie są jednak równoważne zapytania:
Wartościami atrybutów base i orth mogą być wyrażenia regularne, podobnie jak w wypadku prostych zapytań o formy opisanych w p.3.1, np.:
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:
Podobne znaczenie ma następujące zapytanie o te wystąpienia segmentu minę, które nie są interpretowane jako formy leksemu MIJAĆ.
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.
Podobnie jak w rachunku zdań, zapytanie z podwójną negacją jest równoważna zapytaniu bez negacji, a zatem następujące zapytania o segment nie jako formę zaimka osobowego ON są w pełni równoważne:
W powyższych zapytaniach operator & spełnia rolę logicznej koniunkcji. Operatorem do niego dualnym jest operator |, spełniający rolę logicznej alternatywy. Oto kilka przykładów użycia tego operatora:
Aby lepiej zrozumieć różnicę pomiędzy operatorami & i |, porównajmy następujące dwa zapytania:
Specyfikacje pozycji w korpusie, ujęte w nawiasy kwadratowe, mogą zawierać dowolną liczbę warunków typu atrybut=wartość (na przykład orth=nie) połączonych operatorami !, & i |, tak jak pokazują to powyższe przykłady. Możliwe jest także całkowite pominięcie jakichkolwiek warunków poniższe zapytanie mogłoby posłużyć do znalezienia wszystkich segmentów w korpusie.1
Taka trywialna specyfikacja pozycji w korpusie, pasująca do dowolnego segmentu, może posłużyć na przykład do znalezienia dwóch form oddzielonych od siebie dowolnymi dwoma segmentami, np.:
Dla wielu zastosowań ciekawsza byłaby możliwość zapytania na przykład o formy oddalone od siebie o najwyżej pięć pozycji. Poliqarp umożliwia zadawanie takich pytań, gdyż pozwala na formułowanie wyrażeń regularnych także na poziomie pozycji korpusu. Na przykład zapytanie o formę leksemu BAĆ występującą dwie, trzy lub cztery pozycje dalej niż forma się może wyglądać następująco:
Zapewne bardziej poprawnym zapytaniem o różne wystąpienia form tzw. czasownika zwrotnego BAĆ SIĘ byłoby zapytanie o się w pewnej odległości przed formą leksemu BAĆ, ale bez znaku interpunkcyjnego pomiędzy tymi formami, lub bezpośrednio za taką formą, ewentualnie oddzielone od formy BAĆ zaimkiem osobowym:
Powyższe zapytanie można uprościć poprzez zastąpienie warunku orth!="[.!?,:]" bezpośrednim odwołaniem do ,,klasy gramatycznej'' interp:
Ogólniej, wartościami atrybutu pos
(ang. part of speech 'część mowy') są skróty nazw klas
gramatycznych omówionych w p.2.2 (por. tabela
na str.
). Na przykład zapytanie o sekwencję
dwóch form rzeczownikowych rozpoczynających się na a może być
sformułowane w sposób następujący:
Podobnie jak to miało miejsce w wypadku specyfikacji form tekstowych i form hasłowych, także specyfikacje klas gramatycznych mogą zawierać wyrażenia regularne. Na przykład, zważywszy na to, że zaimki osobowe należą do klasy zaimków trzecioosobowych ppron3 i do klasy zaimków nietrzecioosobowych ppron12, poniższe zapytania mogą posłużyć do znalezienia dowolnych form dowolnych zaimków osobowych:
W zapytaniach można określać wartości nie tylko formy wyrazowej (za pomocą atrybutu orth), formy hasłowej (za pomocą base) i klasy gramatycznej (za pomocą pos), ale także wartości poszczególnych kategorii gramatycznych, takich jak przypadek czy rodzaj. Służą do tego następujące atrybuty (por. p.2.1):
| atrybut | kategoria | możliwe wartości |
|---|---|---|
| number | liczba | sg pl |
| case | przypadek | nom gen dat acc inst loc voc |
| gender | rodzaj | m1 m2 m3 f n |
| person | osoba | pri sec ter |
| degree | stopień | pos comp sup |
| aspect | aspekt | imperf perf |
| negation | zanegowanie | aff neg |
| accentability | akcentowość | akc nakc |
| post-prepositionality | poprzyimkowość | npraep praep |
| accommodability | akomodacyjność | congr rec |
| agglutination | aglutynacyjność | agl nagl |
| vocalicity | wokaliczność | nwok wok |
A zatem możliwe jest zadanie na przykład następujących zapytań:
Zamiast pełnych nazw atrybutów można używać ich trzyliterowych skrótów:
| atrybut | skrót |
|---|---|
| number | nmb |
| case | cas |
| gender | gnd |
| person | per |
| degree | deg |
| aspect | asp |
| negation | neg |
| accommodability | acm |
| accentability | acn |
| post-prepositionality | ppr |
| agglutination | agg |
| vocalicity | vcl |
Wersje graficzna i tekstowa umożliwiają zdefiniowanie tzw. aliasów, czyli skrótów alternatyw wartości danego atrybutu, których następnie można używać jak zwykłych wartości atrybutów. W obecnej wersji Korpusu IPI PAN predefiniowane są cztery takie aliasy:
| alias | definicja |
|---|---|
| masc | m1 m2 m3 |
| noun | subst depr ger xxs ppron12 ppron3 |
| pron | ppron12 ppron3 siebie |
| verb | 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:
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:
.
Tak jak w wypadku innych atrybutów, specyfikacja atrybutu tag może być zadana wyrażeniem regularnym, np.:
Jedną z cech, które wyróżniają Korpus IPI PAN i program Poliqarp, jest możliwość reprezentacji wieloznaczności morfosyntaktycznych. Istnieją jednak konstrukcje, w których nie jest możliwe ujednoznacznienie interpretacji danej formy, na przykład dlatego, że kilka możliwych interpretacji prowadzi do identycznego znaczenia całego zdania. Ilustruje to przykład 1.
W przykładzie tym nie można stwierdzić, czy forma pijaną jest formą biernikową, jak pijanego w 2a., czy też formą narzędnikową, jak pijanym w 2. Dlatego też w korpusie segment pijaną w 1. powinien dostać dwie interpretacje: biernikową i narzędnikową.W takim wypadku powstaje jednak pytanie, czy segment pijaną w 1. powinien zostać znaleziony w wypadku zadania zapytania typu [case=acc], czy też nie: za odpowiedzią pozytywną przemawia fakt, że interpretacja biernikowa jest poprawną interpretacją tego segmentu w tym kontekście, zaś za odpowiedzią negatywną fakt, że nie można z całkowitą pewnością uznać tej formy za formę biernikową.
Zamiast narzucać jedną z tych interpretacji, Poliqarp pozwala na zadanie obu rodzajów zapytań. Wynikiem zapytania [case=acc] będzie znalezienie tych segmentów, w wypadku których przynajmniej jedna z interpretacji poprawnych w danym kontekście jest interpretacją biernikową, a zatem, w wypadku zdania 1., zostanie znaleziony zarówno segment pijaną, jak i segment ją, zaś w wypadku zdania 2a. zarówno pijanego, jak i go. Aby natomiast znaleźć te segmenty, które są biernikowe z całą pewnością, tj. których każda poprawna w danym kontekście interpretacja jest biernikowa, należy posłużyć się zapytaniem [case==acc]. Wynikiem tego ostatniego zapytania w wypadku zdania 1. będzie znalezienie formy ją, ale nie formy pijaną, zaś w wypadku zdania 2a. zostaną ponownie znalezione obie formy go i pijanego choć są to formy synkretyczne posiadające także interpretacje dopełniaczowe, w kontekście zdania 2a. powinny zostać zdezambiguowane do interpretacji biernikowej.
Dzięki temu rozróżnieniu możliwe jest na przykład wyszukiwanie form, które mogą być w danym kontekście interpretowane jako biernikowe lub dopełniaczowe, a zatem w poprawnie oznakowanym korpusie poniższe zapytanie może dać niepuste wyniki.
Powyższe zapytania dotyczą interpretacji segmentów uzyskanych w procesie dezambiguacji, tj. w wyniku ujednoznacznienia (a raczej unietakwieloznacznienia) interpretacji morfosyntaktycznych. W Korpusie IPI PAN zachowane są jednak wszystkie interpretacje danego segmentu znane analizatorowi morfologicznemu, a nie tylko te, które zostały uznane za poprawne w danym kontekście. W pewnych sytuacjach przydatny jest dostęp do tych odrzuconych interpretacji, na przykład wtedy, gdy chcemy znaleźć wszystkie występujące w korpusie formy synkretyczne o możliwych interpretacjach biernikowej i dopełniaczowej, niezależnie od tego, które z tych interpretacji są poprawne w danym kontekście, albo gdy chcemy zignorować potencjalnie błędne wyniki działania dezambiguatora. W pierwszym z tych wypadków posłużyć się możemy następującym zapytaniem:
Ostatnim rodzajem równości dostępnym w zapytaniach jest ~~. Zapytanie poniższe może posłużyć do znalezienia tych form, o których jeszcze przed ujednoznacznianiem wiadomo, że są wyłącznie biernikowe:
Poniższa tabela podsumowuje znaczenie poszczególnych operatorów równości.
| w wynikach | w wynikach | |
|---|---|---|
| analizy morfologicznej | dezambiguacji | |
| co najmniej jedna interpretacja | ~ | = |
| każda interpretacja | ~~ | == |
A zatem prawdziwe są następujące implikacje:
Tekst zawarty w Korpusie IPI PAN został automatycznie podzielony na zdania i na akapity. Informację tę można wykorzystać w zapytaniach, na przykład ograniczając dopasowanie do jednego zdania.
Aby ograniczyć zasięg zapytania, należy dopisać do zapytania słowo kluczowe within, a po nim s lub p, w zależności od tego, czy zasięg ma być ograniczony do zdania (ang. sentence) czy do akapitu (ang. paragraph). Ilustruje to następujący przykład zapytania o zdania, w których forma się występuje za formą leksemu BYĆ, lecz nie bezpośrednio za nią:
Z każdym utworem znajdującym się w Korpusie IPI PAN związane są tzw. metadane, czyli informacje o tytule i autorze utworu, jego pochodzeniu, wydawcy itp. Część z tych informacji jest dostępna za pomocą programu Poliqarp i może zostać użyta do ograniczenia zasięgu zapytania, na przykład do tekstów danego autora lub tekstów powstałych w danym przedziale czasowym.
W pierwszej wersji Korpusu IPI PAN dostępne były trzy rodzaje metadanych, którym odpowiada pięć metaatrybutów:
Aby ograniczyć zasięg zapytania do określonych wartości metadanych, należy na końcu zapytania wpisać słowo kluczowe meta, po którym następuje specyfikacja wartości metaatrybutów. W wypadku, gdy zapytanie jest ograniczone zarówno do zdania czy akapitu, jak i na podstawie metadanych, specyfikacja ograniczenia do zdania lub akapitu występuje w zapytaniu przed specyfikacją metadanych, na przykład:
Odmiennie traktowane są atrybuty created, first_published i published, którego wartościami mogą być wyłącznie daty. W wypadku atrybutów tego typu nie można użyć wyrażeń regularnych, natomiast można użyć znaków < i > w celu określenia przedziału czasowego, z jakiego dany utwór ma pochodzić, na przykład:
Warunki dotyczące metadanych można łączyć za pomocą operatorów &, | i !:
W pierwszej wersji korpusu wiele utworów nie posiadało kompletnych metadanych. Efektem powyższych zapytań, w których podane są ograniczenia na metaatrybuty, będzie znalezienie tylko tych utworów, dla których stosowne metaatrybuty mają przypisane właściwe wartości. A zatem wynikiem pierwszego z poniższych zapytań będzie znalezienie znacznie mniejszej liczby wyników niż w wypadku drugiego zapytania.
W wypadku, gdy dany metaatrybut nie ma przypisanej odpowiedniej wartości, przyjmuje się, że jego wartością jest pusty ciąg, tj. "". A zatem poniższe zapytanie równoważne jest drugiemu z zapytań powyżej.
W drugim wydaniu Korpusu IPI PAN metadane zostały uzupełnione, poprawione i rozszerzone o nowe metaatrybuty. Obecnie dostępne są następujące metaatrybuty (należy zwrócić uwagę na zmianę nazw atrybutów w stosunku do pierwszego wydania korpusu; obecnie stosowane są polskie nazwy atrybutów):
Na przykład, aby znaleźć sekwencje pięciu rzeczowników w dowolnym tekście naukowo-dydaktycznym wydanym w postaci książki, należy zadać następujące pytanie:
W części zapytania dotyczącej form, tj. przed kwalifikatorami within i meta, można używać znacznika wyrównania ^, na przykład: