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"},"&nbsp;"),
	 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 )