*	#!/usr/bin/perl
#Mode d'emploi : perl extract_patron.pl ../BAO2/PERL/RUBRIQUE/corpus-titre-description.xml PATRON_AVEC_ESPACES
<<DOC;
Format d\'entree : un texte étiqueté et lemmatisé par treetagger + une liste de POS décrivant le patron (ex: DET NC ADJ)

perl programme.pl fichierTT DET NC ADJ

Format de sortie : la liste des occurrences du patron s\'affiche dans le fichier de sortie
DOC
#--------------------------------------------------------------------
use utf8;
binmode STDOUT,":utf8";
#--------------------------------------------------------------------

my $dossier_sortie = 'PERL';
my $fichier = $ARGV[0];
my $rubrique = "";
if ($fichier =~ /\..+?PERL(\/.+)\/corpus-titre-description.xml/) {
	$rubrique .= $1;
	$dossier_sortie .= $rubrique;
}

mkdir $dossier_sortie if! -d $dossier_sortie;

my $fileatraiter=shift @ARGV;
my @PATRON=@ARGV;
open my $input, "<:encoding(utf-8)",$fileatraiter;
my @LISTE=<$input>;
close($input);
while (my $ligne=shift @LISTE) {
	# si la ligne contenue dans $ligne correspond à la première POS du patron $PATRON[0]
	my $terme="";
	if ($ligne=~/<element><data type="type">$PATRON[0]<\/data><data type="lemma">[^<]+?<\/data><data type="string">([^<]+?)<\/data><\/element>/) {
		$terme=$terme.$1;
		my $longueur=1;
		my $indice=1;
		# alors il faut que je lise autant de ligne qu'il y a dans le patron et tester chaque terme du patron...
		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++;
		}
	}	
}
$PATRON = join('_',@PATRON);
$dossier_sortie .= "/PATRON_$PATRON.txt";
open my $fileResu,">:encoding(UTF-8)","./$dossier_sortie";
print $fileResu "$nbTerme éléments trouvés\n";
foreach my $patron (sort {$dicoPatron{$b} <=> $dicoPatron{$a} } keys %dicoPatron) {
	print $fileResu "$dicoPatron{$patron}\t$patron\n";
}
close($fileResu);
print "Aborescence pour le fichier de sortie : $dossier_sortie \n";
print "Patron recherche : $PATRON \n";