Podział cech

Cecha – co najmniej pobiera zależny od cechy context i zależne od cechy dane dodatkowe (index na token, anotację, parę anotacji..), i zwraca string opisujący wartość tej cechy dla podanych danych.

Zakładany język implementacji – Python.

Na poziomie funkcjonalnym mamy podział na cechy w zależności od centrum zainteresowania:
  • Cechy tokenów
  • Cechy anotacji
  • Cechy par anotacji

Proces generowania cechy wymaga wskazania centralnego elementu, odpowiednio tokenu, anotacji lub pary anotacji.

Na poziomie implementacji mamy drugi wymiar podziału:
  • Cechy realizowalne za pomocą WCCL
  • Cechy wymagające kodu w Pythonie
Warto zatem zaimplementować uogólniony mechanizm wywoływania cechy zapisanej w WCCL:
  • Cechy podanej jako pojedynczy operator WCCL poprzez:
    • Podanie bezpośrednio kodu operatora, tekstowo
    • Podanie nazwy pliku ccl oraz nazwy operatora (sekcja z indeksem)
  • Cechy podanej jako ciąg operatorów WCCL poprzez:
    • Podanie bezpośrednio ciągu operatorów oddzielonych przecinkiem, tekstowo
    • Podanie nazwy pliku ccl oraz nazwy sekcji i uruchomienie całego ciągu operatorów z tej sekcji

Cechy tokenów

1. Cechy WCCL - Cechy, dla których wystarczy sam operator WCCL, trywialny bądź bardziej wyrafinowany. Ze względu na wydajność mogą być selektywnie realizowane w pełni lub częściowo kodem pythonowym.

Konstrukcja: operator WCCL
Działanie: Z podanego kontekstu trzeba zbudować (quasi)zdanie, ustawić bieżącą pozycję na podany token, odpalić operator i zwrócić jego wartość. Część wymaga jednak dodatkowego parametru
  • Proste operatory
    • Klasa gramatyczna
    • Wartość atrybutu (dodatkowy parametr – jaki atrybut)
    • Orth
    • Lemat
    • Prefix (dodatkowy parametr – długość prefiksu; ale uwaga, nie jest to zmienna operatora WCCL)
    • Suffix (dodatkowy parametr – długość suffiksu; uwaga j.w.)
  • Ciut bardziej skomplikowane cechy, da się zrobić WCCL, choć można też i kodem:
    • Wzorzec (kategoria) ortha - za pomocą regexów i ifów/elsów dla zwrócenia odpowiedniej wartości
    • Zaczyna się z dużej litery - też regex nawet bez ifów, chyba że chcemy 0/1 a nie False/True
    • Zaczyna się z małej litery – j.w.
    • Zaczyna się symbolem – j.w.
    • Zaczyna się liczbą – j.w.
    • Zawiera dużą literę – j.w.
    • Zawiera małą literę – j.w.
    • Zawiera symbol – j.w.
    • Zawiera liczbę – j.w.
  • Cechy WSD – jeszcze bardziej skomplikowane cechy, ale dające się mimo wszystko zapisać kodem WCCL. Pobierają pewne wartości z okna wokół wybranego tokenu, nie uwzględniając tego tokenu, potencjalnie ignorując tokeny spełniające pewne warunki (należące do danej klasy gramatycznej). Wymagana parametryzacja: początek okna, koniec okna, stosowany filtr.
    • Base – zbiór form bazowych (base) z wybranego zakresu wokół tokenu, odfiltrowana do danych klas gramatycznych (uwaga: nie do końca rozumiem kwestię gęsta/rzadka)
    • Posbase – base + part of speech tokenów z wybranego zakresu, ograniczonych do zadanych klas gramatycznych
    • One – TBD czym się różni od posbase
    • Dowolny wewnętrzny operator WCCL – iteracja jak w powyższych przykładach np. jak przy Base, ale zbierana informacja pochodzi od bardziej skomplikowanego operatora WCCL niż Base
  • Cechy wymagające wczytania leksykonu – większość cech tego nie wymaga, co je upraszcza. Niestety od strony technicznej obecnie parsowanie WCCL wspiera leksykony tylko w ramach wczytywania operatorów z pliku a nie przy parsowaniu stringa (można również operatory tworzyć ręcznie, nie parsując).
  • Wystąpienie w słowniku – stosowny leksykon lub 3, być może ify na zwrócenie wartości B, I, O
2. Cechy, dla których nie ma implementacji WCCL
  • Wymagają bezpośredniego, indywidualnego zakodowania
    • Szablon ortha – wersja 1 (rzutowanie ortha na szablon, zamiana symboli na inne)
    • Szablon ortha – wersja 2 (podobnie jak wyżej, ale bez powtórzeń symboli)

Cechy anotacji

1. Cechy operujące na tokenach
  • Cechy dotyczące głowy anotacji – poprzez rzutowanie anotacji na jej głowę, cechy te sprowadzają się w praktyce do cech tokenu, wymienionych w poprzednim punkcie (niezależnie czy są cechami WCCL czy nie)
    • Np. orth, base, klasa gramatyczna, wartości atrybutów
      Nie wymienione wcześniej, dające się zapisać jako WCCL:
    • True/false czy jest zaimkiem
    • Czy jest modyfikowana zaimkiem wskazującym (choć może wymagać podania granicy anotacji czyli kolejny punkt)
    • Czy jest podmiotem w znaczeniu operatora WCCLowego IsSubj
  • Cechy dotyczące wszystkich tokenów anotacji – wymagają podania początku i końca anotacji (pozycji) dla WCCL. Podobne do cech WSD wspomnianych wcześniej, jednak zamiast na tokenach z zakresu wokół wybranego tokenu, z pominięciem tego tokenu, operują na wszystkich tokenach w ramach anotacji. Wymagane podanie granicy anotacji dla kodu w WCCL
    • Zbiór wszystkich klas/wartości atrybutu/orthów/lematów
    • Czy któryś z tokenów spełnia zadany warunek
  • Cechy dotyczące tokenów spoza anotacji – wymagane przekazanei zakresu anotacji dla WCCL oraz dodatkowego parametru
    • N-ty poprzedzający orth
2. Cechy dotyczące samej anotacji a nie tokenów wokół/spoza
  • Wymagają dostępu do danych o anotacji, potrzebny kod nie-WCCLowy
    • Typ anotacji
    • Czy anotacja

Cechy par anotacji

1. Cechy możliwe do zapisania w WCCL, operujące na tokenach w ramach zdania
  • Rzutowanie pary anotacji na jedną z anotacji sprowadza cechę pary do cechy anotacji powyżej
  • Cechy, które wymagają przekazania zakresu obu anotacji
    • Zbiór wszystkich klas/wartości atrybutu/orthów/lematów tokenów POMIĘDZY anotacjami
      2. Cechy możliwe do zapisania w WCCL, ale operujące zasadniczo na kontekście powyżej zdania. Potrzeba utworzenia quasi-zdania
  • Ograniczone do głów anotacji – quasi-zdanie może składać się tylko z dwóch głów
    • Zgodność headów co do liczby/rodzaju
      3. Cechy wymagające dedykowanego kodu, nie powiązane ze sobą
    • Odległość między anotacjami w tokenach
    • Odległość między anotacjami w zdaniach
    • Miary podobieństwa tekstowego
    • Czy obie anotacje to nazwa własna
    • Czy obie anotacje znajdują się w ramach tego samego NP
  • Odwołujące się do słowosieci
    • Odległość między znaczeniami głów
    • Czy głowy zgadzają się co do klasy semantycznej
    • Czy głowy zgadzają się co do bycia obiektem ożywionym

Cechy dokumentu

1. Metadane o dokumencie – dziedzina, liczba zdań, liczba tokenów itp

Cechy korpusu

1. Kolokacje, częstości globalne, czy słowo jest częste