Program TimeAssign.py przypisuje etykiety temporalne słowom w podanym tekście. Przetwarzanie tekstu podzielone jest na dwa etapy. W pierwszym z nich, każdemu słowu przypisywana jest jedna z etykiet ze zbioru labels_lev1 ('ipi_signal', 't3_date', 't3_time', 't3_set' i 't3_duration') lub słowo zostaje pozostawione bez etykiety. Do wyuczenia modelu wykorzystywane są sekwencje słów długości 50 składające się z wektorów dystrybucyjnych słów. Podział na zdania odbywa się przy wykorzystaniu funkcji nltk. Wektory te pochodzą z modelu nkjp+wiki-forms-all-100-skipg-ns (http://zil.ipipan.waw.pl/CoDeS) i mają długość 100. W przypadku gdy zdanie jest krótsze, wektor uzupełniany jest zerowymi wektorami  do długości 50, natomiast zdania dłuższe dzielone są na odpowiednią liczbę sekwencji długości 50. 
W drugim etapie do przypisania etykiety 't3_range' wykorzystywane są wyniki pierwszego etapu, czyli do każdego wektora słowa dołączana jest etykieta ze zbioru labels_lev1 nadana danemu słowu. Ostatecznym wynikiem działania programu jest lista słów wraz z nadanymi im etykietami z pierwszego i drugiego etapu.

Program wywoływany jest poleceniem: 
python temporal_annotations_2steps.py -i <plik_tekstowy|nazwa folderu z plikami txt> [-m <model do etapu pierwszego>] [-n <model do etapu drugiego>] [-e <model wektorów dystrybucyjnych słów>] [-c]

Opcje:
-c - z tą opcją program obsługuje pliki csv w formacie "forma_fleksyjna forma_podstawowa tag_morfologiczny" z kolumnami oddzielonymi tabulatorami. Jest to format możliwy do uzyskania z taggera morfologicznego i może być wykorzystany jako źródło danych, jednak ani lematy ani tagi morfologiczne nie są uwzględniane przez model. W tym formacie każde zdanie musi być oddzielone znacznikiem e_sent wstawionym w trzech pierwszych kolumnach. Jeżeli w pliku będą znajdować się etykiety temporalne z innego źródła, policzone zostaną dodatkowo wyniki ewaluacji.
-m - pozwala na podanie ścieżki do modelu, który będzie wykorzystany w pierwszym etapie
-n - pozwala na podanie ścieżki do modelu, który będzie wykorzystany w drugim etapie
-e - pozwala na podanie ścieżki do modelu wektorów dystrybucyjnych słów

Do uruchomienia programu wymagane są foldery models i out_models. Do katalogu models należy skopiować rozpakowany plik z wektorami dystrybucyjnymi słów nkjp+wiki-forms-all-100-skipg-ns.zip ze strony http://dsmodels.nlp.ipipan.waw.pl/. Katalog out_models zawiera modele przypisujące etykiety temporalne w dwóch etapach:

Etap 1: model temp_model_lev1_sentlen50_2levels_ep10_allLabels__nkjp+wiki-forms-all-100-skipg.h5 - przypisuje etykiety 'ipi_signal', 't3_date', 't3_time', 't3_set' i 't3_duration'.
Etap 2: model temp_model_lev2_sentlen50_2levels_ep3_allLabels__nkjp+wiki-forms-all-100-skipg.h5 - przypisuje etykietę 't3_range'.

Jeśli użyte zostały opcje -m, -n lub -e to opisane wyzej foldery mogą nie być wymagane.


Wyniki w zależności od tego, czy przetwarzany był plik txt, czy plik csv z etykietami zapisywane są w jednym lub dwóch plikach.
Dla plików txt:
- temporal_labels__<plik_tekstowy>.csv - zawiera anotacje wyrażeń temporalnych w formacie <słowo> <etykieta>

Dla plików csv zawierających dodatkowo etykiety temporalne:
- stats_<plik_tekstowy>.csv - zawiera statystyki dotyczące przetworzonego tekstu, czyli jakość przypisania poszczególnych etykiet wyliczoną na podstawie danych zawartych w wejściowym pliku csv.

W przypadku podania nazwy folderu z plikami txt lub csv wygerowany plik lub pliki będą zawierały wyniki dla całego zestawu danych.

Wymagania:
    Python 3.6
    biblioteki: Tensorflow, keras, nltk

Przykładowe uruchomienie:
- przetworzenie pliku testtext.txt
python TimeAssign.py -i testtext.txt

- przetworzenie pliku csv
python TimeAssign.py -i 00100516.csv csv -c 

- przetworzenie folderu z plikakami csv:
python TimeAssign.py -i csv_dir -c



Przykładowe dane i wyniki:

Przykład I
Dane wejściowe txt: 27 października 2004 r. uznała dwadzieścia pięc kwitnących okazów bluszczu za pomnik przyrody. Następnie, 29 października pomnikami przyrody zostały jeszcze dwa drzewa. W latach 1975 - 1998 miejscowość położona była w województwie ciechanowskim.

Wyniki:

27			t3_date-1	
października			t3_date-1	
2004			t3_date-1	
r.			t3_date-1	
uznała				
dwadzieścia				
pięc				
kwitnących				
okazów				
bluszczu				
za				
pomnik				
przyrody				
.				
e_sent	e_sent	e_sent
Następnie				
,				
29				
października			t3_date-2	
pomnikami				
przyrody				
zostały				
jeszcze				
dwa				
drzewa				
.				
e_sent	e_sent	e_sent
W				
latach				
1975			t3_date-3	t3_range
-			ipi_signal-1	t3_range
1998			t3_date-4	t3_range
miejscowość				
położona				
była				
w				
województwie				
ciechanowskim				
.				
e_sent	e_sent	e_sent
