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]