La BAO2 est l'étape qui nous permet d'étiqueter morphosyntaxiquement nos fichiers obtenus dans la BAO1.
Nous avons procédé à l'étiquetage de deux manières différentes :
1° CORDIAL
Fiche technique de Cordial:
NE TRAITE QUE LA SURFACE DES FICHIERS TEXTES
ENTREE : fichiers textes de surface
SORTIE : fichiers textes de surface étiquetés
NE TRAITE QUE LA SURFACE DES FICHIERS TEXTES
ENTREE : fichiers textes de surface
SORTIE : fichiers textes de surface étiquetés


Télécharger les fichiers obtenus
2° TREETAGGER
Fiche technique du script :
TRAITEMENT DE LA SURFACE
ENTREE : fichiers txt de surface extraits en BAO1
SORTIE : fichiers xml contenant le texte et son étiquetage
TRAITEMENT DE LA SURFACE
ENTREE : fichiers txt de surface extraits en BAO1
SORTIE : fichiers xml contenant le texte et son étiquetage
#/usr/bin/perl #----------------------------------------------------------- # le premier argument est le nom du repertoire contenant les fichiers XML a etiqueter my $rep="$ARGV[0]"; # le second argument est le nom de la rubrique my $rubrique = "$ARGV[1]"; my %dico; # on s'assure que le nom du répertoire ne se termine pas par un "/" $rep=~ s/[\/]$//; #---------------------------------------- # on initialise une variable contenant le flux de sortie my $sortieTXT="$rubrique.txt"; if (!open (FILEOUT,">$sortieTXT")) { die "Pb a l'ouverture du fichier $sortieTXT"}; close(FILEOUT); my $sortieXML="$rubrique.xml"; if (!open (FILEOUT,">$sortieXML")) { die "Pb a l'ouverture du fichier $sortieXML"}; print FILEOUT "\n"; print FILEOUT "\n"; print FILEOUT " \n"; close(FILEOUT); exit; #---------------------------------------------- sub parcoursarborescencefichiers { # variable spéciale @_ (qui est donc un tableau) : shift recupere l'element de _@ qui est le premier argument my $path = shift(@_); # ouvrir du dossier qui est celui entré en argument opendir(DIR, $path) or die "can't open $path: $!\n"; #créer une liste qui contient les éléments du répertoire my @files = readdir(DIR); closedir(DIR); # pour chaque fichier ou dossier dans l'arborescence parcourue foreach my $file (@files) { next if $file =~ /^\.\.?$/; next if $file =~ /^\._/; next if $file =~ /^fil/; $file = $path."/".$file; # si on tombe sur un repertoire, on va le parcourir et donc relancer la fonction parcoursarborescencefichiers if (-d $file) { print "BOTHUA \n"; close (FILEOUT); #---------------------------------------- &parcoursarborescencefichiers($rep); # on lance la récursion.... et elle se terminera après examen de toute l'arborescence #---------------------------------------- open (FILEOUT,">>:encoding(utf-8)", $sortieXML); print FILEOUT "==> ",$file,"\n"; &parcoursarborescencefichiers($file); print " ==> ",$file,"\n"; } # si on tombe sur fichier, on va le traiter if (-f $file) { if ($file =~ /$rubrique.+\.xml$/) { print "<",$i++,"> ==> ",$file,"\n"; $codage = "utf-8"; open (FIC, "<:encoding($codage)", $file); # concaténation des informations récoltées dans les fichiers instanciés en début de programme open (OUTTXT, ">>:encoding($codage)", "$rubrique.txt"); open (OUTXML, ">>:encoding($codage)", "$rubrique.xml"); #ramener tout le flux textuel de FIC sur une seule ligne my $texte=""; while (my $ligne = ) { chomp $ligne; $ligne =~ s/\r//g; $texte = $texte . $ligne; } close FIC; $texte =~ s/>\s+> ([^<]+?)<\/title>(?:[^<]+?)<\/link> ([^<]+?)<\/description>/g) { my $titre = $1; my $description = $2; $titre=~s/<.+?>//g; $titre.="."; $titre=~s/\?\.$/\?/; $description=~s/<.+?>//g; if (!(exists $dico{$titre})) { $dico{$titre} = 1; print OUTTXT "$file \n"; print OUTTXT "$titre\n"; print OUTTXT "$description\n\n"; my ($titretag,$descriptiontag) = &etiquetage($titre,$description); print OUTXML " - \n"; } } close OUTTXT; close OUTXML; # fin de traitement du fichier } } } } sub etiquetage { my ($t,$d)= @_; open(TMP,">:encoding(utf8)","titre.txt"); print TMP $t; close TMP; # system permet de lancer une commande bash dans le terminal system("perl tokenise-utf8.pl titre.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf8.par > titre_tag.txt"); system("perl treetagger2xml-utf8.pl titre_tag.txt utf8"); #résultat est contenu dans titre_tag.txt.xml open(TMP2, "<:encoding(utf8)","titre_tag.txt.xml"); my $t_tag=""; my $ligne =
$titretag $descriptiontag ; while (my $ligne = ) { #chomp $ligne; $t_tag = $t_tag . $ligne; } close TMP2; open(TMP,">:encoding(utf8)","description.txt"); print TMP $d; close TMP; system("perl tokenise-utf8.pl description.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf8.par > description_tag.txt"); system("perl treetagger2xml-utf8.pl description_tag.txt utf8"); #résultat est contenu dans titre_tag.txt.xml open(TMP2, "<:encoding(utf8)","description_tag.txt.xml"); my $d_tag=""; my $ligne = ; while (my $ligne = ) { #chomp $ligne; $d_tag = $d_tag . $ligne; } close TMP2; return($t_tag,$d_tag); } #----------------------------------------------
Télécharger les fichiers obtenus
Fiche technique TreeTagger :
TRAITEMENT DE LA PROFONDEUR
ENTREE : fichiers txt profond extraits en BAO1
SORTIE : fichiers txt des articles étiquetés
TRAITEMENT DE LA PROFONDEUR
ENTREE : fichiers txt profond extraits en BAO1
SORTIE : fichiers txt des articles étiquetés
