\chapter{Opis dostępnych narzędzi}
\section{ccl\_processor}
\textbf{cll\_processor.py} jest główną funkcjonalnością programu Plumper. 
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
	./ccl_processor -c [plik konfiguracyjny] [plik wejściowy ccl] -o [plik wyjściowy ccl]
\end{verbatim}
\textbf{Uwaga:} należy pamiętać, że ccl\_processor.py przetwarza tylko pliki ccl. Pliki te powinny zostać wcześniej ujednoznacznione semantycznie. Brak ujednoznacznienia nie spowoduje żadnego błędy, ale plumper nie będzie w stanie wykonać rzutowania.
\\
Argument pliku wyjściowego jest opcjonalny. Nie podanie pliku wyjściowego spowoduje, że dane zostaną wypisane do konsoli.
Przykładowe wyjście z plumpera wygląda następująco:
\begin{verbatim}
(...)
   <tok>
    <orth>dziecko</orth>
    <lex disamb="1"><base>dziecko</base><ctag>subst:sg:nom:n</ctag></lex>
    <ann chan="chunk_adjp">1</ann>
    <ann chan="chunk_agp" head="1">3</ann>
    <ann chan="chunk_np">0</ann>
    <ann chan="chunk_vp">0</ann>
    <prop key="sumo_map">subsumed:NonFullyFormed;R:SocialRole;subsumed:Human</prop>
    <prop key="sense:ukb:syns_id">732</prop>
    <prop key="sense:ukb:unitsstr">latorośl-1(os) dziecko-2(os) pociecha-1(os)</prop>
   </tok>
   <tok>
(...)
\end{verbatim}

Dane dodane przez plumpera znajdują się w atrybucie sumo\_map.
\paragraph{Plik konfiguracyjny}
Poniżej przedstawiono przykładowy plik konfiguracyjny:
\begin{verbatim}
sumo]
reductor = False
tagset = nkjp
db_config = /home/blaz/repo/saper/cfg/db
sense_index_file = /home/blaz/repo/npsemrel/resources/WN/wn30-dict/index.sense
sense_index_files = \
					/home/blaz/repo/npsemrel/resources/WN/pwn2sumomapping/WordNetMappings30-adj.txt\
 					/home/blaz/repo/npsemrel/resources/WN/pwn2sumomapping/WordNetMappings30-adv.txt \
 					/home/blaz/repo/npsemrel/resources/WN/pwn2sumomapping/WordNetMappings30-noun.txt \
 					/home/blaz/repo/npsemrel/resources/WN/pwn2sumomapping/WordNetMappings30-verb.txt

\end{verbatim}
Opis parametrów:
\begin{itemize}
\item reductor - Jeśli True jest wykorzystywany w post-processingu oznaczonych relacji mechanizm rreductor, który stara się uzgodnić relacje, które zostały przez algorytm oznaczone jako wymagające ręcznego rozpatrzenia.
\item tagset - wykorzystany w pliku ccl tagset
\item db\_config - plik konfiguracyjny bazy danych, pobrany np. z WordnetLooma:
\begin{verbatim}
	GenerateStats=1
	ShowSQL=0
	Driver=com.mysql.jdbc.Driver
	Url=jdbc:mysql://156.17.128.80:3306/wordnet_work
	User=wordnet
	Password=VfazYsAc9ER8Qjrr
	InitConnections=4
	MaxConnections=5
	WaitIfBusy=1
	CreateSchema=0
	FileDatabase=0
	DirName=
	Dialect=MYSQL
	DBCacheTime=120000
	DBCacheEnable=1
\end{verbatim}
\item sense\_index\_file - ścieżka do pliku index.sense
\item sense\_index\_files - ścieżki do innych potrzebnych plików
\end{itemize}
\section{rreductor}
Pierwszy krok automatycznego zmniejszania liczby R w wynikach rzutowania plWN -> SUMO. Wyniki są wypisywane na standardowe wyjście (stdout).
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./rreductor.py iput_file
\end{verbatim}
input\_file - plik csv z wynikami rzutowania plWN -> SUMO.

\section{bulbulator}
Kolejny krok wykonywany po procesie rzutowania na SUMO. Narzędzie służy do wyeliminowania sprzecznych relacji po przez zastąpienie relacji ''błędnej'', relacją ''prawidłową''. 

Wyniki są wypisywane na wyjście standardowe (stdout).
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./bulbulator.py input_file
\end{verbatim}
input\_file - plik csv z wynikami rzutowania plWN -> SUMO.

\section{oknak}
Narzędzie działające podobnie do bulbulatora, jednak bazujące na innych kryteriach. 
Rebulbulator poprawia wyniki rzutowania według wzoru:
\begin{verbatim}

    mero:el_pa oraz hipo_pa -> subsumed;
    mero:cz_pa oraz hipo_pa -> subsumed;
    mero:cz_pa oraz hiper_pa -> subsumed;
    synmr_pa oraz syncz_pa -> subsumed;
    synmr_pa oraz hipo_pa -> subsumed;
    syn_pa oraz oraz hiper_pa -> equivalent;
    hipo_pa oraz hiper_pa -> instance_of
\end{verbatim}

Wyniki są wypisywane na wyjście standardowe (stdout).
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./oknak.py input_file
\end{verbatim}
input\_file - plik csv z wynikami rzutowania plWN -> SUMO.

\section{dumb\_pwnsump\_map}
Program wczytuje rzutowanie PWN na SUMO i przedstawia wynik.

\section{errorfilter}
Wypisuje ''błędne'' mapowania z pliku wejściowego, to znaczy takie, w których dla danego mapowania przypisano więcej niż jedną relację SUMO). 
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/filters.
\\
\\
Przykładowe wywołanie wygląda nastepująco:
\begin{verbatim}
		./errorfilter.py iput_file
\end{verbatim}
input\_file - plik csv z wynikami rzutowania plWN -> SUMO.

\section{pwn\_sumo\_stat\_lemmas}
Tworzy statystyki domapsowania lematowego dla wskazanych wynikow
Sprawdza ile z podanych rzutowan PWN - SUMO:
\begin{itemize}
\item zgadza sie lematowo
\item prawie zadza sie lematowo
\item nie zgadza sie lematowo
\end{itemize}
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/stats.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./pwn_sumo_stat_lemmas.py input_file
\end{verbatim}
input\_file - plik csv z wynikami rzutowania plWN -> SUMO.

\section{pwn\_sumo\_stat\_rel\_conc}
Dla zadanego zbioru danych wykorzystanych do rzutowania PLWN-PWN-SUMO
Sprawdza licznosci pojec w kontekscie danej relacji

\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/stats.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./pwn_sumo_stat_rel_conc.py input_file
\end{verbatim}
input\_file - plik csv z wynikami rzutowania plWN -> SUMO.

\section{column\_stats}
Narzędzie tworzy statystyki kolumnowe.
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/stats.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./column_stats.py -i [in-file] -o [out-file] -n [nazwa]
\end{verbatim}
\begin{itemize}
\item -i - --in-file - plik wejściowy
\item -o - --out\_file - plik wyjściowy
\item -n - --column\_name - nazwa kolumny, dla której mają zostać stworzone statystyki. 
\end{itemize}
W przypadku braku podania pliku wyjściowego statystyki zostana wypisane na stdout.

\section{r\_only}
Wypisuje pary (pojęcie plwn)->(pojęcieSUMO) lub wszystkie pojęcia plwn, które mają przypisaną tylko relację R. Wynik wypisuje na stdout.
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/stats.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		./r_only.py -i input_file -m 1
\end{verbatim}
Parametr -m (--mode) określa, czy funkcja ma wypisać pojęcia plwn (0), czy pary plwn->SUMO (1) . Domyślnie wypisuje pojęcia plwn. 

\section{mapper}
Moduł zawierający mapowane klasy z WordNetu na SUMO. Tworzy on pliki csv zawierające wszystkie użyteczne dane.
Nagłówek pliku wygląda następująco:
\begin{verbatim}
synset_str_plwn;
dziedzina_plwn;
synset_id_plwn;
rel_miedzyjezykowa;
synset_str_pwn;
pwn_synset_pos;
dziedzina_pwn;
synset_id_pwn;
pojecie_sumo;
rel_sumo_pwn;
rel_sumo_pwn_skrot;
plwn_sumo_rel
\end{verbatim}

\section{resample}
Wydobywa przykłady do pliku
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/evaluation.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		python resample.py -i plwn_pwn_sumo-24.10.2013-alg-v3-reduced_step1.csv -n 5 -s 100
\end{verbatim}
-i --in-file
-n --sample-count
-s --sample-size

\section{resample\_weigted}
Wydobywa przykłady do pliku uwzględniajac liczbę wystąpień danego rzutowania.
\paragraph{Użycie:}
Narzędzie znajduje się w podkatalogu plumper/tools/evaluation.
\\
\\
Przykładowe wywołanie wygląda następująco:
\begin{verbatim}
		python resample_weighted.py -i plwn_pwn_sumo-24.10.2013-alg-v3-reduced_step1.csv -n 5 -s 100 -c config.ini
\end{verbatim}
-i --in-file
-n --sample-count
-s --sample-size
-c -- config
\\
Istnieja dwa sposoby wywołania. Nie podając pliku konfiguracyjnego program automatycznie oblicza wagi poszczegónych relacji i na podstawie tych wag oblicza próbki. Należy pamiętać, że w wyniku zaokrągleń liczność próbki może nieznacznie odbiegać od podanej przez użytkownika.
\\Drugim sposobem wywołania jest wywołanie z wykorzystaniem pliku konfiguracyjnego. W pliku tym mozna podać wagi dla poszczególnych relacji. Należy pamiętać, że wagi te odnoszą się to podanej przy wywołaniu liczności próbki. Podając liczność próbki 1 można podać w pliku konfiguracyjnym dokładną liczbę wierszy z danego rodzaju rzutowaniem. 
Przykładowy plik konfiguracyjny:
\begin{verbatim}
subsumed = 0.4
equivalent = 0.3
instance_of = 0.2
R = 0.1
\end{verbatim}

\section{wn\_pwn2sumo}
Aplikacja dokonuje rzutowania synsetow Słowosieci na SUMO. Wynikiem działania aplikacji
są informacje o tym, które synsety Słowosieci, połączone są z synsetami PWN oraz które 
synsety PWN połączone sa z pojęciami SUMO, wraz z informacjami o typie reacji pomiędzy 
Słowosiecią a PWN oraz PWN a SUMO oraz opcjonalnie relacją wynikową pomiędzy Słowosiecia 
a SUMO - jeżeli ustalono przelacznik odpowiadajacy za wykonanie rzutowania. 
Synsety, które mają zostac zrzutowane podawane są z dwóch źródeł:
\begin{itemize}
\item korpus oznaczony za pomoca WSD (np. za pomoca narzedzia NP-UKB-WSD z pakietu npsemrel)
\item połączenie do bazy Słowosieci i rzutowanie wszystkich synsetow znajdujacych sie w Słowosieci
\end{itemize}
Wybór źródła rzutowania wybiera uzytkownik przy uruchamianiu aplikacji.

\paragraph{Użycie:}
Przykłady uruchomienia:
\begin{itemize}
\item Pobranie na podstawie korpusu
\begin{verbatim}
PYTHONIOENCODING=utf8 python wn_pwn2sumo.py \
-i /home/pkedzia/work/corps/kpwr-1.0-ukbwsd-plwn/index_wsd.txt -d ../../cfg/spock.db
\end{verbatim}
\item Pobranie z bazy
\begin{verbatim}
PYTHONIOENCODING=utf8 python wn_pwn2sumo.py -d ../../cfg/spock.db
\end{verbatim}
\end{itemize}

Wynik uruchomienia, zarówno z bazy jak i korpusu wypisywany jest do pliku podanego na wejsciu 
programu i ma postac:
\begin{verbatim}
	mowa.2;6;18106;syn_pa;language.5;6;158791;capability;subsumed;+;subsumed
\end{verbatim}
lub, jezeli rzutowanie ma nie byc wykonane:
\begin{verbatim}
	mowa.2;6;18106;syn_pa;language.5;6;158791;capability;subsumed;+
\end{verbatim}

\section{wn\_pwn2sumo\_rel}
Dla zadanego pliku z przypisanymi pojęciami SUMO do synsetu określa relacje pomiędzy SUMO a synsetami plWN.

Każda linia w pliku wejściowym ma postać:
\begin{verbatim}
    nazwisko.1;por-7;6988;syn_pa;surname.1;por-7;161948;ContentBearingObject;subsumed;+
\end{verbatim}
\paragraph{Użycie:}
Przyklad uruchomienia:
\begin{verbatim}
    python wn_pwn2sumo_rel.py -i input.csv -o output_rel.csv
\end{verbatim}


%sekcja "sumo_corpus_lists_generator"
\section{sumo\_corpus\_lists\_generator}
Narzędzie służące do generowania dwóch list zawierających informacje o synsetach oraz przypisanych do nich pojęciach sumo w korpusie tekstu. Pierwsza lista zawiera znaczenia, które nie zostały zrzutowane, natomiast druga, te które zostały zrzutowane na sumo. Narzędzie generuje listy bazując na 
korpusie tekstu, który zawiera tagi WSD przypisane ręcznie oraz tagi pojęć sumo przypisane w oparciu o tagi ręczne.
\newline
\newline
\noindent
\textbf{Uwaga:} W przypadku, gdy ręcznnie przypisany synset powtarza się w korpusie tekstu, to informacja o nim w pliku wynikowym będzie zawarta tylko jeden raz.

%sekcja "Użycie"
\paragraph*{Użycie:}
\begin{verbatim}
./lists INPUT_FILE INPUT_DIR INPUT_SUMO_FILE 
        OUTPUT_LIST_WITHOUT_SUMO OUTPUT_LIST_WITH_SUMO
\end{verbatim}

%sekcja "Parametry"             
\paragraph*{Parametry:}
\begin{verbatim}
INPUT_FILE
INPUT_DIR
INPUT_SUMO_FILE
OUTPUT_LIST_WITHOUT_SUMO
OUTPUT_LIST_WITH_SUMO
\end{verbatim}

%tabela zawierająca opis parametrów narzędzia
\begin{longtable}{| p{.35\textwidth} | p{.65\textwidth} |} 
\hline

\textbf{Nazwa parametru} & \textbf{Opis parametru}
\\ \hline

{\tt INPUT\_FILE} & Ścieżka do pliku ze spisem wszystkich plików tekstu w korpusie.
\\ \hline

{\tt INPUT\_DIR} & Ścieżka do katalogu z korpusem tekstu.
\\ \hline

{\tt INPUT\_SUMO\_FILE} & Ścieżka do pliku z synsetami zmapowanymi na pojęcia sumo.
\\ \hline

\multirow{2}{*}{\tt OUTPUT\_LIST\_WITHOUT\_SUMO} & Ścieżka do pliku wynikowego, który będzie zawierał unikalne znaczenia, które nie zostały zrzutowane na sumo.
\\ \hline

\multirow{2}{*}{\tt OUTPUT\_LIST\_WITH\_SUMO} & Ścieżka do pliku wynikowego, który będzie zawierał unikalne znaczenia, które zostały zrzutowane na sumo.
\\ \hline
\caption{Opis parametrów narzędzia {\tt sumo\_corpus\_lists\_generator}}
\end{longtable}

%sekcja "Przykład uruchomienia"
\paragraph*{Przykład uruchomienia:}
\begin{verbatim}
./lists \
    ~/Korpusy/kpwr-1.1/index_wsd.txt \
    ~/Korpusy/kpwr-1.1/ \
    ~/Sources/plwn_pwn_sumo.csv \
    ~/Sources/list_without_sumo.csv \
    ~/Sources/list_with_sumo.csv
\end{verbatim}

%sekcja "Wejście"
\noindent
\textbf{Wejście:}
\newline
\newline
Wejściem narzędzia są korpus tekstu zawierający ręczne tagi WSD oraz tagi sumo przypisane do tokenów oraz plik zawierający synsety zmapowane na pojęcia sumo.
\newline
\newline
Format pliku wejściowego zawierającego synsety zmapowane na pojęcia sumo:
\newline
\newline
{\tt synset\_str\_plwn;dziedzina\_plwn;synset\_id\_plwn;rel\_miedzyjezykowa;synset\_str\_pwn;}
\newline
{\tt pwn\_synset\_pos;dziedzina\_pwn;synset\_id\_pwn;pojecie\_sumo;rel\_sumo\_pwn;rel\_sumo\_pwn\_skrot;}
\newline
{\tt plwn\_sumo\_rel;plwn\_sumo\_rel\_step1;plwn\_sumo\_rel\_step2;plwn\_sumo\_rel\_step3}
\newline
\newline
Przykład:
\newline
\newline
{\tt Europa Wschodnia.1;msc-12;35113;mero:cz\_pa;Europe.1;}
\newline
{\tt n;rz-14;334702;Europe;equivalent;=;}
\newline
{\tt instance\_of;instance\_of;instance\_of;instance\_of}

%sekcja "Wyjście"
\noindent
\newline
\textbf{Wyjście:}
\newline
\newline
Wyjściem narzędzia są dwa pliki tekstowe, zawierające informacje o synsetach oraz przypisanych do nich pojęciach sumo w korpusie tekstu.
\newline
\newline
Format listy zawierającej znaczenia, które nie zostały zrzutowane na sumo:
\begin{verbatim}
synset_str_plwn;dziedzina_plwn;synset_id_plwn
\end{verbatim}
Przykład:
\begin{verbatim}
Europa Wschodnia.1;msc-12;35113
\end{verbatim}
Format listy zawierającej znaczenia, które zostały zrzutowane na sumo:
\newline
\newline
{\tt synset\_str\_plwn;dziedzina\_plwn;synset\_id\_plwn;rel\_miedzyjezykowa;synset\_str\_pwn;}
\newline
{\tt pwn\_synset\_pos;dziedzina\_pwn;synset\_id\_pwn;pojecie\_sumo;rel\_sumo\_pwn;rel\_sumo\_pwn\_skrot;}
\newline
{\tt plwn\_sumo\_rel;plwn\_sumo\_rel\_step1;plwn\_sumo\_rel\_step2;plwn\_sumo\_rel\_step3}
\newline
\newline
Przykład:
\newline
\newline
{\tt Europa Wschodnia.1;msc-12;35113;mero:cz\_pa;Europe.1;}
\newline
{\tt n;rz-14;334702;Europe;equivalent;=;}
\newline
{\tt instance\_of;instance\_of;instance\_of;instance\_of}


%sekcja "static_sumo_kpwr_annotator"
\section{static\_sumo\_kpwr\_annotator}
Narzędzie służące do tagowania tokenów (zawierających tag WSD) w korpusie tekstu pojęciami sumo. Jeśli do tokenu przypisany jest tag np. <prop key="sense:wsd\_zmiana">zmiana-1</prop> oraz owy synset znajduje się w pliku podawanym na wejściu, zawierającym synsety zmapowane na pojęcia sumo, to zostanie on otagowany pojęciem sumo np. <prop key="plwn2sumo:map">subsumed:Process</prop>.

%sekcja "Użycie"
\paragraph*{Użycie:}
\begin{verbatim}
./swa INPUT_FILE INPUT_DIR INPUT_SUMO_FILE 
\end{verbatim}

%sekcja "Parametry"             
\paragraph*{Parametry:}
\begin{verbatim}
INPUT_FILE
INPUT_DIR
INPUT_SUMO_FILE
\end{verbatim}

%tabela zawierająca opis parametrów narzędzia
\begin{longtable}{| p{.35\textwidth} | p{.65\textwidth} |} 
\hline

\textbf{Nazwa parametru} & \textbf{Opis parametru}
\\ \hline

{\tt INPUT\_FILE} & Ścieżka do pliku ze spisem wszystkich plików tekstu w korpusie.
\\ \hline

{\tt INPUT\_DIR} & Ścieżka do katalogu z korpusem tekstu.
\\ \hline

{\tt INPUT\_SUMO\_FILE} & Ścieżka do pliku z synsetami zmapowanymi na pojęcia sumo.
\\ \hline
\caption{Opis parametrów narzędzia {\tt static\_sumo\_kpwr\_annotator}}
\end{longtable}

%sekcja "Przykład uruchomienia"
\paragraph*{Przykład uruchomienia:}
\begin{verbatim}
./swa \
    ~/Korpusy/kpwr-1.1/index_wsd.txt \
    ~/Korpusy/kpwr-1.1 \
    ~/Sources/plwn_pwn_sumo.csv
\end{verbatim}

%sekcja "Wejście"
\noindent
\textbf{Wejście:}
\newline
\newline
Wejściem narzędzia są korpus tekstu zawierający ręczne tagi WSD oraz tagi sumo przypisane do tokenów oraz plik zawierający synsety zmapowane na pojęcia sumo.
\newline
\newline
Format pliku wejściowego zawierającego synsety zmapowane na pojęcia sumo:
\newline
\newline
{\tt synset\_str\_plwn;dziedzina\_plwn;synset\_id\_plwn;rel\_miedzyjezykowa;synset\_str\_pwn;}
\newline
{\tt pwn\_synset\_pos;dziedzina\_pwn;synset\_id\_pwn;pojecie\_sumo;rel\_sumo\_pwn;rel\_sumo\_pwn\_skrot;}
\newline
{\tt plwn\_sumo\_rel;plwn\_sumo\_rel\_step1;plwn\_sumo\_rel\_step2;plwn\_sumo\_rel\_step3}
\newline
\newline
Przykład:
\newline
\newline
{\tt Europa Wschodnia.1;msc-12;35113;mero:cz\_pa;Europe.1;}
\newline
{\tt n;rz-14;334702;Europe;equivalent;=;}
\newline
{\tt instance\_of;instance\_of;instance\_of;instance\_of}