[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Table of Contents

Parsery

Závislostní parsery

Danovo parsing repository

Verzovaná složka, která zatím obsahuje stanfordský parser, Charniakův parser, Johnsonův reranker a řadu drobných nástrojů pro manipulaci s treebanky. Pokud chcete s uvedenými parsery či nástroji pracovat, musíte si nejprve z repozitáře vytáhnout svou vlastní pracovní kopii nástrojů (návod následuje). V případě potřeby můžete opravovat chyby nebo přidávat vlastní nástroje a změny odesílat zpátky do repozitáře. V takovém případě se ale nejdřív důkladně seznamte se správou verzí, abyste se uměli vyhnout konfliktům; nezapomeňte také ke každému svn commit popsat, v čem změna spočívá!

Nikdy se nehrabte přímo (tj. bez prostřednictví příkazů svn) v úložišti repozitáře!

Jak získat svou vlastní pracovní kopii

Do proměnné PARSINGROOT níže nastavte cestu ke složce, ve které chcete svou pracovní kopii mít, nejlépe asi do /net/work/people/$USER nebo někam na místní disk. (Složka parsing zatím neexistuje, ale nadřazené složky pochopitelně existovat musí.) Ve všech návodech souvisejících s parsingem budeme na vaši pracovní kopii odkazovat jako na $PARSINGROOT.

setenv PARSINGROOT /net/work/people/$USER/parsing
svn checkout -q file:///net/work/public/SVN/parsing/trunk $PARSINGROOT
cd $PARSINGROOT
make

Než zavoláte make, budete možná chtít otevřít $PARSINGROOT/brown-reranking-parser/Makefile a zkontrolovat nastavení proměnné GCCFLAGS. Některé části Brown reranking parseru jsou výpočetně velmi náročné a stojí za to je přeložit s optimalizacemi pro procesor, na kterém je budete pouštět. (Pokud chcete trénovat Johnsonův reranker na Penn Treebanku nebo srovnatelných datech, měli byste podle údajů z README mít také aspoň 8 GB paměti, což rovnou diskvalifikuje většinu neclusterovaných počítačů.) Buďte opatrní, protože maximální optimalizace získáte jen za cenu toho, že parser nepoběží na slabších nebo jiných architekturách. Máte tyto možnosti:

Dáváte-li přednost kompatibilitě s ostatními architekturami za cenu slabší optimalizace, použijte -mcpu místo -march, popř. nechte GCCFLAGS úplně prázdné.

Knihovny Boost C++, PETSc a TAO

Céčkové / Cplusplusové knihovny Boost C++, PETSc a TAO jsou potřeba pro trénování rerankeru Marka Johnsona (reranker zřejmě přímo využívá jen TAO, ale PETSc potřebujeme taky, protože TAO je nadstavba PETSc). Tyto knihovny nejsou součástí parsing repository. Zde shrnujeme poznámky o jejich instalaci.

Boost C++ údajně “bývá součástí moderních distribucí Linuxu.”

PETSc je knihovna pro vědecké výpočty založené na parciálních diferenciálních rovnicích. Domovská stránka projektu je http://www-unix.mcs.anl.gov/petsc/petsc-2/. My máme verzi 2.3.2, vybalenou v /net/work/public/lib/petsc-2.3.2-p7. Před instalací, jakož i později při používání knihovny, je potřeba mít cestu ke knihovně uloženou v systémové proměnné PETSC_DIR. Pak je třeba uvnitř složky s knihovnou zavolat config/configure.py. Pozor! Návod na instalaci na stránkách PETSc uvádí trochu jiné parametry pro configure, než jaké doporučují stránky TAO! Pokud nenakonfigurujete PETSc tak, jak požaduje TAO, nepodaří se vám později nainstalovat TAO. My jsme použili tyto parametry:

setenv PETSC_DIR /net/work/public/lib/petsc-2.3.2-p7
cd $PETSC_DIR
./config/configure.py --with-clanguage=C++ --with-cc=gcc --with-fc=gfortran \
    --download-f-blas-lapack=1 --with-mpi=0 --with-x=0 --with-shared=0

Stránky PETSc a TAO v příkladech uvádějí –with-fc=g77; tento překladač Fortranu u nás nemáme, místo něj máme gfortran. Konfigurační procedura sama stáhne a nainstaluje další knihovny (napsané ve Fortranu), které nejsou běžným příslušenstvím Linuxu, ale PETSc je potřebuje: BLAS (Basic Linear Algebra Subprograms) a LAPACK (Linear Algebra Package).

Na konci úspěšné konfigurace se dozvíme, jak máme mít nastavenou (při volání make, ale i při pozdějším linkování knihoven ke svým programům) proměnnou PETSC_ARCH. Hodnota použitá v následujícím příkladu platila na počítači zen; nejsem si jist, zda na 64bitových procesorech na clusteru nebude jiná. (Po přeložení knihovny proměnná PETSC_ARCH pravděpodobně slouží jen jako odkaz na správnou podsložku knihovny. Otázkou ale zůstává, zda pro 64bitové Opterony nebude nutné knihovnu přeložit znova do jiné podsložky.)

setenv PETSC_ARCH linux-gnu-cxx-debug
make all test

Kromě PETSC_ARCH si na konci hlášení o konfiguraci všimněte ještě několikařádkové informace o BLAS/LAPACK. Jsou to údaje, které by měl dostat linker vašeho (resp. Johnsonova) programu, který bude používat TAO, potažmo PETSc, LAPACK a BLAS. Dost možná budete potřebovat podle této řádky upravit makefile klíčové části rerankeru Marka Johnsona (brown-reranking-parser/second-stage/programs/wlle/Makefile). Původní Markův Makefile obsahoval prostě odkazy -llapack -lblas, které fungovaly, protože BLAS a LAPACK byly na jeho systému nainstalovány ve standardních cestách nezávisle na PETSc. Podobně jsme to měli v Marylandu, proto jsem na potíže narazil až tady na ÚFALu: BLAS a LAPACK ve standardní výbavě nemáme, musíme tedy nalinkovat ten, který se nám stáhne jako “external package” do podstromu knihovny PETSc. Všimněte si také -lgfortran na konci, to tam Mark taky neměl, ale bez toho se -lflapack u nás nechytá.

BLAS_LAPACK_LIBS = -Wl,-rpath,${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} \
    -L${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} -lflapack \
    -Wl,-rpath,${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} \
    -L${PETSC_DIR}/externalpackages/fblaslapack/${PETSC_ARCH} -lfblas \
    -lgfortran
TAO_PETSC_LIBS = -Wl,-rpath,${TAO_DIR}/lib/${PETSC_ARCH} \
    -L${TAO_DIR}/lib/${PETSC_ARCH} -ltaopetsc -ltao \
    -Wl,-rpath,${PETSC_DIR}/lib/${PETSC_ARCH} \
    -L${PETSC_DIR}/lib/${PETSC_ARCH} \
    -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc \
    -lmpiuni ${BLAS_LAPACK_LIBS} -lm -lstdc++ -lgcc_s

TAO je zkratka za Toolkit for Advanced Optimization. Domovská stránka projektu je http://www-unix.mcs.anl.gov/tao/. My máme verzi 1.8.2, vybalenou v /net/work/public/lib/tao-1.8.2. Před instalací, jakož i později při používání knihovny, je potřeba mít cestu ke knihovně uloženou v systémové proměnné TAO_DIR.

setenv TAO_DIR /net/work/public/lib/tao-1.8.2
cd $TAO_DIR
make all

Brown Reranking Parser

Brown Reranking Parser je můj název pro kombinaci parseru Eugena Charniaka a rerankeru Marka Johnsona (oba pánové působí na Brown University). Následuje popis obslužných skriptů z marylandské wiki.

The currently best English parser is the combination of the N-best parser by Eugene Charniak, and Mark Johnson's reranker. After realizing that changes to Brown source code might be desirable, sources of this software were added to our SVN parsing repository.

There are two subfolders of $PARSINGROOT related to Brown software: charniak-parser is for those who want to run the parser without the reranker, brown-reranking-parser is for those who want both. In fact, charniak-parser contains only calling scripts, while the code of both the parser and the reranker is in brown-reranking-parser. Charniak parser code is in brown-reranking-parser/first-stage. Johnson's reranker is in brown-reranking-parser/second-stage.

Remember that you need to go to $PARSINGROOT after checking out your working copy, and call make. Note that the Makefile is currently set up to optimize the code for the C cluster machines. I am not sure whether you can compile it elsewhere but you definitely won't be able to run it elsewhere. Further note that external libraries PETSc and TAO are needed. These are not standard Linux equipment but are not part of our SVN repository either; paths to our installations are in the Makefile.

Our SVN version of the Brown parser has some advantages over the standard distribution:

Both folders, charniak-parser and brown-reranking-parser, have a scripts subfolder with the basic set of parse.pl, cluster-parse.pl, and train.pl. These scripts are invoked in much the same fashion as for the Stanford parser (see above).

The parse.pl and cluster-parse.pl scripts of the Charniak parser accept the -Nbest option, in addition to standard options of these scripts. -Nbest 50 translates as -N50 on Charniak's parseIt commandline. It asks the parser to output N (here 50) best parses, instead of just one. The output format for N>1 differs from the default: the set of parses is preceded by a line with the number of parses and the ID (number) of the sentence, and every parse is preceded by a line with the weight (log probability) of the parse. This option only applies to charniak-parser. It is ignored by brown-reranking-parser.

Training

To train only the Charniak parser, call

$PARSINGROOT/charniak-parser/scripts/train.pl < trainingdata.penn > modeldata.tgz

You will find the Charniak DATA folder tgzipped on standard output. You can pass the tgzipped file directly to the parse.pl and cluster-parse.pl scripts as the grammar.

To train the parser and the reranker, call

$PARSINGROOT/brown-reranking-parser/scripts/train.pl < trainingdata.penn > modeldata.tgz

Again, you will get tgzipped DATA folder, but this time it will contain two reranker files in addition, features.gz and weights.gz. The Brown parsing scripts require this tgzipped file as the grammar.

Options:

If you have two tgzipped models and want to use the first-stage parser from the first model, plus the reranker from the second model, call

$PARSINGROOT/brown-reranking-parser/scripts/combine_brown_models.pl first.tgz second.tgz > combined.tgz

[ Back to the navigation ] [ Back to the content ]