#!/usr/local/bin/perl

sub Readfile{
    my $filename = $_[0];my $file;
    my @files;
    open(FILE, "$filename");
    $flag = $camein = $cameout = 0;
    while( defined( my $line = <FILE> ) ){
        if($line =~ /\<bitext.*>/){
            @bitextarray = (@bitextarray,$line);
            next;
        }

        if($flag == 0 and $line =~ /\<article.*>/){
            @articlearray= (@articlearray, $line);
            $flag = 1;$camein = 1;
        }
        elsif($flag == 1 and $line =~ /\<\/article>/){
            $flag = 0; $cameout  = 1;
        }              
if($flag == 1 and $camein == 0){
            $file = $file.$line;
        }
        if($cameout == 1){
            @files = (@files, $file);
            $file = undef;
        }
        $camein = $cameout = 0;
    }
    close(FILE);

    return @files;
}          

$bitextno=0;
$delimeter=</article>;
($file1,$file2)=@ARGV;
@filearray1=Readfile($file1);
@filearray2=Readfile($file2);

$texts = @filearray1;

for($textno=0;$textno<$texts;$textno+=2,$bitextno++)
{
 $count = 0;
 open(TEMP,">temp.txt");
 print TEMP $filearray1[$textno];
 close(TEMP);
 open(FILE1,"temp.txt");
 while($line=<FILE1>)

{
 if($line=~m/alignment ([0-9]*=[0-9]*\s*[0-9]*)/) 
  {   $count++; 
      $match=$1;
      $rightside=0;
      ($leftnum,$rightside)=split(/=/,$match);
      
      if($rightside eq "")

      {
         
	  $alignfile1[$leftnum][0]=-1;
          $alignfile1[$leftnum][1]=-1;
	 
      }
      
      else
      {
       
      @array=split(/ /,$rightside);
      $len=@array;
      
      for($i=0;$i<$len;$i++)
      {
          $alignfile1[$leftnum][$i]=$array[$i];
               
      }
      if($len == 1)
 { 
   
   $alignfile1[$leftnum][1] = -1;
       }
     
     
       }
  $rightside="";
      
     
   }

}
$count1=0;
@array=();

 

open(TEMP,">temp1.txt");
 print TEMP $filearray2[$textno];
 close(TEMP);
 open(FILE2,"temp1.txt");
while($line=<FILE2>)

{
 if($line=~m/alignment ([0-9]*=[0-9]*\s*[0-9]*)/) 
  {   
      $count1++;
      $match=$1;
      $rightside=0;
      ($leftnum,$rightside)=split(/=/,$match);
      
      if($rightside eq "")

      {
         
	  $alignfile2[$leftnum][0]=-1;
          $alignfile2[$leftnum][1]=-1;
	 
      }
      
      else
      {
       
      @array=split(/ /,$rightside);
      $len=@array;
      
      for($i=0;$i<$len;$i++)
      {
          $alignfile2[$leftnum][$i]=$array[$i];
               
      }
      if($len == 1)
 { 
   
   $alignfile2[$leftnum][1] = -1;
       }
     
     
       }
  $rightside="";
      
     
   }

}

close FILE1;
close FILE2;

open(FILE,"temp1.txt");
$linecount=0;
while($line=<FILE>)
{
 if($line=~m/^[<\n]/)
  {
    
  }
  else
 {
     #print"\n $line";
     #$input=<STDIN>;
     $linecount++;
     @array = split(//,$line);
     $len = @array;
     #print "$len";
     $hash1{$linecount}=$len;
     #print "\n $linecount ..... $len";
     #$input=<STDIN>;
 }

}
close(FILE);
$linecount=0;
open(TEMP,">temp3.txt");
 print TEMP $filearray2[$textno+1];
 close(TEMP);
 open(FILE,"temp3.txt");
while($line=<FILE>)
{
 if($line=~m/^[<\n]/)
  {
    
  }
  else
 {
     #print"\n $line";
     #$input=<STDIN>;
     $linecount++;
     @array = split(//,$line);
     $len = @array;
     #print "$len";
     $hash2{$linecount}=$len;
     #print "\n $linecount ..... $len";
     #$input=<STDIN>;
 }

}
$reference = 0;

for( $i = 1; $i <=$count; $i++)
{  
    $sent_no = $alignfile1[$i][0];
    $sent_next = $alignfile1[$i][1];
    if($sent_no == -1)
    {
     }
    elsif($alignfile1[$i+1][0] == $sent_no)
     { 
          if($sent_next != -1)
            {     
                  $reference += ($hash1{$i} + $hash1{$i+1}) * ($hash2{$sent_no}+$hash2{$sent_next});
             }
           else
            {    $reference += ($hash1{$i} + $hash1{$i+1}) * ($hash2{$sent_no});              }

		 $i++;
       }

    else
    {
        if($sent_next != -1)
	  { 
              $reference += ($hash1{$i}) * ( $hash2{$sent_no} + $hash2{$sent_next} );
          }
        else
          { 
                $reference += ($hash1{$i}) * ( $hash2{$sent_no});
                
      
         
          }
      }         
     

    }


$alignment = 0;

for( $i = 1; $i <=$count; $i++)
{  
    $sent_no = $alignfile2[$i][0];
    $sent_next = $alignfile2[$i][1];
    
    if($sent_no == -1)
    {
     }
    elsif($alignfile2[$i+1][0] == $sent_no)
     { 
          if($sent_next != -1)
            {     
                  $alignment += ($hash1{$i} + $hash1{$i+1}) * ($hash2{$sent_no}+$hash2{$sent_next});
             }
           else
            {    $alignment += ($hash1{$i} + $hash1{$i+1}) * ($hash2{$sent_no});              }

		 $i++;
       }

    else
    {
        if($sent_next != -1)
	  { 
              $alignment += ($hash1{$i}) * ( $hash2{$sent_no} + $hash2{$sent_next} );
          }
        else
          { 
                $alignment += ($hash1{$i}) * ( $hash2{$sent_no});
          }
      }         
     

    }


if( $reference <= $alignment)
{ $intersection = $reference;
 }
else
{ $intersection = $alignment;
}  
    $recall = $intersection/$reference;
    $precision = $intersection/$alignment;

    $F =  (2 * ($recall * $precision))/ ($recall + $precision);

    print "\n$bitextarray[$bitextno]   Measure: $F\n";
}

