#!usr/bin/perl
#
use strict;# always use strict, it's a good habit
######
# Intro
my ($date, $time) = date_time_stamp();
print "MT evaluation run on $date at $time\n";
print "command line: ", $0, " ", join(" ", @ARGV), "\n";
my $usage = "\n\n Usage: $0 [-h] [-s score range ] [-r ref FILENAME] [-t translation FILEHANDLE]\n".
"-h :打印帮助信息\n".
"-c :打印需要保存的bleu分值范围,“0.8”表示大与0.8, 不给任何参数时全部打印\n".
"-r ref_file :参考译文文件路径\n".
"-t trans_file :译文信息文件路径\n".
"-o result_file :结果文件路径\n".
"\n";
use vars qw ($opt_r $opt_t $opt_h $opt_c $opt_o);
use Getopt::Std;# see "perldoc Getopt::Std"
my %options;
getopts('r:t:hc:o:', \%options);# read the options with getopts
# uncomment the following two lines to see what the options hash contains
#use Data::Dumper;
#print Dumper \%options;
$options{h} && usage();# the -h switch
# use the -t switch, if it's given, or use a default input trans_info filename
my $trans_info_file = $options{t} || 'trans_info.file';
# use the -r switch, if it's given, or use a default input ref filename
my $ref_file = $options{r} || 'ref.file';
# use the -c switch, if it's given, or use a default input ref filename
my $sel_score = $options{c} || '0.0';#默认全部输出
# use the -o switch, if it's given, or use a default input ref filename
my $result_file = $options{o} || 'out.file';#默认全部输出
print "Translation file is $trans_info_file\n";
print "Ref file is $ref_file\n";
print "Will output the info whose score greater that $sel_score to the file $result_file\n";
#打开输入文件
die $usage if defined($opt_h);
#必须给定
die "Error in command line: ref_file not defined$usage" unless defined $ref_file;
die "Error in command line: trans_file not defined$usage" unless defined $trans_info_file;
die "Error in command line: sel_score not defined$usage" unless defined $sel_score;
open (TRANS_FILE, $trans_info_file) or die "\nUnable to open translation data file $trans_info_file", $usage;
#开始处理输入译文信息文件
my $count =0;
while(!eof(TRANS_FILE)){
my $line = <TRANS_FILE>;
$count++;
if($line=~/\#\#\#\#\#/)
{
print "A new sentence begin:\n";
}elsif($line =~/\$\$\$\$\$ path_file/)
{
print "A path_file begin:\n";
}
else{
my $path = $line ;
print "\n path is: $path";
$count++;
die "\n在$count 行 发生格式错误\n" unless (!eof(TRANS_FILE));
my $feature = <TRANS_FILE>;
print "\n feature is: $feature";
die "\n在$count 行 发生格式错误\n" unless (!eof(TRANS_FILE));
my $trans = <TRANS_FILE>;
print "\n trans is: $trans";
evaluate($path,$feature,$trans,$ref_file,$sel_score,$result_file);
}
}
########################################
# print out the help and exit
sub usage
{
print <<EOHELP;
make_corel [-h] [-s score range ] [-r ref FILENAME] [-t translation FILEHANDLE]
-h :打印帮助信息
-c :打印需要保存的bleu分值范围,“0.8”表示大与0.8, 不给任何参数时全部打印
-r ref_file :参考译文文件路径
-t trans_file :译文信息文件路径
-o result_file :结果文件路径
EOHELP
exit;
}
##########################################
## 评测分数
sub evaluate
{
print "\neval\n";
my ($path_info,$feature_info,$trans_info,$ref_info,$score_info,$result_file_info) =@_;
print $path_info,$feature_info,$trans_info,$ref_info,$score_info,$result_file_info;
my ($Bleu_score);
#打开需要的零时文件,输入必要数据
open TRANS,">trans.file.temp" or die "can not open file trans.file.temp $!\n";
open FEATURE,">feature.file.temp" or die "can not open file feature.file.temp $!\n";
print TRANS $trans_info;
print FEATURE $feature_info;
close(TRANS);
close( FEATURE);
#打开存放最终结果的文件
open OUT,">>$result_file_info" or die "can not open file $result_file_info $!\n";
#把译文写道$trans_info文件里,调用make_score进行评测,结果在$result_file_info中
print system("make_score.exe trans.file.temp $ref_info result.file.temp feature.file.temp");
#把结果文件result.file.temp中的结果析取出来
open RESULT,"result.file.temp" or die "can not open file result.file.temp $!\n";
my $temp_line = <RESULT>;
my @temp_scores = split/\s+/,$temp_line;
if($temp_scores[0] >= $score_info)
{
print OUT $temp_scores[0],"\n";
print OUT $path_info;
print OUT $feature_info;
print OUT $trans_info;
close(RESULT);
close(OUT);
return ;
}else
{
close(RESULT);
close(OUT);
return ;}
}
#################################
sub date_time_stamp {
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime();
my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my ($date, $time);
$time = sprintf "%2.2d:%2.2d:%2.2d", $hour, $min, $sec;
$date = sprintf "%4.4s %3.3s %s", 1900+$year, $months[$mon], $mday;
return ($date, $time);
}
分享到:
相关推荐
描述中提到的“NULL”可能表示原始的博文描述缺失,但我们可以根据标题推测,这篇译文可能会讨论规则引擎在实际应用中的优势、工作原理以及为何它能成为处理动态业务规则的有效工具。 在标签中,“源码”意味着这篇...
消费者需要理解和掌握基本的金融概念,例如复利、风险分散、投资回报率、信用评分以及保险的重要性。这些概念是制定明智财务决策的基础,可以帮助人们避免陷入债务陷阱,保护自己的财产,并实现长期的财富积累。 ...
首先,这个毕业设计项目强调了原创性和学术诚信的重要性,要求作者和指导教师签署原创性声明,确保论文内容为作者独立完成,未抄袭或剽窃他人的研究成果。同时,作者还需要授权学校保存和使用论文,包括可能的公开和...
2. **信用评估**:系统可能包含一套信用评分模型,根据申请人提供的财务数据、信用记录等信息进行风险评估,为审批决策提供依据。 3. **审批流程**:系统会模拟银行内部的贷款审批流程,包括初审、复审、最终审批等...
这个系统的主要目的是为学生和教师提供一个方便、快捷的在线考试平台,实现试题发布、答题、自动评分等功能。 在ASP技术方面,它是一种微软公司开发的服务器端脚本语言,主要用于动态网页的创建。ASP文件包含HTML...
外文翻译可能是对相关技术文献或者研究的译文,这为深入理解项目背景和技术细节提供了额外的视角。通过阅读这些翻译,学生可以了解到国际上关于题库管理系统的研究进展,拓宽视野,提升自己的专业素养。 总的来说,...
- **工程图纸、程序及软盘等**:针对理工科专业,可能还需要提交相关的工程图纸、程序代码等。 ##### 1.2 毕业设计(论文)资料的填写 - 使用学校统一印制的毕业设计(论文)资料袋和封面。 - 所有资料填写要求字迹...
8. **注意事项**:如果使用新电路板,必须通知巡视员加盖便章,否则可能影响评分。此外,设计报告的密封纸需要按照指定方式装订和粘贴,确保完整性。 撰写设计与总结报告是展示项目工作的重要途径,不仅需要详细...
在这个项目中,我们可以期待看到如何将考试系统的各项功能,如用户注册登录、试题库管理、组卷策略、在线答题、自动评分等,用Java编程语言实现的详细过程。 文献综述文档则会概述语言考试系统相关的研究现状、发展...
- **保护范围**:软件的源程序、目标程序和文档等均可获得著作权保护,而软件开发的思想则不在保护之列。 以上是对2013年上半年系统分析师上午试卷中部分知识点的详细解析,旨在帮助考生更好地理解考试内容及相关...
返回的结果可以是字符串或结构化的数据,如字典,包含了原文、译文、以及可能的翻译质量评分。 总的来说,"translater"项目为我们提供了一个便捷的跨语言沟通工具,通过Python编程语言和第三方翻译服务,实现了文本...