Repair.pm 2.39 KB
Newer Older
priyank's avatar
priyank committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
package ILMT::TEL::HIN::Repair;

#use strict;
#use warnings;
use Dir::Self;
use Data::Dumper;
use ILMT::TEL::HIN::Repair::load;
use ILMT::TEL::HIN::Repair::modify;
use ILMT::TEL::HIN::Repair::failsafe;
use ILMT::TEL::HIN::Repair::onto_lex;
use ILMT::TEL::HIN::Repair::rule_match;
use ILMT::TEL::HIN::Repair::cat_repair;
use ILMT::TEL::HIN::Repair::copy_np_head;
use ILMT::TEL::HIN::Repair::copy_vg_head;
use ILMT::TEL::HIN::SSFAPI::feature_filter;
use ILMT::TEL::HIN::SSFAPI::shakti_tree_api;
use ILMT::TEL::HIN::Repair::copula_insertion;

my @dispatch_seq = (
    "failsafe",
    "repair",
    "copula_insertion",
    "cat_repair",
    "onto_lex"
);

sub process {
    my %args = @_;
    foreach my $submodule (@dispatch_seq) {
        $args{'data'} = __PACKAGE__->can($submodule)->(%args);
        #    print Dumper $submodule;
        # print Dumper $args{'data'};
    }
    return $args{"data"};
}

sub repair {
    my %par = @_;
    my $input = $par{'data'};
    read_story(\$input);
    my $result;

    undef (@_RULE_TREE_);
    my $ref_RULE_TREE_=&load(__DIR__ . "/Repair/data/trRules",\@_RULE_TREE_);

    my $numBody = &get_bodycount();
    for(my($bodyNum)=1;$bodyNum<=$numBody;$bodyNum++)
    {

        $body = &get_body($bodyNum,$body);
        # Count the number of Paragraphs in the story
        my($numPara) = &get_paracount($body);
        #print STDERR "Paras : $numPara\n";
        # Iterate through paragraphs in the story
        for(my($i)=1;$i<=$numPara;$i++)
        {
            my($para);
            # Read Paragraph
            $para = &get_para($i);
            # Count the number of sentences in this paragraph
            my($numSent) = &get_sentcount($para);
            # print STDERR "\n $i no.of sent $numSent";
            #print STDERR "Para Number $i, Num Sentences $numSent\n";
            #print $numSent."\n";
            # Iterate through sentences in the paragraph
            for(my($j)=1;$j<=$numSent;$j++)
            {
                #print " ... Processing sent $j\n";
                # Read the sentence which is in SSF format
                my($sent) = &get_sent($para,$j);
                #print STDERR "$sent";
                #
                &rule_match($sent,$ref_RULE_TREE_);
#		&copy_np_head($sent);
#		&copy_vg_head($sent);
            }
        }
    }
    open OUTFILE, '>', \$result  or die $!;
    select(OUTFILE);
    printstory();
    select(STDOUT);
    return $result;
}