INDEX


Programmes

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

Fichiers XML de résultat

Fichier au format GraphML (Treetagger)

Fichier au format GraphML (Cordial)

Feuilles XSL

Feuille de transformation de GML en format Pajek (fournie)

Claire Guiraud

BOITE A OUTILS 3

Ojectif :

Extraire des patrons morpho-syntaxiques à partir des textes étiquetés et formater les résultats de manière à pouvoir les étudier avec le logiciel de visualisation de graphe Pajek.

Données de base :

Programmes fournis en cours :

trouve_terme.pl

Ce programme récupère les suites de mots selon des patron morpho-syntaxiques determinés et avec l'étiquetage de TreeTagger et Cordial. Le programme a été modifié de manière à fonctionner avec les fichiers Cordial, et les deux versions du programme (une pour les fichiers Treetagger une pour les fichiers Cordial) ont été intégrées dans un module (patrons.pm)

patron2graphml.pl

Ce programme formate la liste des candidats sélectionnés et crée un document au format Graphml, qui donne la liste des candidats repérés, mais qui tient également compte de leur fréquence. Ce programme a été intégré à un module, qui peut être utilisé pour les fichiers de candidats issus de Treetagger comme de Cordial(graphe.pm)

GraphML2Pajek.xsl

Cette feuille de style transforme le fichier gml en un fichier texte lisible avec le logiciel de visualisation de graphe Pajek. Son utilisation est intégrée au module graphe.pm

Le programme :
Le programme bao.pl est le programme qui est appelé pour effectuer toutes les fonctions de la boite à outils, (y compris les fonctions présentées dans les BAO 1 et 2). Il est utilisé pour vérifier que le format d'appel du programme est bon (utilisation des bonnes options), et appelle les modules nécessaires. Il prend obligatoirement l'option -T ou -C (pour sélectionner un étiquettage par TreeTagger ou par Cordial), et optionnellement les options -p (si l'on souhaite rechercher des candidats à partir d'une liste de patrons), -g (si l'on souhaite construire les fichiers de graphe), et -x (si l'on souhaite obtenir un fichier xml des contenus extraits de l'arborescence).

use Getopt::Std;    #permet d'utiliser les options en ligne de commande
use utf8;

use arbo;
    #module de parcours de l'arborescence. Contient une fonction pour TT et une pour Cordial
use treetagger;       
use text2xml;   
    #module de transformation des données extraites en fichier xml. Deux fonctions séparées pour chaque type d'extraction (TT ou Cordial)
use patrons;
    #module issu du programme trouve_terme.
use graphe;
    #module issu du programme patron2graphml.pl

getopts( "TCxp:g", \%opts ) or print_usage();
    #on récupère les options passées en ligne de commande.
    #la fonction print_usage affiche un bref message d'aide et quitte le programme

#=========Quelques tests avant tout : ===========================

#on vérifie qu'on a bien au moins un argument donné en ligne de commande lors de l'appel du programme (le répertoire de l'arborescence à parcourir).
if (@ARGV ne 1) {
    print "vous n'avez pas specifie de repertoire de fichiers source!\n\n";
    print_usage();
}

##on vérifie qu'un étiquetteur est spécifié dans les options (soit -T soit -C):
if ((!defined($opts{C}) && !defined($opts{T}))) {
    print "vous devez choisir votre etiquetteur : -C pour Cordial ou -T pour TreeTagger\n\n";
    print_usage();
}

#si l'option -g est appelée (création d'un graphe) on vérifie qu'un fichier de patrons est bien donné aussi (nécessaire à la création du graphe!)
if ((defined($opts{g}) && !defined($opts{p}))) {
    print "vous n'avez pas specifie de fichier de patrons (option -p)!\n\n";
    print_usage();
}


#================Quelques options générales et le programme de base : ===========================


my $rep="$ARGV[0]";
my $annote='treetag.txt';
my $texte="";
   
#===============================Fonctions appelées pour l'option -T=====================

if (defined($opts{T})) {

    &arbo::ParcoursArboTT($rep);    #on appelle le parcours de l'arborescence sur le dossier
    &treetagger::TT($annote);      #on appelle treetagger sur le fichier créé par &arbo
    print "le fichier contenant le resultat de l'extraction est texte.txt
Le fichier contenant le resultat de l'extraction annotee par TreeTagger est $annote\n";

#si l'option )x est précisée on crée le fichier xml a partir du fichier texte de l'extraction
    if (defined($opts{x})) {   
        $fichierxml=&text2xml::TTtext2xml($annote);
        print "le fichier xml contenant le resultat de l'extraction est : $fichierxml\n";
    }
#si une l'option -p est précisée on appelle la fonction de repérage des candidats à partir du fichier de patrons juste après l'option -p
    if (defined($opts{p})) {
        my $pattrons=$opts{p};   
            $candidats=&patrons::TTpatrons($annote,$pattrons);
            print "Le fichier contenant les candidats-termes est $candidats\n";
    }

}

#===============================Fonctions appelées pour l'option -C=================
if (defined($opts{C})) {

#on appelle le parcours de l'arborescence sur le dossier :
        &arbo::ParcoursArboCordial($rep);
    print "le fichier contenant le texte a annoter est texte.txt\n";
    print "Utilisez Cordial pour annoter le fichier et entrez le nom du fichier annote par Cordial : \n";
    $annote=<STDIN>;   #on récupère le nom du fichier créé par Cordial
    chomp($annote);

    if (defined($opts{x})) {
#si l'option )x est précisée on crée le fichier xml a partir du fichier texte de l'extraction
        $fichierxml=&text2xml::Cordialtext2xml($annote);
            print "le fichier xml contenant le resultat de l'extraction est : $fichierxml\n";
    }

#si une l'option -p est précisée on appelle la fonction de repérage des candidats à partir du fichier de patrons juste après l'option -p
    if (defined($opts{p})) {
            my $pattrons=$opts{p};     #ou prevoir un acces au fichier via l'option -p
            $candidats=&patrons::Cordialpatrons($annote,$pattrons);
        print "Le fichier contenant les candidats-termes est $candidats\n";
    }


}

#===========Dans tous les cas si le graphe est demandé : ===========================
#on passe le nom du fichier de candidats à la fonction de création des fichiers de graphe :
if (defined($opts{g})) {
    ($pajekxml)=&graphe::CTTcand2gml('candidats.txt');   
#$pajekxml contient le format xml des graphes et $pajektxt contient le fichier a donner au programme Pajek
    ($pajektxt)=&graphe::CTTgml2pajek($pajekxml);
        print "Le fichier a utiliser pour creer le graphe avec le logiciel Pajek est $pajektxt\nLe fichier de graphe au format xml est $pajekxml\n";
}



#==============


sub print_usage {
    print "USAGE : perl bao.pl -C|-T [options] repertoire_a_parcourir\n
avec : \n
-T ou -C (obligatoire) permet de choisir entre un traitement avec TreeTagger ou Cordial
-x cree un fichier xml formattant les contenus extraits de l'arborescence\n
-p [fichier_de_patrons]\tlance une recherche des patrons specifies dans le fichier sur les contenus extraits. ATTENTION le fichier de patrons\n
-g (seulement si -p est specifie) cree un fichier de graphe (au format spajek) de representation des candidats trouves avec le fichier de patrons \n";
    exit;
}


Fichiers obtenu (extraits) :

Avec Treetager (patrons recherché : NOM ADJ)

fichier passé en entrée à TreeTagger (latin1)

fichier créé par TreeTagger

fichier de candidats repérés (utf8)

fichier texte au format pajek (utf8)

fichier gml

Exemple de visualisation avec Pajek

Avec Cordial (patrons recherché : NC[A-Z]+ ADJ[A-Z]+

fichier passé en entrée à Cordial (utf8)

fichier de candidats repérés (utf8)

fichier texte au format pajek (utf8)

fichier gml

Exemple de visualisation avec Pajek



INDEX