Jak na trtok
Zdroj: /ha/home/marsik/jak_na_trtok
Jak pouzivat trtok
——————
Kompilace)
Je zapotrebi mit v pathu CMake. Jednou moznosti je stahnout si CMake z
oficialnich stranek (http://www.cmake.org/files/v2.8/cmake-2.8.5.tar.gz),
zkompilovat jej a nekam si ho nainstalovat. Druhym resenim je si pridat do
promenne PATH slozku ~marsik/cmake-prefix/bin, pripadne nejakou jeji kopii
(cmake-prefix obsahuje pouze instalaci CMaku).
Dalsi prerekvizitou je knihovna Threading Building Blocks. Distribuovana je
jak v binarni tak zdrojove podobe. My si vystacime klidne i s binarkami
(http://threadingbuildingblocks.org/uploads/78/172/3.0%20update%208/tbb30_221oss_lin.tgz).
V pripade binarni instalace nas pak zajima skript
bin/intel64/cc4.1.0_libc2.4_kernel2.6.16.21/tbbvars.sh, ve kterem bude potreba
upravit cestu k adresari s instalaci a cely skript to pak chce osourcovat v
.bash_profile (nastavi tak promenne prostredi, aby CMake a dalsi pomocnici pri
kompilaci knihovnu nasli).
Zbyle dve prerekvizity, Quex a Boost, uz resi Makefile v repozitari czengu. U
Boostu je jen zapotrebi stahnout
http://sourceforge.net/projects/boost/files/boost/1.47.0/ do
$CZENG10_ROOT/mining/tools. U Quexu je pak dulezite mit nastavenou promennou
prostredi QUEX_PATH na hodnotu $CZENG_ROOT/mining/tools/quex.
Pri samotnem spousteni programu je pak navic zapotrebi mit nastavenou
promennou prostredi TRTOK_PATH na $CZENG10_ROOT/mining/tools/trtok.
V .bash_profile pak budes mit treba neco takovehleho:
export PATH=~marsik/cmake-prefix/bin:$PATH
source ~marsik/tbb30_20110704oss/bin/intel64/cc4.1.0_libc2.4_kernel2.6.16.21/tbbvars.sh
export QUEX_PATH=$CZENG10_ROOT/mining/tools/quex
export TRTOK_PATH=$CZENG10_ROOT/mining/tools/trtok
kde CZENG10_ROOT je slozka, kde mas check-outnuty czeng10.
Zdrojaky k trtoku jsou pak v $CZENG10_ROOT/mining/tools/trtok-src. V
$CZENG10_ROOT/mining/tools je i Makefile s cilem trtok.compiled, ktery ti
trtok zkompiluje a nainstaluje do $CZENG10_ROOT/mining/tools/trtok.
Trenovani)
Pred tim, nez budes moct trtok pouzivat na segmentaci dat, je zapotrebi ho
natrenovat. Trenovaci data a parametry jsou jiz v instalaci pribaleny, takze
staci spustit jen 'trtok train cs' a 'trtok train en'. Prvni parametr urcuje
rezim behu (z tech nas budou zatim zajimat jen 'train' a 'tokenize'), druhy
vybira tzv. tokenizacni schema (popis toho, jak ma trtok tokenizovat a
segmentovat). Schemata jsou definovana v
$CZENG10_ROOT/mining/tools/trtok/schemes, vic se o nich muzes dozvedet v
$CZENG10_ROOT/mining/tools/trtok-src/README. Az trenovani sebehne pro oba
jazyky, tak uz je trtok plne pripraven.
Tokenizace)
Pri tokenizaci se vola trtok s rezimem 'tokenize'. V zavislosti na tom, jake
chces tokenizovat jazyky, vyberes schema 'cs' anebo 'en'. Z optionu jsou
dulezite -p, ktery zpusobi, ze trtok zachova rozdeleni na odstavce, a -d,
ktery zakaze trtoku vstup nejak dale tokenizovat a necha ho provest jen
segmentaci (coz prave chceme).
Dalsi zajimave optiony jsou -e, -E, -x a -X. Pomoci prvnich dvou optionu muzes
nechat trtok expandovat entity, pokud jeste nejake v textu jsou. Option -e ty
entity expanduje jen po dobu tokenizace a na vystupu je zase vrati tak, jak
byly. Option -E entity expanduje permanentne. Dalsimi optiony muzes z textu
vysekavat XML znacky. Option -x je schova jen po dobu tokenizace a do vystupu
je zas vrati, option -X je odstrani permanentne.
Pokud zavolas trtok jen tak, tak tokenizuje stdin a posila to do stdout. Kdyz
mu das jako argumenty nejaky soubory, tak tokenizuje je. Standardne
predpoklada u kazdyho koncovku .txt a vysledek pak ulozi do souboru s
koncovkou .tok. Tohle chovani se da zmenit optionem -r, ktery ceka jako
argument regularni vyraz a replacement string, oddelene jako v sedu nejakym
uvozujicim znakem (typicky '/', ale muze to byt cokoliv; jelikoz je mozne si
zvolit vlastni uvozovky, tak jsem ani neimplementovat escapovani backslashem).
Trtok se pokusi namatchovat ten regularni vyraz na kazdem vstupnim souboru a
nahradit to namatchovane tim replacement stringem (to je proste retezec, ve
kterem jsou odkazy na capture groupy (zavorky) z regularniho vyrazu (\1,
\2,…)). Priklad:
# tady pouzivam '|' jako uvozovky misto '/', jelikoz lomeno potrebuju do
# regularniho vyrazy
trtok tokenize cs/generic -mdEX -r '|original/(.*)\.txt|tokenized/\1.tok|' \
original/*-cs.txt
Soubory lze, jak je videt vyse, davat primo na command linu. Alternativou je
cesty k souborum ulozit do souboru (kazdy na sve radce). Na tyhle filelisty se
pak muzes odvolat optionem -l. Kdyz si vyberes filelist -, tak cte trtok
cesty k souborum ze stdin. Priklad:
find original -name '*-cs.txt' \
| $TRTOK_PATH/trtok tokenize en -pdEX \
-r '|original/(.*)\.txt|tokenized/\1.tok|' -l -
Asi by bylo prakticke spoustet tokenizaci nejak hromadne pro vice souboru
najednou, jako je tomu vyse. Doba inicializace trtoku totiz odpovida dobe,
behem ktere stihne tokenizovat ~35KB dat.
Kdyby neco nefungovalo, tak napis (jiri.marsik89@gmail.com).