Ok, I see now. train-model.perl uses:

    use FindBin qw($Bin);
    my $SCRIPTS_ROOTDIR = $Bin;

 We use symlinks to flatten the scripts in $SCRIPTS_ROOTDIR into the 
 $prefix/bin folder. By default $prefix resolves to /usr/local. 
 Therefore, $prefix/bin is in $PATH. Our approach confuses the relative 
 path references in the script that rely on $Bin (without a separate 
 $SCRIPTS_ROOTDIR). In this case, the $PHRASE_EXTRACT concatenation on 
 line 1439 (step 5) caused my system to break because it resolved to 
 $PHRASE_EXTRACT = "$Bin/generic/extract-parallel.perl, which wasn't 
 there.

 In last night's troubleshooting, I re-referenced $SCRIPTS_ROOTDIR, and 
 placed symlinks to all $SCRIPTS_ROOTDIR in $prefix/bin. It was the 
 latter, not the former, that enabled the script run. My bad in my email. 
 There are similar challenges with other scripts, such as tokenizer.perl 
 and detokenizer.perl which reference subfolders relative to their 
 location.

 Also, thanks for sharing the goal. Effectively, you'll have $prefixA 
 and $prefixB. Our goals are a little different. We're trying to install 
 moses & all components into a hierarchy complaint to the Linux 
 Foundation's Filesystem Hierarchy Standard (FHA), in such a way it's 
 usable across most other Posix systems. Here's what we've come up with:

 $IRSTLM, $RANDLM & $SRILM all point to $prefix. This way, their 
 resources, as well as the moses and MGIZA++ "make install" paths, share 
 the same $prefix/bin, $prefix/lib, $prefix/include (etc) subfolders. We 
 had to play some tricks with $SRILM to support $prefix/sbin and the 
 $MACHINE_TYPE references, but that support has been there a long time 
 and works well. Amazingly, we've been lucky that there are no filename 
 conflicts except for mkcls in GIZA++ and MGIZA++.

 We place all component's original scripts under 
 $prefix/lib/<component>, as laid out by the component's authors. For 
 example, we move MGIZA++ $prefix/scripts to $prefix/lib/mgizapp and 
 configure moses' $SCRIPTS_ROOTDIR becomes $prefix/lib/mosesdecoder, etc. 
 We use of symlinks in $prefix/bin to reference various scripts in $PATH 
 (as above).

 According to http://perldoc.perl.org/FindBin.html, it looks like 
 changing to the script's "real" location vice command line reference is 
 possible with:

    use FindBin qw($RealBin);

 This change will eliminate our need to symlink subfolders in 
 $prefix/bin, and still allow other Moses users to move $prefixA tree 
 anywhere they like. However, it might require a bit more editing in each 
 script to verify/resolve any relative references.

 For now, I'll continue using folder symlinks. I'll give you access to a 
 preview copy of our new binary install program via FTP with some 
 instructions how to make $prefix a private user folder instead of a 
 system level. Our approaches might give you some ideas about how moses 
 can support "linguistic programs over time". For example, in addition to 
 the "standard" Moses components (giza-pp, mgizapp, irstlm, randlm, 
 srilm), we currently install DoMY CE (corpus preparation and translation 
 workflow), BerkeleyAligner (phrase alignment), Champollion Toolkit 
 (sentence aligner), Stanford Aligner (Chinese/Arabic word seg), MeCab 
 (Japanese word seg), SWATH (open source Thai word seg), and Langmatch 
 (language ID) add-ons with this approach. We've also mapped out support 
 for m4loc, Okapi Framework, and the moses team's sentence aligner.

 Regards,
 Tom


 On Thu, 21 Jun 2012 23:49:35 +0100, Hieu Hoang 
 <fishandfrol...@gmail.com> wrote:
> On 21/06/2012 16:46, Tom Hoar wrote:
>> Hieu,
>>
>> We're implementing these changes into DoMY. Some of these broke our
>> layout, but that's okay. We're adapt to your changes.
> thanks, much appreciated.
>> Updating -external-bin-dir was easy. Then, we scrapped our 
>> references
>> to $SCRIPTS_ROOTDIR based on your comments in train-model.perl. 
>> This,
>> however, caused step 5 to break. On closer inspection, a reference 
>> to
>> $SCRIPTS_ROOTDIR is still necessary at this point.
> that's odd. The variable $SCRIPTS_ROOTDIR is still there but it's set 
> in
> line 16-20. I didn't change these lines, I just removed the ability 
> to
> override it with some other value from the command line.
>
> are you sure step 5 breaks?
>>
>> How do you see the layout evolving without the $SCRIPTS_ROOTDIR 
>> value?
>> Since all of the scripts are in subfolders from $SCRIPTS_ROOTDIR, do
>> you think it's possible or feasible to set  $SCRIPTS_ROOTDIR ==
>> $_EXTERNAL_BINDIR? That's possible today by manually configuring 
>> bjam
>> for a build. However, if you have another layout in mind, would this
>> cause conflicts?
> I'm aiming for everyone to set up moses like so
>     [directory A]/scripts
>     [directory A]/bin
>     [directory B]   = external bin directory
> the external bin directory has giza/mgiza (and hopefully linguistic
> programs over time).
>
> when you update moses, just replace scripts/ and bin/ . The external 
> bin
> directory can stay constant
>
>>
>> Tom
>>
>>
>> On Thu, 31 May 2012 20:42:56 +0100, Hieu Hoang
>> <fishandfrol...@gmail.com> wrote:
>>> Hi all
>>>
>>> if you're checking out the latest github code, there are some 
>>> changes
>>> you should be aware of:
>>>     1. There is a new argument to train-model.perl
>>>             -external-bin-dir [path]
>>>          This points to the directory where Giza++/mgiza lives. 
>>> Setting
>>> this is MANDATORY if you're using train-model.perl to do the word
>>> alignment. It used to be hardcoded in the perl code itself.
>>>     2. All the training programs have been moved into the directory
>>>            [MOSES-ROOT]/bin
>>>         They should be run from there, not from wherever the source
>>> code is.
>>>     3. To roll out, simply copy the 2 directories
>>>            [MOSES-ROOT]/bin
>>>            [MOSES-ROOT]/scripts
>>>         to wherever you want, eg.
>>>            /home/hieu/moses/bin
>>>            /home/hieu/moses/scripts
>>>     4. If you don't want to move it anywhere, you can run it from 
>>> where
>>> you downloaded.
>>>     5. The EMS and example files have been updated.
>>>
>>> Hope this is ok for everyone. It may break some people's setup. If
>>> possible, please change your setup. It's gonna help us all in the 
>>> long
>>> run. If not, flame me & i'll see what I can do
>>>
>>> HH
>>>
>>>
>>> _______________________________________________
>>> Moses-support mailing list
>>> Moses-support@mit.edu
>>> http://mailman.mit.edu/mailman/listinfo/moses-support
>>
>>
> _______________________________________________
> Moses-support mailing list
> Moses-support@mit.edu
> http://mailman.mit.edu/mailman/listinfo/moses-support

_______________________________________________
Moses-support mailing list
Moses-support@mit.edu
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to