2014-02-27 28 views
1

所以我想弄清楚这个perl脚本是干什么的。对齐语料库的Perl脚本

use FindBin qw($Bin); 
use strict; 
use Encode; 

binmode(STDIN, ":utf8"); 
binmode(STDOUT, ":utf8"); 
binmode(STDERR, ":utf8"); 

chdir($Bin); 
my $dir = "txt"; 
my $outdir = "aligned"; 
my $preprocessor = "$Bin/tools/split-sentences.perl -q"; 

my ($l1,$l2) = @ARGV; 
die unless -e "$dir/$l1"; 
die unless -e "$dir/$l2"; 

`mkdir -p $outdir/$l1-$l2/$l1`; 
`mkdir -p $outdir/$l1-$l2/$l2`; 

my ($dayfile,$s1); # globals for reporting reasons 
open(LS,"ls $dir/$l1|"); 
while($dayfile = <LS>) { 
    chop($dayfile); 
    if (! -e "$dir/$l2/$dayfile") { 
    print "$dayfile only for $l1, not $l2, skipping\n"; 
    next; 
    } 
    &align(); 
} 

从看着这个我需要运行

perl sentence-align-corpus.perl europarlEnglishCorpus.txt europarlSpanishCorpus.txt 

在那两个文件是一个txt文件夹中。

运行上面给我

txt/europarlEnglishCorpus.txt only for europarlEnglishCorpus.txt, not europarlSpanishCorpus.txt, skipping 

而且不对齐的句子,它只是创建目录。它看起来像是被触发,但我不知道它是什么。

这个脚本是做什么的?

+0

我觉得这需要程序作者的输入。我会仔细看看你下载的网站,如果需要发送电子邮件。 – justintime

+0

:(http://www.statmt.org/europarl/似乎没有太大的帮助 – praks5432

+0

你试图解决什么样的问题,这个程序可能会也可能不会这样做,因为它的目的不明确 – justintime

回答

2

命令行参数是目录。该计划预计txt/p1txt/p2(其中p1p2是传递的参数)来查找文件。

它会检查所有文件txt/p1,要么打印,你看看有没有,如果没有同名的文件中txt/p2,或调用子程序align错误消息。

你大概会得到你看到的结果,因为有一个文件txt/europarlEnglishCorpus.txt,但没有一个在txt/europarlSpanishCorpus.txt/europarlEnglishCorpus.txt

产生了困惑,因为该程序通过炮击了以ls,这将需要无论是文件名或目录名作为参数列出的目录。

除此之外,我不能帮你。

+1

我认为造成混乱的主要原因是脚本只检查参数是否存在' -e'而不是检查它们实际上是带有'-d'的目录,但是我认为你是对的,脚本想要对齐两个“dayfiles”,不管它是什么,它们是不同的,作为参数传递,目录但是同样的名字 – DeVadder

+0

@DeVadder:是的,'-d'测试会有所帮助,但是当'opendir' /'readdir'完成所有必需的工作时,没有理由将'ls'解析出来,并且它将两个*集*通过查找相同n的文件来配对的“dayfiles” ame在两个指定的目录中。再一次,'-f'测试在这里会更好。 – Borodin

+0

我们正在努力研究脚本的功能。直到我们这样做,试图重构以改善风格是过早的恕我直言 – justintime

1

看起来你给这个脚本的第二个参数(即europarlSpanishCorpus.txt)是错误的,它期望它是名为txt的目录下的一个目录。

2

程序是假设在同一个目录下输入作为特等文件

txt/ 
    lang-a/ 
    day-1 
    day-2 
    lang-b/ 
    day-1 
    day-2 
    lang-c/ 
    day-1 
    day-2 

,你再运行它

./sentence-align-corpus.perl郎阿郎-b

我假设在http://www.statmt.org/europarl/下下载提到的文件可能会感兴趣。

有这个网站上的指针。这些可能会有帮助,也可能没有帮助,但我希望您在向SO寻求帮助之前阅读过这些内容。

对于这个语料库的详细说明,请参阅:

  • Europarl:并行语料库统计机器翻译,菲利普·科恩,MT峰会2005,PDF格式。

  • 请引用的文件,如果你在工作中使用这个语料库。另请参阅 报告的扩展(但较早版本)(ps,pdf)。

我坚持我原来的建议,请发送电子邮件在网站上提供的地址,并要求更好地说明什么呢(如果有的话),你需要下载,如何运行它,它的目的是什么实现。