INDEX

Programmes

Parcours arborescence fichier
Traitement avec TreeTagger
Traitement avec Cordial (1ere partie)
(2ere partie)

Etapes 1, 2, 3 et 4 intégrées par modules (archive zip)

Fichiers XML de résultat

Parcours
Traitement avec TreeTagger
Traitement avec Cordial

Feuilles XSL

Feuille de style TT
Feuille de style Cordial

Claire Guiraud

BOITE A OUTILS 2 CORDIAL

Ojectif :

Extraire le contenu des balises 'description' de la même arborescence de fichier (voir ci-dessus) Récupérer un fichier au format texte, contenant les contenus de toutes les balises 'nettoyés' (entités html). Ce fichier peut ensuite être traité par Cordial. Il est à noter que contrairement à TreeTagger, Cordial n'a pas besoin d'un fichier contenant un mot par ligne.

Premier programme :

Les deux programmes réalisés sont issus du programme réalisé pour le TreeTagger (voir ici). Le premier programme extrait le contenu des balises 'description' de la même façon, les 'nettoie', mais ne place pas de saut de ligne entre chaque mot.

#/usr/bin/perl -w
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise la variable fichier pour pouvoir ecrire le contenu du premier repertoire au debut du sub
my $fichier=$path;
#----------------------------------------
my $output1="Cordial.txt";

#----------------------------------------
&parcoursarborescencefichiers($rep);    #recurse!
#----------------------------------------

print 'Traitement terminé, le fichier '."$output1".' peut maintenant être étiqueté avec Cordial';
exit;



sub parcoursarborescencefichiers {
       my $path = shift(@_);
       opendir(DIR, $path) or die "can't open $path: $!\n";
    my @files = readdir(DIR);
        closedir(DIR);
        foreach my $file (@files) {    
        next if $file =~ /^\.\.?$/;
        $file = $path."/".$file;
        if (-d $file) {
            &parcoursarborescencefichiers($file);    #recurse!
        }
        if (-f $file) {            
           
            open(FILEINPUT,"$file");
            if (!open (FILEOUT,">>$output1")) { die "Pb a l'ouverture du fichier $output1"};
                  while ($ligne = <FILEINPUT>){    
               
                        if ($ligne=~/<description>(.*)<\/description>/)  {
                                my $desc=$1;
                                $desc=~ s/&#38;#39;/'/g;
                                $desc=~ s/&#38;#34;/"/g;
                                $desc=~ s/&#234;/ê/g;
                                $desc=~ s/é/é/g;
                                $desc=~ s/ç/ç/g;
                                $desc=~ s/Ú/è/g;
                                $desc=~ s/Ã/à/g;
                                $desc=~ s/àŽ/ô/g;
                                $desc=~ s/&#233;/é/g;
                              print FILEOUT "$desc"."\n";    
                }
            }
            close (FILEINPUT);
        }
    }
        return();               
}
#----------------------------------------------


Fichier obtenu : CordialIn.txt

Suite :

Un deuxième programme est utilisé, pour transformer le fichier créé par le traitement de Cordial (donc au 'format Cordial') en un fichier au format XML.

Second programme :
Ce programme correspond à la deuxième partie du programme mis au point pour Treetagger :

#!/usr/bin/perl
<<DOC;
Format d\'entree : un texte étiqueté et lemmatisé par Cordial
Format : serra    serrer    VINDPS3S
Format de Sortie : le même texte au format xml
DOC

# Usage
$ChaineUsage="Usage : Cordial2xml.pl <Fichier>\n";
if (@ARGV!=1) {
 die $ChaineUsage;
}
&ouvre;
&entete;
&traitement;
&fin;
&ferme;

################################################
# Récupération des arguments et ouverture des tampons
sub ouvre {
    $FichierEntree="ARGV[0]";
    open(Entree,$FichierEntree);
    $FichierSortie=$FichierEntree . ".xml";
    open(Sortie,">$FichierSortie");
}

# Entête de document XML
sub entete {
    print Sortie "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n";
    print Sortie "<PARCOURS>"."\n"."<NOM>Claire Guiraud</NOM><document>"."\n";
      
}

# Traitement
sub traitement {
    while ($Ligne = <Entree>) {
    if ($Ligne!~/\ô\¯\:\ \ô\¯\:\ \ /) {
    # Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML)
        $Ligne=~s/\"/<![CDATA[\"]]>/g;
        $Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)/<element>\n <data type=\"forme\">$2<\/data>\n <data type=\"categorie\">$3<\/data>\n <data type=\"lemme\">$1<\/data>\n<\/element>/;
        print Sortie $Ligne;
    }
    }
}
# Fin de fichier
sub fin {
   
    print Sortie "</document>"."\n"."</PARCOURS>"."\n";
    system ("rm","Cordial.txt","Cordial.cnr");
}

# Fermeture des tampons
sub ferme {
    close(Entree);
    close(Sortie);
}


Fichier obtenu : outcordial.cnr.xml (Attention gros fichier -voir un extrait-)

AFFICHAGE DES RESULTATS

On peut utiliser un feuille XSL pour afficher les informations contenues dans les fichiers XML créés par les programmes de différentes façon.

Grâce à cette feuille de style XSL (adaptée de la feuille XSL qui nous a été fournie), on peut générer cette page (Attention gros fichier -voir un extrait-) .

INDEX