Lingua-NATools
view release on metacpan or search on metacpan
cgis/nat-matrix.cgi view on Meta::CPAN
setlocale(LC_CTYPE, "pt_PT.UTF-8");
use warnings;
use locale;
use Lingua::NATools::Client;
use Lingua::NATools::CGI;
use Lingua::NATools::Matrix;
use CGI qw/:standard/;
my $JSCRIPT = <<"EOS";
function help() {
window.open('nat-matrix.cgi?HELP=1','NAT-QI Quick Help',
'menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
}
EOS
print Lingua::NATools::CGI::my_header(jscript => $JSCRIPT);
my $server = Lingua::NATools::Client->new();
my $corpora = $server->list();
my $crp = undef;
my $name;
if (param("crp")) {
$crp = $corpora->{param("crp")}{id} || undef;
$name = param("crp");
}
if (param("corpus")) {
$crp = param("corpus");
for (keys %$corpora) {
$name = $_ if $corpora->{$_}{id} == $crp;
}
}
if (param("HELP")) {
print Lingua::NATools::CGI::close_window();
print help();
print Lingua::NATools::CGI::my_footer();
exit;
}
print div({-class=>"hlpbt",
-onclick=>"help()"}, "Help");
print h1("NATools Simple Generalization Engine Interface");
print start_form({-class=>"main"});
print "<table>";
print Tr(td({-rowspan=>"3"},submit("Calculate Matrix")),
td({-rowspan=>"3"}," "),
td({-colspan=>2, -style=>"text-align: left"},
"Corpus: ",popup_menu(-name=>'crp',
-default => $name,
-values=>[keys %$corpora]) ));
print Tr(td(["Sentence in source language: ", textfield(-name=>"s1", -size=>"80")]));
print Tr(td(["Sentence in target language: ", textfield(-name=>"s2", -size=>"80")]));
print "</table>\n";
print end_form;
if ($crp && param("s1") && param("s2")) {
my $s1 = param("s1");
my $s2 = param("s2");
print h1($name);
print "<center>",a({-style=>"font-size: small;", -href=>"nat-about.cgi?corpus=$crp"},"about"),"</center>",br;
align($crp,$s1,$s2);
} else {
print help();
}
print Lingua::NATools::CGI::my_footer();
sub align {
my ($crp, $s1, $s2) = @_;
$server->set_corpus($crp);
my $rules = Lingua::NATools::PatternRules->parseFile("/home/ambs/Natura/main/NATools/rules.test-case");
my $matrix = Lingua::NATools::Matrix->new($server, $rules, $s1,$s2);
$matrix->findDiagonal;
my @s1 = @{$matrix->{s1}};
my @s2 = @{$matrix->{s2}};
my $blocks = $matrix->grep_blocks;
my $MAT = $matrix->{matrix};
my $RES = $matrix->{res};
dump_html_mat(\@s1,\@s2,$MAT,$RES);
print h3("Generalization");
print "<table class=\"results\">\n";
print Tr(td({-colspan=>2}, "Sub Blocks"));
for my $b (@{$matrix->{patterns}}) {
print Tr(td($matrix->dump_block($b)));
}
print "</table>\n";
print "<br/>\n";
print "<table class=\"results\">\n";
# for (1..3) {
for (1) {
print Tr(td({-colspan=>2}, "Size $_"));
my $bs = $matrix->combine_blocks($blocks, $_);
for my $b (@$bs) {
print Tr(td($matrix->dump_block($b)));
( run in 1.179 second using v1.01-cache-2.11-cpan-364913b4093 )