menu menu2
1
2
3
4
5

Boîte à Outils 2



Une représentation des sorties XML de BAO 2:

Arborescence

Pour obtenir le résultat ci-dessus, il faut étiqueter les sorties XML de BAO 1 par TreeTagger puis on les transforme par XSLT en format HTML.

Un peu de présentation pour BAO 2:

Dans l’étape BAO 2, il s'agit d'utiliser des outils d'annotation afin d'étiqueter les sorties textuelles de la BAO 1. L'étiquetage morphosyntaxique nécessite d'avoir déjà segmenté le texte en tokens. Chaque forme est associée à un lemme et une catégorie syntaxique. Les deux logiciels à notre disposition sont Cordial et TreeTagger

Cordial

Notez que Cordial ne supporte pas les fichiers au-dessus d’une certaine taille, et les fichiers à traiter sont uniquement avec les sorties TXT. Les fichiers doivent être en ISO-8859-1, c’est à dire qu’on doit convertir notre fichiers (UTF-8) en ISO.

Transcodage

Il y a 3 méthodes simples mais manuels que l’on a essayé, la première été conseillée par notre professeur en utilisant Word sous Windows. Deuxième , sous Mac OS l’éditeur TextWrangler peut convertir l’encodage au moment que l’on fait copy-coller et sauvegarder. Troisième, une ligne de commande Perl, il suffit de taper le code ci-dessous:

perl -MEncode -ne 'print encode("iso-8859-1",decode("utf8",$_))' fichier_à_convertir.txt>fichier_converti.txt

Utilisation

Pour étiqueter avec Cordial : ouvrir le fichier TXT à étiqueter, puis Syntaxe --> étiquetage de texte. Ensuite, il faut appliquer les paramètres de l'étiquetage avant de lancer le programme :

Paramètres de Cordial

Le Résultat

Tout processus d'étiquetage ne comprend qu’une étape de segmentation de texte en tokens et une étape d'étiquetage de ces tokens. La segmentation est automatiquement effectuée par le logiciel Cordial avant l'étiquetage à proprement dit. Le résultat est un fichier au format .cnr présentant sous forme de tableau le token suivi de son lemme et de sa catégorie syntaxique :

de de PREP 1 1 NCMIN Ma mon DETPOSS chance chance NCFS avec avec PREP Duras Duras NPSIG , , PCTFAIB c' ce PDS est être VINDP3S sa son DETPOSS voix voix NCFIN captivante captivant ADJFS Entretien entretien NCMS . . PCTFORTE Pierre Pierre NPMS Assouline Assouline NPI ...

Notez que ça arrive souvent des erreurs, par exemple: mauvais choix de catégorie syntaxique.

[ TOP]

Tree Tagger

Utilisation

TreeTagger est un “open source” qui sert à annoter du texte pour les catégories syntaxiques et les lemmes en beaucoup de langues. Il est disponible en ligne de commande qui permet d’intégrer l’étiquetage du corpus dans le programme du BAO1.

Il faut passer 2 étapes pour étiqueter les textes:

Etape 1: Segmenter en utilisant le programme tokenise-fr.pl :

perl tokenise-fr.pl toto.txt > toto_segmente.txt

Etape 2: Etiqueter le fichier segmenté, dans l'ordre : tree-tagger [fichier Lib] [options] [fichier segmenté] :

tree-tagger french-utf8.par -lemma -token -no-unknown -sgml fichier_segmente.txt > fichier_etiquete.txt

L'option-lemma sert à indiquer les lemmes, -token à afficher les tokens, -no-unknown à ne pas indiquer si le token est inconnu, et -sgml à ne pas traiter les balises.

Le Résultat

Le fichier en sortie contient un mot par ligne. Chaque mot, comme avant, est décrit par trois colonnes, mais l'ordre des colonnes est différent : la forme, la catégorie syntaxique et le lemme.

du PRP:det du Monde NAM Monde , PUN , le DET:ART le 18 NUM @card@ janvier NOM janvier en PRP en milieu NOM milieu de PRP de matinée NOM matinée , PUN , avait VER:impf avoir l' DET:ART le apparence NOM apparence anodine ADJ anodin d' PRP de un DET:ART un lien NOM lien vers PRP vers le DET:ART le site NOM site de PRP de la DET:ART le BBC ABR BBC . SENT . ...


[ TOP]

Intégration au programme

On peut intégrer TreeTagger dans le script de la BAO 1 pour produire une sortie XML avec chaque mot étiqueté pour sa catégorie syntaxique et son lemme. La méthode est la même pour les deux programmes.

La création d'un fichier temporaire pour stocker le texte:

open(TEMP, ">:encoding(utf-8)"); print TEMP $texte; close(TEMP);

Intégration:

system("perl tokenise-utf8.pl ./TEMP.txt | tree-tagger.exe french.par -lemma -token -no-unknown -sgml > TreeTagger.txt");

Convertir les fichier en XML via le script "treetagger2xml-utf8.pl' fourni :

system("perl ./treetagger2xml-utf8.pl etiquetage.txt utf-8 ")

Lecture du fichier étiqueté + le renvoie de contenu :

open(TaggedOUT,"<:encoding(utf-8)","etiquetage.txt.xml"); my $texte_tag=" "; while (my $linge=) { { $texte_tag.=$linge; } close(TaggedOut); return $texte_tag;

Les Sorties_bao2 contient les fichiers XML produits par treetagger2xml.pl, les titres et descriptions étiquetés sont comme suit:

<?xml version='1.0' encoding='utf-8'?> <EXTRACTION> <NOM>WU_et_TAN<NOM> <IDEE> <file> <date>./2014/Apr/01/19-00-00/0,2-3260,1-0,0.xml</name> <name>2014</date> <items> <item> <title> <element> <data type="type">[classe grammaticale]</data> <data type="lemma">[lemme]</data> <data type="string">[token]</data> </element> ...... </title> <description> <element> <data type="type">[classe grammaticale]</data> <data type="lemma">[lemme]</data> <data type="string">[token]</data> </element> ...... </description> </item> ...... </items> </file> ...... </IDEE> </EXTRACTION>


[ TOP ]


XSL

Ces fichiers XML étiquetés peuvent être transformés en HTML à l'aide d'une feuille de styles ci-dessous (une partie):

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" version="4.0" encoding="utf-8" indent="yes"/> <xsl:template match="EXTRACTION"> <xsl:variable name="rubrique" select="local-name(./*[preceding-sibling::NOM])"/><!-- nom du rubrique --> <html> <head> <meta charset="utf-8"/> <link rel="stylesheet" type="text/css" href="bao2.css"/><!--css--> <title><xsl:value-of select="$rubrique"/></title><!-- nom du rubrique --> </head> <body> <div id="contenu"><!-- conteneur --> <h1><xsl:value-of select="$rubrique"/></h1><!-- titre --> <table> <xsl:apply-templates select="*/file"/><!-- contenu du tableau --> ... ... <!-- tous les fichier --> <xsl:template match="file"> <xsl:if test="./items/item"><!-- vérifier des items --> <xsl:if test="position() &lt; 10"> <xsl:variable name="fullname" select="./name"/><!-- nom du fichier --> ... ...


Un exemple de rubrique ECONOMIE étiqueté:

Arborescence

[ Visualiser ]

Crée par Chang TAN et Si WU, Plurital 2015