Documents Structurés

Site réalisé dans le cadre du cours de Documents Structurés par Kelly MASCLEF et Julie SAUVAGE.

Visiter le site

Projet Encadré 1

Programmation et Projet Encadré 1 du Semestre 1 par Kelly MASCLEF et Julie SAUVAGE (et avec Julie BELIAO).

Visiter le site

Projet Encadré 1

Programmation et Projet Encadré 1 du Semestre 1 par Ilaria TIDDI (avec Marcelo MATOSO et Camille DOUDANE).

Visiter le site

TAL

L5T53 / L5T55 (BASH/Emacs/Python) par Kelly MASCLEF

Visiter le site

Environnement-TAL

L5T53 / L5T55 (BASH/Emacs/Python) par Julie SAUVAGE

Visiter le site

Programmation pour le TAL avec PERL

L6T54 / L6T55 (PERL) par Julie SAUVAGE

Visiter le site

Bienvenue chez Perl

L6T54 / L6T55 (PERL) par Kelly MASCLEF

Visiter le site

Boîte à Outils 2

Le but de la deuxième boîte à outils est de procéder à l'étiquetage morpho-syntaxique de chaque token/mot des fils RSS récupérés. Pour cela, on dispose de deux étiqueteurs:

  • Cordial: ce programme passe par une interface graphique. Pour étiqueter un texte, il faut le donner à Cordial au format texte brut (les versions les plus récentes de Cordial prennent en charge l'encodage en UTF-8 mais les anciennes ne reçoivent que l'ISO-8859-1) afin de récupérer un fichier à l'extension .cnr. Dans la BàO1 nous avions prévu une sortie en texte brut pour Cordial.
  • TreeTagger: il s'agit d'un programme en ligne de commande que nous avons directement intégré à l'un de nos scripts de la BàO1. TreeTagger procède à l'étiquetage, puis nous utilisons un script qui transforme le résultat en un fichier XML.
  • Avec Cordial

    On ouvre dans Cordial le fichier texte que l'on a créé spécialement dans la BàO1 et qu'on avait sorti en ISO-8859-1

    open (FILEOUTTXT,">:encoding(iso-8859-1)","SORTIE-$nomRub.txt")

    On n'oublie surtout pas de modifier les paramètres pour obtenir le format désiré:



    Pour visualiser le résultat, cliquez ici


    Avec TreeTagger

    Pour l'étiquetage avec TreeTagger, nous avons intégré au script à la loyale de BàO1 quelques lignes supplémentaires.

  • On crée deux nouveaux fichiers (dans l'étape de création des fichiers du script): le premier sera l'entrée pour TreeTagger qui regroupe tous les titres et descriptions de la rubrique traitée, le second est le fichier de sortie TreeTagger qui contient l'étiquetage:
  • #-------CRÉATION DES FICHIERS EN SORTIE-------
    #On crée un fichier pour chaque sortie différente (TXT, XML)
    
    my $TXT4TT="Entrée_TreeTagger.txt";
    my $TreeTagger="Sortie_TreeTagger.txt";
    
    open (OUTXML,">:encoding(utf-8)",$TXT4TT);

  • Dans la procédure filtrageTexte, au moment où l'on écrit les résultats du filtrage dans des sorties XML afin de récréer des fils au format désiré, on ajoute:
  • #On écrit les sorties nécessaires dans les fichiers
    print OUTXML "$titre $resume";

  • Le fichier d'entrée pour la procédure d'étiquetage via TreeTagger est maintenant créé, il ne reste plus qu'à lancer ladite procédure:
  • sub etiquetage {
    	system("perl ./TreeTagger/cmd/tokenize.pl $TXT4TT | 
    	./TreeTagger/bin/tree-tagger -token -lemma -no-unknown -sgml 
    	./TreeTagger/lib/french-utf8.par > $TreeTagger");
    	system("perl ./treetagger2xml__modif.pl $TreeTagger");
    }

    La syntaxe de TreeTagger: tree-tagger [options] <paramètres> <textein> <texteout>

    La commande system permet de lancer un processus à partir de Perl. On va d'abord lancer la tokenization sur le fichier, le résultat est ensuite envoyé à tree-tagger (auquel on a spécifié un fichier de configuration en français). Les différentes options permettent d'avoir l'étiquetage en tokens (mots), en lemmes, etc. L'option -no-unknown permet de ne pas avoir de catégorie UNKNOWN dans le fichier étiqueté. Enfin, l'option -sgml permet à TreeTagger de ne pas interpréter les balises!


    Pour télécharger ce script, cliquez ici
    Pour visualiser ce script, cliquez ici
    Pour visualiser le résultat, cliquez ici



    Une fois qu'on a obtenu un fichier au format texte brut contenant l'étiquetage, on peut le convertir au format XML via un autre script (qui nous a été fourni et que nous n'avons pas eu à modifier dans la mesure où le résultat obtenu est tout à fait satisfaisant).

  • On lance toutes les procédures:
  • &ouvre;
    &entete;
    &traitement;
    &fin;
    &ferme;
  • Il y a donc 5 procédures, la première permettant d'ouvrir en entrée le fichier passé en premier argument, et de créer un fichier en écriture qui contiendra le résultat:
  • # Récupération des arguments et ouverture des tampons
    sub ouvre {
        $FichierEntree=$ARGV[0];
        open(Entree,$FichierEntree);
        
        $FichierSortie=$FichierEntree.".xml";
        $FichierSortie=~ s/\.txt//;
        open(Sortie,">$FichierSortie");
    }
  • On crée l'en-tête du fichier en sortie, qui est un fichier XML:
  • # En-tête de document XML
    sub entete {
        print Sortie "\n";
        print Sortie "\n";
        print Sortie "<document>\n";
        print Sortie "<article>\n";
    }
  • On traite le fichier en remplaçant les entités qui ne sont pas supportées au format XML ou qui risquent de causer des erreurs (nous avons seulement supprimé les retours à la ligne pour avoir le résultat sur une seule ligne):
  • 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>
    		<data type=\"type\">$2<\/data>
    		<data type=\"lemma\">$3<\/data>
    		<data type=\"string\">$1<\/data> <\/element>/;
    	    print Sortie $Ligne;
    	}
        }
    }
  • On ferme les balises du fichier XML créé en sortie:
  • sub fin {
        print Sortie "</article>\n";
        print Sortie "</document>\n";
    }
  • Il ne reste plus qu'à fermer les tampons:
  • sub ferme {
        close(Entree);
        close(Sortie);
    }

    Pour télécharger ce script, cliquez ici
    Pour visualiser ce script, cliquez ici
    Pour visualiser le résultat, cliquez ici



    [Haut de Page]