|
|
|
|
|
moses.threads ?= 4 |
|
moses.flags += -threads ${moses.threads} |
|
moses.flags += -v 0 -t -text-type "test" -fd '${FACTORSEP}' |
|
|
|
%.multi-bleu: | %.cleaned |
|
$(lock) |
|
${multi-bleu} ${bleu.ref} < $*.cleaned > $@_ && mv $@_ $@ |
|
$(unlock) |
|
|
|
%.moses-out.wa: moses.flags += -alignment-output-file $*.output.wa |
|
%.moses-out.wa: %.moses-out |
|
|
|
|
|
moses.ini ?= |
|
%.moses-out: | ${moses.ini} |
|
echo MOSES $^ |
|
$(lock) |
|
${moses} -i ${moses.input} -inputtype ${moses.inputtype} \ |
|
-f ${moses.ini} ${moses.flags} > $@_ && mv $@_ $@ |
|
$(unlock) |
|
|
|
%.cleaned: %.moses-out |
|
$(lock) |
|
$(clean-decoder-output) < $< > $@_ && mv $@_ $@ |
|
$(unlock) |
|
|
|
%.natcased: %.cleaned |
|
$(eval $(call lock)) |
|
$(detruecase) < $*.cleaned > $@_ && mv $@_ $@ |
|
$(eval $(call unlock)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
define bleu_eval |
|
|
|
EVALUATIONS += $1 |
|
$1: moses.ini := $2 |
|
$1: moses.input := $3 |
|
$1: moses.inputtype := $(call guess-inputtype,$3) |
|
$1: bleu.ref := $$(shell echo $(patsubst %.${L1},%.${L2},$3) | perl -pe 's?/cfn[^/]+/?/cased/?') |
|
$1.moses-out: | $2 $3 |
|
$1.multi-bleu: | $(call reffiles,$3,$(dir $(patsubst %/,%,$(dir $3)))) |
|
$1: | $1.multi-bleu |
|
|
|
endef |
|
|
|
EVALUATIONS := |
|
|
|
eval.sets ?= $(patsubst %.${L1}.gz,%,$(subst /raw/,/cased/,$(wildcard ${WDIR}/crp/tst/raw/*.${L1}.gz))) |
|
|
|
ifdef tune.runs |
|
define bleu_score_all_systems |
|
|
|
$(foreach system,${SYSTEMS},\ |
|
$(foreach tuneset,${tune.sets},\ |
|
$(foreach evalset,${eval.sets},\ |
|
$(foreach run,$(shell seq ${tune.runs}),\ |
|
$(eval $(call bleu_eval,\ |
|
${system}/eval/$(notdir ${tuneset})/${run}/$(notdir ${evalset}),\ |
|
${system}/tuned/$(notdir ${tuneset})/${run}/moses.ini,\ |
|
${evalset}.${L1},${moses.inputtype.plaintext},${evalset}.${L2})))))) |
|
|
|
endef |
|
endif |
|
|
|
|