Chunkery

Automatic Dictionary Update

type = adu

Parametry:
base-chunker = nazwa wykorzystywanego chunkera
one = (true|false) - opcjonalny, ustawiaj cechy słownikowe tylko tam, gdzie żadna z cech słownikowych nie jest ustawiona

Opis

Jest to meta-chunker, używający wskazanego chunkera do wykonania klasyfikacji dwuprzebiegowej. Anotacje otrzymane w pierwszym przebiegu są wykorzystywane do aktualizacji cech słownikowych w danych wejściowych. Następnie wykonywany jest drugi przebieg i to jego wyniki są zwracane jako wynik klasyfikacji.

Przykładowa konfiguracja

Klasyfikacja dwuprzebiegowa chunkerem crfpp:

-chunker c1:crfpp-load:model.bin
-chunker c2:adu:c1
-use c2

Złożenie chunkerów

type = ensemle

Parametry:
description = definicja potoku przetwarzania (np. c1+c2>c3*c4)

Opis

Umożliwia zdefiniowane głosowania (*) lub kaskady (>) dla już zdefiniowanych klasyfikatorów.

Chunker heurystyczny

type = heuristic

Parametry:
heuristics = lista wykorzystywanych heurystyk ("," jako separator) - opcjonalny, domyślnie wykorzystywane są wszystkie dostępne heurystyki

Opis

Chunker wykorzystuje heurystyki oparte na cechach słownikowych.

Dostępne heurystyki:
  • general-ign-dict: jeśli cecha class jest równa "ign" oraz dokładnie jedna z cech słownikowych jest równa "B", to utwórz anotację takiego typu, jak ta cecha
  • general-camel-base: jeśli forma bazowa zaczyna się dużą literą, a dalej składa się z samych małych liter oraz dokładnie jedna z cech słownikowych jest równa "B", to utwórz anotację takiego typu, jak ta cecha
  • road-prefix: jeśli sekwencja ma ustawioną cechę road_nam i jest poprzedzona sekwencją z ustawioną cechą road_prefix, to utwórz anotację typu ROAD_NAM
  • person: kilka reguł rozpoznających częste wzorce nazw osób (Pan Imię Nazwisko, I. M. Nazwisko, dyrektor Imię Nazwisko itp.)
  • city: kilka reguł rozpoznających częste wzorce odwołań do miast (np. z prefiksem "gmina", "miasto", poprzedzone kodem pocztowym)
  • road: reguła rozpoznająca jako nazwy ulic tokeny występujące pomiędzy prefiksem "ul." a numerem

Chunker CRFPP

type = crfpp

Parametry:
mode = (train|load) wyuczenie nowego modelu lub wczytanie istniejącego
threads = liczba wątków wykorzystywanych podczas uczenia
template = ścieżka do pliku z definicją template'u cech
store = ścieżka do pliku modelu
training-data-converter = lista definicja konwerterów ("," jako separator)
training-data = dane uczące
store-training-data = plik w którym zapisane zostaną dane uczące
format = format danych uczących
types = typy anotacji brane pod uwagę podczas uczenia

Przykład konfiguracji

[main]
features={INI_PATH}/ini/features-56nam.txt
chunker=cp

[chunker_c1]
type=crfpp
mode=load
threads=6
template={INI_PATH}/ini/template-56nam.txt
store={INI_PATH}/data/bins/crfpp_kpwr_cen-train_nam.bin

[chunker_c2]
type=heuristic
heuristics=nam

[chunker_c3]
type=dict-load
store={INI_PATH}/data/bins/dict-nam.bin

[chunker_ce]
type=ensamble
description=c1+c2+c3

[chunker_cp]
type=propagate
base-chunker=ce

Opis

Chunker wykorzystuje bibliotekę CRF++ (Conditional Random Fields) do klasyfikacji.

Do korzystania z chunkera potrzebne jest zdefiniowanie cech, a do trenowania również zdefiniowanie szablonów (parametr template).

Chunker słownikowy (dla jednoznacznych anotacji)

type: dict-compile , dict-load

Opis

Chunker znakuje nazwy własne występujące w podanym słowniku. Nazwy, które w słowniku są przypisane do więcej niż jednej kategorii, oraz te, które znajdują się we wskazanym słowniku nazw pospolitych, są pomijane.

Definicje

Dynamiczna kompilacja słownika:

dict-compile:dict=sciezka/do/slownika.txt:common=sciezka/do/slownika/nazw/pospolitych.txt

Dynamiczna kompilacja i zapis kompilacji do pliku:

dict-compile:dict=sciezka/do/slownika.txt:common=sciezka/do/slownika/nazw/pospolitych.txt:model=/sciezka/do/kompilacji

Wczytanie kompilacji z pliku:

dict-load:sciezka/do/kompilacji.bin

Pełny chunker słownikowy

Tryby: dict-full-compile , dict-full-load

Opis

Chunker znakuje wszystkie nazwy własne występujące w podanym słowniku. W obrębie jednej kategorii nazw własnych znakowane są wyłącznie najdłuższe nazwy --- nazwy zagnieżdżone tego samego typu nie są znakowane.

Definicje

Dynamiczna kompilacja słownika:

dict-full-compile:dict=sciezka/do/slownika.txt

Dynamiczna kompilacja i zapis kompilacji do pliku:

dict-full-compile:dict=sciezka/do/slownika.txt:model=sciezka/do/kompilacji.bin

Wczytanie kompilacji z pliku:

dict-full-load:sciezka/do/kompiltacji.bin

Słownik z nazwami ma postać tekstową. W każdej linii jest jedna nazwa poprzedzona nazwą kategorii oddzielone spacją.

Chunker WCCL

Tryby: wccl

Opis

Chunker znakujący za pomocą ręcznie pisanych reguł w języku WCCL. Wymaga zainstalowanego pakietu WCCL.

Definicje

Znakowanie za pomocą reguł podanych w pliku:

wccl:ścieżka/do/pliku.wccl

Klasyfikator Anotacji

Opis

Klasyfikator określający kategorie anotacji *_nam za pomocą klasyfiaktora z pakietu Weka na podstawie cech anotacji

Lista dostępnych cech anotacji

type=classifier

Parametry:
base-chunker = chunker rozpoznajacy anotacje binarnie (nam)
mode = (train|load) wyuczenie nowego modelu lub wczytanie istniejącego
store = ścieżka do pliku modelu
classifier = klasyfikator z pakietu Weka
strategy = 1-vs-all (dla każdej klasy osobny klasyfikator) lub multi (jeden klasyfikator wieloklasowy)
options = dodatkowe opcje klasyfikatora (w formacie podawanym do weki - opcja1,wartosc1,opcja2,wartosc2,...)
training-data = dane uczące
format = format danych uczących
types = typy anotacji brane pod uwagę podczas uczenia
features = cechy generowane dla anotacji dla potrzeb klasyfikacji

Przykład konfiguracji:

[main]
features={INI_PATH}/ini/features-56nam.txt
chunker=cc
types={INI_PATH}/ini/types.txt

[chunker_c1]
type=crfpp
mode=load
threads=6
template={INI_PATH}/ini/template-56nam.txt
store={INI_PATH}/data/bins/crfpp_kpwr_cen-train_nam.bin

[chunker_c2]
type=heuristic
heuristics=nam

[chunker_c3]
type=dict-load
store={INI_PATH}/data/bins/dict-nam.bin

[chunker_ce]
type=ensamble
description=c1+c2+c3

[chunker_cp]
type=propagate
base-chunker=ce

[chunker_cc]
type=classifier
base-chunker=cp
mode=train
store={INI_PATH}/data/bins/weka_classifier-train.bin
classifier=weka.classifiers.rules.JRip
strategy=multi
training-data={INI_PATH}/kpwr-1.2.6-disamb-mapped/index_names_100.txt
format=batch:ccl
features={INI_PATH}/ini/annotation_features.txt
types={INI_PATH}/ini/types.txt

Klasyfikator Anotacji CRF

Opis

Klasyfikator określający kategorie anotacji *_nam za pomocą klasyfikatora CRF

Anotacje zwijane są do pojedynczych tokenów a ich cechy są odpowiednio przetwarzane.

Lista dostępnych cech anotacji

type=CRFclassifier

Parametry:
mode = (train|load) wyuczenie nowego modelu lub wczytanie istniejącego
base-annotation = kanał anotacji dla których następi klasyfikacja (np. nam)
store = ścieżka do pliku modelu
template = ścieżka do pliku z definicją template'u cech
training-data = dane uczące
format = format danych uczących
types = typy anotacji brane pod uwagę podczas uczenia
annotation-features = cechy generowane dla anotacji dla potrzeb klasyfikacji
context = kontekst dla cech anotacji

Przykład konfiguracji:

[main]
features={INI_PATH}/ini/features-56nam.txt
chunker=cp
types={INI_PATH}/ini/types.txt

[chunker_c2]
type=CRFclassifier
mode=train
threads=6
template={INI_PATH}/ini/template-56nam.txt
store={INI_PATH}/data/bins/model_muc_snapshot.bin
store-training-data={INI_PATH}/data/model_muc_train_data.txt
base-annotation=nam
context=-2:-1:0:1:2
types={INI_PATH}/ini/types.txt
training-data={INI_PATH}/kpwr-1.2.7-names-disamb-n82-flatten/index_names_train.txt
format=batch:ccl
annotation-features={INI_PATH}/ini/annotation_features.txt

[chunker_c1]
type=crfpp
mode=train
threads=6
template={INI_PATH}/ini/template-56nam.txt
store={INI_PATH}/data/bins/model_nam_snapshot.bin
training-data-converter=annotation-mapping:{INI_PATH}/kpwr-mapping-nam.txt,annotation-remove-nested
types={INI_PATH}/ini/types_nam.txt
training-data={INI_PATH}/kpwr-1.2.7-names-disamb-n82-flatten/index_names_train.txt
format=batch:ccl

[chunker_c]
type=ensamble
description=c1>c2

[chunker_cp]
type=propagate
base-chunker=c