Think that should do it.
On Tue, 27 Dec 2011 11:59:44 +0100, Marwen
Azouzi wrote:
my $SNT2COOC;
if ($_MGIZA) {
if (-x
"$BINDIR/snt2cooc") {
$SNT2COOC = "$BINDIR/snt2cooc";
}
} elsif (-x
"$BINDIR/snt2cooc.out") {$SNT2COOC = "$BINDIR/snt2cooc.out";}
How
about this (the strict way) ?
PS: Thanks for your replies.
Marwen.
On 12/27/2011 10:07 AM, Tom Hoar wrote:
Marwen,
My Perl
is almost non-existent, but with these changes, it looks like it would
default to the GIZA binaries and ignore a MGIZA installation if the user
installs both (the two mkcls binaries share the same syntax). What about
updating the conditionals to also test for the user's command line
--mgiza option ($_MGIZA)?
Tom
On Tue, 27 Dec 2011 09:16:21 +0100,
Marwen AZOUZI [1] wrote: Hi,
I'm totally like you and don't want to
require installing GIZA++ since MGIZA can create all needed binaries.
The bash wrapper is a good solution.
Here's another solution by
changing the perl script (train-model.perl).
Line 195 :
my $SNT2COOC
= "$BINDIR/snt2cooc.out";
change it to :
my $SNT2COOC;
if (-x
"$BINDIR/snt2cooc.out") {
$SNT2COOC = "$BINDIR/snt2cooc.out";
} elsif
(-x "$BINDIR/snt2cooc") {
$SNT2COOC = "$BINDIR/snt2cooc";
}
Line 219
-> 223 :
# do a sanity check to make sure we can find the necessary
binaries since
# these are not installed by default
# not needed if we
start after step 2
die("ERROR: Cannot find mkcls, GIZA++, & snt2cooc.out
in $BINDIR.nDid you install this script using 'make release'?") unless
((!$STEPS[2]) ||
(-x $GIZA && -x $SNT2COOC && -x $MKCLS));
change it
to :
# do a sanity check to make sure we can find the necessary
binaries since
# these are not installed by default
# not needed if we
start after step 2
die("ERROR: Cannot find mkcls, GIZA++/mgiza, &
snt2cooc.out/snt2cooc in $BINDIR.nDid you install this script using
'make release'?") unless ((!$STEPS[2]) ||
(-x $GIZA &&
defined($SNT2COOC) && -x $MKCLS));
And finally, 1039 -> 1045 :
sub
run_single_snt2cooc {
my($dir,$e,$f,$vcb_e,$vcb_f,$train) = @_;
print
STDERR "(2.1a) running snt2cooc $f-$e @ ".`date`."n";
safesystem("mkdir
-p $dir") or die("ERROR");
print "$SNT2COOC $vcb_e $vcb_f $train >
$dir/$f-$e.coocn";
safesystem("$SNT2COOC $vcb_e $vcb_f $train >
$dir/$f-$e.cooc") or die("ERROR");
}
change it to
sub
run_single_snt2cooc {
my($dir,$e,$f,$vcb_e,$vcb_f,$train) = @_;
print
STDERR "(2.1a) running snt2cooc $f-$e @ ".`date`."n";
safesystem("mkdir
-p $dir") or die("ERROR");
if ($SNT2COOC eq "$BINDIR/snt2cooc.out") {
print "$SNT2COOC $vcb_e $vcb_f $train > $dir/$f-$e.coocn";
safesystem("$SNT2COOC $vcb_e $vcb_f $train > $dir/$f-$e.cooc") or
die("ERROR");
} else {
print "$SNT2COOC $dir/$f-$e.cooc $vcb_e $vcb_f
$trainn";
safesystem("$SNT2COOC $dir/$f-$e.cooc $vcb_e $vcb_f $train")
or die("ERROR");
}
}
Tell me if i miss something.
Best Regards.
Marwen
Le 27/12/2011 06:38, Tom Hoar a écrit :
Marwen,
Be careful
with mgiza. If you only install mgiza without giza++, you won't be able
to run train-model.perl. Train-model.perl looks for the binary
snt2cooc.out, but mgiza creates a binary snt2cooc with a different
command line syntax.
Always installing giza++ is one solutions. If
you're like us and don't want to require giza++, you can use this bash
wrapper. Just name it snt2cooc.out and put it in your bin folder with
the mgiza snt2cooc file.
#! /bin/bash
${0%/*}/snt2cooc /dev/stdout $1
$2 $3
Of course, the best solution would be to update train-model.perl
logic to execute the right binary with the appropriate syntax.
Regrettably, we lack the Perl skills. So, maybe you or someone else can
make the edits?
Tom
On Tue, 27 Dec 2011 12:10:28 +0700, Hieu Hoang
wrote:
hi marwen
you're quite right, i've change the git code
https://github.com/moses-smt/mosesdecoder/commit/94b4ab16c7e0519f1483a3a5a67a3ec51a3d0043
[2]
On Tue, Dec 27, 2011 at 7:10 AM, Marwen Azouzi wrote:
Hello
Moses,
FILE train-model.perl LINE 187 :
$GIZA = "$BINDIR/mgizapp";
This line shouldn't be $GIZA = "$BINDIR/mgiza"; since the the MGIZA
binary file's default name is "mgiza" ? (I use the latest version of
Moses from Git)
Anyways, changing it will enable the multi-threading
training.
Cheers
Marwen.
_______________________________________________
Moses-support mailing
list
[email protected]
[4]
http://mailman.mit.edu/mailman/listinfo/moses-support
[5]
Links:
------
[1] mailto:[email protected]
[2]
https://github.com/moses-smt/mosesdecoder/commit/94b4ab16c7e0519f1483a3a5a67a3ec51a3d0043
[3]
mailto:[email protected]
[4] mailto:[email protected]
[5]
http://mailman.mit.edu/mailman/listinfo/moses-support
_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support