get_head_vg.pl 3.55 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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
#!/usr/bin/perl


#&AddID($ARGV[0]);
sub copy_head_vg
{
	my($pos_tag) = $_[0];
	my($sent) = $_[1];
	my $vibh_home = $_[2];
	require "$vibh_home/API/shakti_tree_api.pl";
	require "$vibh_home/API/feature_filter.pl";

	my %hash=();
	if($pos_tag =~ /^NP/)
	{
		$match = "N";
	}
	if($pos_tag =~ /^V/ )
	{
		$match = "V";
	}
	if($pos_tag =~ /^JJP/ )
	{
		$match = "J";
	}
	if($pos_tag =~ /^CCP/ )
	{
		$match = "CC";
	}
	if($pos_tag =~ /^RBP/ )
	{
		$match = "RB";
	}
	

	@np_nodes = &get_nodes(3,$pos_tag,$sent);
	for($i=$#np_nodes; $i>=0; $i--)
	{
		my(@childs) = &get_children($np_nodes[$i],$sent);
		$j = 0;
		while($j <= $#childs)
		{
			my($f0,$f1,$f2,$f3,$f4) = &get_fields($childs[$j],$sent);
			$word=$f2;
			if($f3 =~ /^$match/)
			{
				$new_fs = $f4;

				my $fs_ref = &read_FS($f4);
                                my @name_val = &get_values("name", $fs_ref);

				if($hash{$f2} eq "")
                                {
                                        $hash{$word}=1;
                                }
                                elsif($hash{$f2} ne "")
                                {
                                        $hash{$word}=$hash{$word}+1;
                                }
                                $id=$hash{$word};
                                my ($x,$y)=split(/>/,$f4);
				$x =~ s/ name=[^ >]+//;
				if($id==1)
                                {
                                        $att_val="$word";
                                }
                                elsif($id!=1)
                                {
                                        $att_val="$word"."_"."$id";
                                }
			
				#$new_fs = $x." head=\"$name_val[0]\">";
                                $new_fs = $x." head=$name_val[0]>";
                                #my $new_head_fs=$x." name=\"$att_val\">";
                                #&modify_field($childs[$j],4,$new_fs,$sent);
				last;
			}
			elsif($j == 0)
			{
				my($f0,$f1,$f2,$f3,$f4) = &get_fields($childs[$#childs],$sent);
				$word=$f2;

				my $fs_ref = &read_FS($f4);
                                my @name_val = &get_values("name", $fs_ref);

				if($hash{$f2} eq "")
                                {
                                        $hash{$word}=1;
                                }
                                elsif($hash{$f2} ne "")
                                {
                                        $hash{$word}=$hash{$word}+1;
                                }
                                $id=$hash{$word};

                                my ($x,$y)=split(/>/,$f4);
				$x =~ s/ name=[^ >]+//;

				if($id==1)
                                {
                                        $att_val="$word";
                                }
                                elsif($id!=1)
                                {
                                        $att_val="$word"."_"."$id";
                                }
			
				#$new_fs = $x." head=\"$name_val[0]\">";
                                $new_fs = $x." head=$name_val[0]>";
                                #my $new_head_fs=$x." name=\"$att_val\">";
                                #&modify_field($childs[$#childs],4,$new_fs,$sent);
			}
			$j++;
		}
		($f0,$f1,$f2,$f3,$f4) = &get_fields($np_nodes[$i],$sent);
		if($f4 eq '')
		{
			&modify_field($np_nodes[$i],4,$new_fs,$sent);
		}
		else
		{
			$fs_ptr = &read_FS($f4,$sent);
			$new_fs_ptr = &read_FS($new_fs,$sent);
			&merge($fs_ptr,$new_fs_ptr,$sent);
			$fs_string = &make_string($fs_ptr,$sent);
			&modify_field($np_nodes[$i],4,$fs_string,$sent);

		}
	}
}
1;