CrfppChunker

Definicja szablonu cech

Cechy proste

Cechy proste składają się z pojedynczych cech tokenu. Podstawowy sposób definiowania cech prostych:

[nazwa_cechy_tokenu]:[offset][typ]

Gdzie:

  • [nazwa_cechy_tokenu] – nazwa atrybutu tokenu odpowiadająca nazwie z pliku opisującego generatory cech,
  • [offset] — względne przesuniecie indeksu cechy względem bieżącej pozycji. Wartość 0 oznacza bieżący token, -n oznacza n-ty token przez bieżącą pozycją, +n lub n oznacza n-ty token po bieżącej pozycji,
  • [type] — brak oznacza wygenerowanie cechy unigramowej, B oznacza wygenerowanie cechy bigramowej.

Jeżeli dla danej cechy tokenów ma zostać wygenerowanych kilka cech prostych różniących się przesunięciem lub typem, można to zapisać w jednej linii, oddzielając kolejne pary znakiem ":". Na przykład, dla:

orth:-2:-1:0:1:2:-2B:-1B:0B:1B:2B

Zostaną wygenerowane następujące cechy:

# orth
U00-2:%x[-2,0]
U00-1:%x[-1,0]
U00+0:%x[0,0]
U00+1:%x[1,0]
U00+2:%x[2,0]
B00-2B:%x[-2,0]
B00-1B:%x[-1,0]
B00+0B:%x[0,0]
B00+1B:%x[1,0]
B00+2B:%x[2,0]

Cechy złożone

Cechy złożone składają się z kilku cech tokenu. Podstawowy sposób definiowania cech złożonych:

[nazwa_cechy_tokenu_1]:[offset_1]/[nazwa_cechy_tokenu_2]:[offset_2]/.../[nazwa_cechy_tokenu_n]:[offset_n][typ]

Gdzie:

  • [nazwa_cechy_tokenu] – nazwa atrybutu tokenu odpowiadająca nazwie z pliku opisującego generatory cech,
  • [offset] — względne przesuniecie indeksu cechy względem bieżącej pozycji. Wartość 0 oznacza bieżący token, -n oznacza n-ty token przez bieżącą pozycją, +n lub n oznacza n-ty token po bieżącej pozycji,
  • [type] — atrybut opcjonalny; brak oznacza wygenerowanie cechy unigramowej, B oznacza wygenerowanie cechy bigramowej.

Na przykład, dla:

class:-1/class:0/class:1B

Zostaną wygenerowane następujące cechy:

# class[-1]/class[0]/class[1B]
B00-1/000/00+1:%x[-1,0]/%x[0,0]/%x[1,0]

Cechy proste jako złożone

Możliwe jest definiowanie cech prostych jako złożone, aby móc zdefiniować w osobnych liniach tę samą cechę ale dla różnych offsetów. Obecnie takie definiowanie cech przydaje się w selekcji cech, gdyż jedna linia w definicji szablonu cech stanowi niepodzielną jednostkę podlegającą selekcji (chociaż w reprezentacji CRF++ może stanowić kilka szablonów). Sposób definiowania:

/[nazwa_cechy_tokenu]:[offset][typ]

Na przykład, dla:

/class:-1
/class:2B

Zostaną wygenerowane następujące cechy:

# class[-1]
U00-1:%x[-1,0]

# class[2B]
B00+2:%x[2,0]