mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2025-01-07 12:10:36 +03:00
a25193cc5d
This is lint reported by the new lint-checking functionality in beautify.py. (We can change to a different lint checker if we have a better one, but it would probably still flag these same problems.) Lint checking can help a lot, but only if we get the lint under control.
53 lines
1.5 KiB
Perl
Executable File
53 lines
1.5 KiB
Perl
Executable File
#!/usr/bin/env perl
|
|
|
|
use warnings;
|
|
use strict;
|
|
|
|
my ($ttable_file) = @ARGV;
|
|
|
|
die("syntax: remove-orphan-phrase-pairs-from-reordering-table.perl TTABLE < REORDERING_TABLE > REORDERING_TABLE.pruned")
|
|
unless defined($ttable_file) && -e $ttable_file;
|
|
|
|
if ($ttable_file =~ /gz$/) {
|
|
open(TTABLE,"zcat $ttable_file|");
|
|
}
|
|
else {
|
|
open(TTABLE,$ttable_file);
|
|
}
|
|
|
|
# get first ttable line to be matched
|
|
my $ttable_line = <TTABLE>;
|
|
my $ttable_phrase_pair = &get_phrase_pair($ttable_line);
|
|
|
|
# loop through reordering table
|
|
while(my $reordering_line = <STDIN>) {
|
|
my $reordering_phrase_pair = &get_phrase_pair($reordering_line);
|
|
|
|
# if it does not match ttable line, then keep looping
|
|
#print STDERR "$reordering_phrase_pair ?? $ttable_phrase_pair\n";
|
|
while($reordering_phrase_pair ne $ttable_phrase_pair) {
|
|
#print STDERR "$reordering_phrase_pair != $ttable_phrase_pair\n";
|
|
$reordering_line = <STDIN>;
|
|
last if !defined($reordering_line); # end of file, done
|
|
$reordering_phrase_pair = &get_phrase_pair($reordering_line);
|
|
}
|
|
last if !defined($reordering_line); # end of file, done
|
|
|
|
# print matched line
|
|
print $reordering_line;
|
|
|
|
# read next ttable line to be matched
|
|
$ttable_line = <TTABLE>;
|
|
last if !defined($ttable_line); # end of file, done
|
|
$ttable_phrase_pair = &get_phrase_pair($ttable_line);
|
|
}
|
|
if (defined($ttable_line)) {
|
|
print STDERR "ERROR: trailing ttable lines -> could not find $ttable_line!\n";
|
|
}
|
|
|
|
sub get_phrase_pair {
|
|
my ($line) = @_;
|
|
my ($src,$tgt,$other) = split(/ \|\|\| /,$line);
|
|
return "$src ||| $tgt";
|
|
}
|