#!/usr/bin/perl
#----------------------------------------------------------------------------------
# NOM : Estelle Salmon
# MODE D EMPLOI : perl bao3_extractRelation.pl fichierXML_UD.xml obj
# En entrée : sortie UDPIPE formatée en XML + une relation syntaxique
# En sortie la liste triée des couples Gouv,Dep en relation
#----------------------------------------------------------------------------------
use strict;
use utf8;
binmode STDOUT, ':utf8';
#-------------------------------------------------------------------------------------
my $relation="$ARGV[1]";
my %dicoRelation=();
#-------------------------------------------------------------------------------------

open my $input ,"<:encoding(utf8)","$ARGV[0]";
# on découpe le texte par phrase
$/="</p>\n"; 	

			#-------------------------------------------------------------------------------------
while (my $phrase=<$input>) {

	# on traite chaque paragraphe en le découpant
	my @LIGNES=split(/\n/,$phrase);

	for (my $i=0;$i<=$#LIGNES;$i++) {
	
		# si la ligne lue contient la relation, on ira chercher le dep puis le gouv
		if ($LIGNES[$i]=~/<element><data type="id">([^<]+)<\/data><data type="string">([^<]+)<\/data><data type="lemma">[^<]+<\/data><data type="type">[^<]+<\/data><data type="id_gov">([^<]+)<\/data><data type="rel">[^<]*$relation[^<]*<\/data><\/element>/i) {

			my $posDep=$1;
			my $posGouv=$3;
			my $formeDep=$2;
			# soit le gouv est avant le dep, soit après...
			if ($posDep > $posGouv) {
				for (my $k=0;$k<$i;$k++) {
					# on recupere la forme du gouverneur
					if ($LIGNES[$k]=~/<element><data type="id">$posGouv<\/data><data type="string">([^<]+)<\/data><data type="lemma">[^<]+<\/data><data type="type">[^<]+<\/data><data type="id_gov">[^<]+<\/data><data type="rel">[^<]*<\/data><\/element>/) {
						my $formeGouv=$1;
						# on ajoute au dico
						$dicoRelation{lc("$formeGouv $formeDep")}++;
					}
				}
			}
			else {
				for (my $k=$i+1;$k<=$#LIGNES;$k++) {
					# on recupere la forme du gouverneur
					if ($LIGNES[$k]=~/<element><data type="id">$posGouv<\/data><data type="string">([^<]+)<\/data><data type="lemma">[^<]+<\/data><data type="type">[^<]+<\/data><data type="id_gov">[^<]+<\/data><data type="rel">[^<]*<\/data><\/element>/) {
						my $formeGouv=$1;
						# on ajouter au dico
						$dicoRelation{lc("$formeGouv $formeDep")}++;
					}
				}
			}
		}
	}

}


# on imprime la liste des couples Gouv,Dep et leur fréquence...
foreach my $relation (sort {$dicoRelation{$b}<=>$dicoRelation{$a}} (keys %dicoRelation)) {
	print "$relation\t$dicoRelation{$relation}\n";
}
