#/usr/bin/perl
#FAZLIU Doruntina
#BAO2 -recherche et extraction de termes sur les données étiquetées (les séquences NOM PREP NOM, NOM ADJ etc.) ou de relations de #dépendances (cf Cours Documents Structurés)
#!/usr/bin/perl

#--------------------------------------------------------------
use utf8;
binmode STDOUT,":utf8";
# input
my $file=shift @ARGV;
if ($file=~/.*-(\d+).xml/) {
	$rubrique=$1
}
# le pattern morphosyntaxique
my @PATRON=@ARGV;

$patron_nom="";
for $cat (@PATRON) {
	$patron_nom.="$cat-"
}
open my $input, "<:encoding(utf-8)",$file;

my @LISTE=<$input>;


close($input);
# On parcourt chaque phrase
while (my $ligne=shift @LISTE) {
	my $terme="";
	if ($ligne=~/<element><data type="type">$PATRON[0]<\/data><data type="lemma">[^<]+?<\/data><data type="string">([^<]+?)<\/data><\/element>/) {
		#on récupère la forme grâce à une expression régulière qui utilise le patron n°1
		$terme=$terme.$1;	
		my $longueur=1;
		my $indice=1;
		while (($LISTE[$indice-1]=~/<element><data type="type">($PATRON[$indice])<\/data><data type="lemma">[^<]+?<\/data><data type="string">([^<]+?)<\/data><\/element>/) and ($indice <= $#PATRON)) {
			$indice++;
			$terme.=" ".$2;
			$longueur++;
		}
		if ($longueur == $#PATRON + 1) {	
			$dicoPatron{$terme}++;
			$nbTerme++;
		}
	}	
}

#--------------------------------------------------------------

open my $resultat,">:encoding(UTF-8)","extract_patron_$rubrique-$patron_nom.txt";
print $resultat "$nbTerme éléments trouvés\n";

# On trie de façon descendant le contenu du dictionnaire.
foreach my $patron (sort {$dicoPatron{$b} <=> $dicoPatron{$a} } keys %dicoPatron) {
	print $resultat "$dicoPatron{$patron}\t$patron\n";
}

close($resultat);