diff options
-rw-r--r-- | README.md | 15 | ||||
-rwxr-xr-x | scripts/geoquery/cv.sh | 50 |
2 files changed, 58 insertions, 7 deletions
@@ -2,30 +2,30 @@ rebol ===== Code for grounded SMT on geoquery data. -(This has nothing to do with the programming language REBOL! http://www.rebol.com/ ) +(This has nothing to do with the programming language REBOL! [0]) Dependencies ------------ -*WASP*-1.0 includes the geoquery knowledge base and scripts for querying it. +_WASP_-1.0 includes the geoquery knowledge base and scripts for querying it. The evaluation scripts were slightly modified to include the full output. These scripts are in data/geoquery/wasp/, they go into wasp-1.0/data/geo-funql/eval/. WASP-1.0 can be downloaded from here [1]. -You'll also need some *Prolog* environment, e.g. SWI-Prolog [2]. +You'll also need some _Prolog_ environment, e.g. SWI-Prolog [2]. -We use the a slightly modified implementation of *smt-semparse*, +We use the a slightly modified implementation of _smt-semparse_, as described in 'Semantic parsing as machine translation' (Andreas et al, ACL 2013). Our fork can be found here [3]. This depends on more stuff, e.g. the Moses decoder and SRILM. -For translation we use the *cdec* toolkit, [4]. +For translation we use the _cdec_ toolkit, [4]. As semantic parsing is quite slow and rebol does it quite often, -results are cached with *memcached* [5]. +results are cached with _memcached_ [5]. -You'll also need the following *ruby gems*: +You'll also need the following _ruby gems_: * https://rubygems.org/gems/memcached * http://rubygems.org/gems/nlp_ruby * http://trollop.rubyforge.org/ @@ -33,6 +33,7 @@ You'll also need the following *ruby gems*: --- +[0] http://www.rebol.com/ [1] http://www.cs.utexas.edu/~ml/wasp/wasp-1.0.tar.bz2 [2] http://www.swi-prolog.org/ [3] https://github.com/pks/smt-semparse diff --git a/scripts/geoquery/cv.sh b/scripts/geoquery/cv.sh new file mode 100755 index 0000000..bd41474 --- /dev/null +++ b/scripts/geoquery/cv.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +function wait_for() +{ + echo "Waiting for ${#WAITFOR[@]} procs..." + echo ${WAITFOR[*]} + for pid in ${WAITFOR[@]}; do + wait $pid; + done +} + +killall memcached +memcached & + +K=100 +J=10 +STOPWORDS=/path/to/stopwords.en + +for VARIANT in rebol rampion exec; do +for E in 0.3 0.1 0.01 0.03 0.003 0.001 0.0003 0.0001; do +for INI in /paths/to/cdec/inis; do +for INIT_WEIGHTS in /paths/to/weight/files; do +WAITFOR=() +for FOLD in {0..9}; do + +NAME="v=$VARIANT.fold=$FOLD.e=$E.c=$(basename $INI).w=$(basename $INIT_WEIGHTS)" + +../rampfion.rb \ + -k $K \ + -i /path/to/folds600/$FOLD/train.in \ + -r /path/tod/folds600/$FOLD/train.en \ + -g /path/to/folds600/$FOLD/train.gold \ + -h /path/to/folds600/$FOLD/train.funql \ + -w $INIT_WEIGHTS \ + -t $STOPWORDS \ + -c $INI \ + -b $(pwd)/cfg.rb \ + -e $E \ + -j $J \ + -v $VARIANT \ + -o $NAME.weights &> $NAME.output & +WAITFOR+=( $! ) + +done +wait_for $WAITFOR +done +done +done +done + |