|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use warnings; |
|
use strict; |
|
|
|
use Getopt::Long "GetOptions"; |
|
use FindBin qw($RealBin); |
|
|
|
$ENV{"LC_ALL"} = "C"; |
|
my $SCRIPTS_ROOTDIR = $RealBin; |
|
if ($SCRIPTS_ROOTDIR eq '') { |
|
$SCRIPTS_ROOTDIR = dirname(__FILE__); |
|
} |
|
$SCRIPTS_ROOTDIR =~ s/\/training$//; |
|
|
|
my ($binarizer, $input_config, $output_config); |
|
my $opt_hierarchical = 0; |
|
$binarizer = "$SCRIPTS_ROOTDIR/../bin/processPhraseTable"; |
|
my $min_score = undef; |
|
GetOptions( |
|
"Hierarchical" => \$opt_hierarchical, |
|
"Binarizer=s" => \$binarizer, |
|
"MinScore=s" => \$min_score, |
|
) or exit(1); |
|
|
|
$input_config = shift; |
|
$output_config = shift; |
|
|
|
if (!defined $input_config || !defined $output_config) { |
|
print STDERR "usage: binarize-model.perl input-config output-config [-Binarizer binarizer] [-MinScore score-def]\n"; |
|
exit 1; |
|
} |
|
|
|
my $hierarchical = ""; |
|
$hierarchical = "-Hierarchical" if $opt_hierarchical; |
|
my $targetdir = "$output_config.tables"; |
|
|
|
my $cmd = "$RealBin/filter-model-given-input.pl $targetdir $input_config /dev/null $hierarchical -nofilter -Binarizer \"$binarizer\" "; |
|
$cmd .= "-MinScore $min_score" if defined($min_score); |
|
safesystem($cmd) || die "binarising failed"; |
|
safesystem("rm -f $output_config; ln -s $targetdir/moses.ini $output_config") || die "failed to link new ini file"; |
|
|
|
|
|
sub safesystem { |
|
print STDERR "Executing: @_\n"; |
|
system(@_); |
|
if ($? == -1) { |
|
print STDERR "Failed to execute: @_\n $!\n"; |
|
exit(1); |
|
} |
|
elsif ($? & 127) { |
|
printf STDERR "Execution of: @_\n died with signal %d, %s coredump\n", |
|
($? & 127), ($? & 128) ? 'with' : 'without'; |
|
exit(1); |
|
} |
|
else { |
|
my $exitcode = $? >> 8; |
|
print STDERR "Exit code: $exitcode\n" if $exitcode; |
|
return ! $exitcode; |
|
} |
|
} |
|
|
|
|
|
|