所以我试图找出这个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 :(得分:2)
命令行参数是目录。该计划希望在txt/p1
和txt/p2
中找到文件(其中p1
和p2
是传递的参数)。
它检查txt/p1
中的所有文件,如果txt/p2
中没有相同名称的文件,则会打印出错误消息,或者调用align
子例程。
您可能会得到您看到的结果,因为txt/europarlEnglishCorpus.txt
有txt/europarlSpanishCorpus.txt/europarlEnglishCorpus.txt
但ls
没有。
出现混淆是因为程序通过shell {{1}}来列出目录,它将文件名或目录名作为参数。
除此之外我无法帮助你。
答案 1 :(得分:2)
程序在与.pl文件相同的目录中假设以下输入
txt/
lang-a/
day-1
day-2
lang-b/
day-1
day-2
lang-c/
day-1
day-2
然后将其作为
运行./ sentence-align-corpus.perl lang-a lang-b
我认为下载http://www.statmt.org/europarl/下提到的文件可能很有用。
本网站上有指示。这些可能会有所帮助,也可能没有帮助,但我希望您在向SO寻求帮助之前先阅读这些内容。
有关此语料库的详细说明,请阅读:
Europarl:统计机器翻译平行语料库,Philipp Koehn,MT Summit 2005,pdf。
如果您在工作中使用此语料库,请引用该论文。也可以看看 报告的扩展(但更早)版本(ps,pdf)。
我坚持我的原始建议,通过电子邮件发送网站上提供的地址,并要求更好地说明您需要下载什么(如果有的话),如何运行以及它的目标是什么。
答案 2 :(得分:1)
看起来你给这个脚本的第二个参数(即europarlSpanishCorpus.txt
)是错误的,它希望它是名为txt
的目录下的一个目录。