Cyril Grouin — [email protected]
1 Définitions
– Base de données :ensemble structuré de données (feuille Excel).
Id Ville Pays 01 Paris France 02 Dublin Irelande 03 Tbilissi Géorgie
– Données structurées :données dont les éléments sont catégorisés (valeurs d’une base de données, étiquetage).
– Données non structurées :données présentes telles quelles (texte libre), sans traitement complémentaire.
– Mot :unité significative empirique de la grammaire traditionnelle.
EXERCICE : souligner les mots de la phrase d’exercice suivante : Le chat aime s’installer derrière les fenêtres.
– Token :suite de caractères entre deux espaces.Tokénisation :processus qui consiste à découper un texte en tokens (séparer les ponctuations des mots).
EXERCICE : découper la phrase de l’exercice en tokens : Xq
– Lemme :forme générique des différentes formes d’un mot (infinitif, forme masculin/singulier).
EXERCICE : trouver les lemmes de la phrase d’exercice (voir tableau 1, p. 13) : Xq
– Partie du discours/POS :étiquettes morpho-syntaxiques.
EXERCICE : trouver les étiquettes en parties du discours de la phrase d’exercice (voir tableau 1, p. 13) : Xq
2 Fouille de données vs. Fouille de textes
La fouille de données (data mining) renvoie à l’ensemble des méthodes et algorithmes pour l’exploration et l’analyse de gros volumes de données (bases de données informatiques) dans la perspective d’une aide à la prise de décision. La fouille de données repose sur la mise en évidence de règles, de tendances invisibles pour un analyste humain.
– La fouille de données(i)repose sur des bases relationnelles et(ii)traite des données structurées.
– La fouille de textes (text mining) repose sur des données textuelles non structurées.
Pourquoi faire de la fouille de données/textes ?
– Les données sont disponibles et elles le sont massivement ;
– La production massive de données doit s’accompagner d’outils d’exploitation de ces données ;
– L’informatique permet de traiter toujours plus de documents : capacités de stockage, puissance de calcul, etc.
3 Quels éléments utiliser dans les textes ?
3.1 Les mots
– mots simples : tokenization (récupération des chaînes de caractères entre deux espaces) : «chat», «fenêtre» – mots composés : «pomme-de-terre»
– formes composées : «y a t-il ?»
– mots non fléchis : lemme (forme générique d’un mot : l’infinitif pour un verbe, le singulier pour les noms, le masculin singulier pour les adjectifs), lemmatisation (processus qui consiste à remplacer un mot par son lemme) : voir page 13 – faut-il conserver tous les mots ? Faut-il supprimer certains mots ?
– mots fréquents (statistiques), quel seuil ?
– mots outils (articles, conjonctions, pronoms, etc) : – utiles : typage de textes, reconnaissance de la parole – inutiles : indexation de documents.
– n-grammes : succession de n mots consécutifs : – 1 mot : unigrammes de mots ;
– 2 mots consécutifs : bigrammes de mots ; – 3 mots consécutifs : trigrammes de mots.
EXERCICE : relever les unigrammes de mots dans la phrase « Le chat aime s’ installer derrière les fenêtres . » Xq
EXERCICE : relever les bigrammes de mots dans la phrase « Le chat aime s’ installer derrière les fenêtres . » Xq
EXERCICE : relever les trigrammes de mots dans la phrase « Le chat aime s’ installer derrière les fenêtres . » Xq
3.2 Les entités nommées
Ce sont des éléments du texte (mots, chiffres), qu’il est possible de catégoriser au niveau sémantique. Lors de la conférence MUC-6 (1995), trois catégories d’entités nommées ont été définies :
– noms de personnes (nom, prénom) ; – noms de lieux (ville, région, pays) ;
– noms d’organisation (entreprise, organisation).
Et ces catégories ont été complétées par des éléments numériques : dates (27/04/2015), montants (GEL 7).
EXERCICE : souligner les entités nommées dans le texte suivant (extrait d’un article1du journalLe Monde, 27/10/2013).
En Kakhétie, région centrale de l’industrie vinicole géorgienne située à 160 kilomètres au nord-est de Tbilissi, l’humeur des habitants suit la courbe de la récolte. Quand la vendange est abondante et les prix d’achat élevés, comme c’est le cas cette année, les Kakhétiens ont le cœur léger.
« On peut dire que nous avons le vin dans le sang », explique Rezo. Petit propriétaire terrien, il officie à la dégusta- tion des crus locaux (Mukuzani, Kidzmarauli, Saperavi et d’autres) dans le domaine musée des Princes Tchavtcha- vadze, perché sur les hauteurs du petit bourg de Tsinandali. La cuvée 2013 s’annonce savoureuse, Rezo se frotte les mains. Les mauvais souvenirs sont oubliés.
3.3 Les caractères
– identification de la langue (environ 100 caractères nécessaires), deux étapes :
1. apprentissage : tri-grammes de caractères appris sur de gros corpus pour chaque langue à identifier ;
2. document inconnu : relevé des trigrammes de caractères et comparaison avec ceux de chaque langue (incrémen- tation de compteurs).
– typage de textes : par fréquence des caractères.
EXERCICE : en fonction de vos connaissances du géorgien et du français, quelles différences voyez-vous entre ces deux langues au niveau des caractères ?
1. http://www.lemonde.fr/europe/article/2013/10/27/telavi-en-georgie-du-vin-des-touristes-et-un-zest-de-staline_
3503635_3214.html
4 Les mesures d’évaluation
4.1 Quoi ? Comment ?
Différents types d’évaluation
– Typage (classification, recherche d’information) : un document est-il bien classé(objectif/subjectif)? Une entité nom- mée est-elle correctement étiquetée(personne, lieu, organisation)?
– Frontière (repérage d’entités nommées) : les frontières de l’entité sont-elles correctes (début et fin de la portion à annoter dans un texte) ?
Différents niveaux d’évaluation
– Mono-classe (recherche d’information) : quels documents correspondent à la requête d’un utilisateur ? – Multi-classes (classification) : catégories d’entités nommées.
Définitions Pour une étiquette donnée,
– Vrais positifs : nombre d’éléments étiquetés de la même manière dans l’hypothèse et la référence ; – Faux positifs : nombre d’éléments de l’hypothèse absents de la référence ;
– Faux négatifs : nombre d’éléments de la référence absents de l’hypothèse ; – Vrais négatifs : nombre d’éléments absents de la référence et de l’hypothèse.
Vrais positifs Faux négatifs
Vrais négatifs
Faux positifs
référence hypothèse
4.2 Mesures
Rappel Le « rappel »(recall), « sensibilité »(sensitivity)ou « taux de vrais positifs », est une mesure quantitative (for- mule 1). Elle mesure le nombre d’éléments correctement étiquetés par le système (vrais positifs) rapporté au nombre d’éléments étiquetés dans la référence (vrais positifs et faux négatifs).
Rappel= vrais positifs
vrais positifs+faux négatifs (1)
Précision La « précision »(precision), ou « valeur prédictive positive », est une mesure qualitative (formule 2). Elle mesure le nombre d’éléments correctement étiquetés par le système (vrais positifs) rapporté au nombre total d’éléments étiquetés par le système (vrais et faux positifs).
Précision= vrais positifs
vrais positifs+faux positifs (2)
F-mesure Moyenne harmonique pondérée du rappel et de la précision
F-mesure=(1 +β2) × Précision × Rappel β2 × Précision + Rappel La valeur attribuée àβpermet :
– soit d’équilibrer les poids du rappel et de la précision (β=1) ;
– soit de favoriser le rappel par rapport à la précison (β=2), ou la précision par rapport au rappel (β=0.5).
4.3 Exercices
4.3.1 Recherche d’information
Un moteur de recherche a indexé le contenu textuel des documents suivants (i.e. le moteur de recherche a mémorisé l’association entre chaque mot du texte et le numéro du document) :
1. Un projet de loi au printemps pour réformer la psychiatrie.
2. A Arbury Park, un projet immobilier “moderne et séduisant” paralysé par la crise économique.
3. Récession, chômage : le gouvernement prévoit que la crise sera longue.
4. Japon : un train atteint la vitesse record de 603 km/h.
5. Un champagne intact après avoir passé 170 ans sous la mer.
Un utilisateur utilise ce moteur de recherche et effectue la requête suivante : Projet OK
Le moteur de recherche renvoie les documents 1, 2 et 3 à l’utilisateur. En fonction du contenu de chaque document d’une part, et du contenu de la requête d’autre part, calculez(i)le nombre de vrais positifs(nombre de documents renvoyés par le moteur qui correspondent à la requête), faux positifs(nombre de documents renvoyés par le moteur qui ne correspondent pas à la requête) et faux négatifs(nombre de documents non trouvés par le moteur qui correspondent à la requête), puis (ii)les valeurs de rappel, précision et F-mesure.
Vrais positifs Rappel
Faux positifs Précision
Faux négatifs F-mesure
4.3.2 Repérage d’entités nommées (REN), classification
Pour un travail de repérage d’entités nommées parmi trois catégories(personne, lieu, date), nous disposons des annotations de référence (i.e. la liste des entités qu’un système doit identifier dans un texte). Nous avons lancé un système automatique de repérage d’entités nommées sur ce texte. Ce système produit des annotations, certaines sont correctes, d’autres sont fausses. Votre objectif est d’évaluer la qualité des annotations produites par le système, en comparant les annotations du système aux annotations de référence.
Annotations de référence : Le cinéaste français
personneGeorges Lautner , auteur des
personneTontons flingueurs , est mort,
datevendredi 22 novembre à
lieuParis , à l’âge de 87 ans, a annoncé l’ancien cascadeur
personneRémy Julienne , ci- tant son entourage proche. Le metteur en scène s’est éteint à la suite d’une « longue maladie », a précisé
personneRémy Julienne , qui avait effectué les cascades dans nombre de ses films. Avec une quarantaine de films à son actif en soixante ans de car- rière,
lieuGeorges Lautner aura tourné avec les plus grands.
Annotations du système : Le cinéaste français
personneGeorges Lautner , auteur des
personneTontons flingueurs , est mort,
datevendredi 22 novembre à
lieuParis , à l’âge de
date87 ans , a annoncé l’ancien cascadeur Rémy Julienne, citant
son entourage proche. Le metteur en scène s’est éteint à la suite d’une « longue maladie », a précisé Rémy Julienne, qui avait effectué les cascades dans nombre de ses films. Avec une quarantaine de films à son actif en soixante ans de carrière,
lieuGeorges Lautner aura tourné avec les plus grands.
Exercice Comparez les annotations de référence avec les annotations produites par le système, et calculez en complétant le tableau suivant :(i)le nombre de vrais positifs, faux positifs et faux négatifs pour chaque catégorie, puis(ii)les valeurs de rappel, précision et F-mesure pour chaque catégorie.
Date Lieu Personne Vrais positifs
Faux positifs Faux négatifs Rappel Précision F-mesure
5 Corpus
5.1 Définitions
Corpus : ensemble de documents (audios, vidéos, textes) contenant des données à exploiter.
– corpus enrichi/annoté : corpus dont les documents ont bénéficié de traitements complémentaires (étiquetage morpho- syntaxique, sémantique, méta-informations, etc.) ;
– corpus alignés/parallèles : alignement de deux corpus (deux langues : français/anglais, spécialité/générale) à un/plu- sieurs niveaux (paragraphe, phrase, mot) ;
– corpus comparables : corpus non parallèles mais traitant du même sujet de manière différente ;
– corpus de référence : corpus que le responsable considère comme étant la version à atteindre par des moyens automa- tiques (version alignée/annotée de référence).
5.2 Annotation de corpus
Annotation : processus qui consiste à apporter des informations supplémentaires à un corpus(informations syntaxiques, morphologiques, sémantiques). Pour annoter des documents, il est nécessaire de disposer d’un guide d’annotation : document qui indique quoi/comment annoter (définitions, exemples, contre-exemples), dans quel objectif.
Le résultat de l’annotation de documents peut servir, soit directement (repérage d’entités nommées), soit être réutilisé par d’autres systèmes (dans ce cas, les annotations apportent des informations utiles pour d’autres traitements). De manière plus spécifique, le résultat de l’annotation manuelle peut être utilisé pour évaluer la qualité des annotations automatiques.
documents documents
annotés annotation manuelle (outil BRAT)
documents annotés
documents annotés annotation automatique (outil WAPITI)
liste d'entités nommées repérage d'entités nommées
lexiques
règles
annotation automatique (outil DARK)
FIGURE1 – Annotations manuelles et automatiques de corpus
5.2.1 Représentation des annotations
– annotations embarquées : annotations reportées directement sur le corpus (balises XML)
<v i l l e> P a r i s < /v i l l e> e s t en <p a y s>France< /p a y s> .
– annotations débarquées : annotations renseignées dans un fichier extérieur au fichier de données (référence au texte par des indices de position de ligne, de caractère/de token)
Fichier textuel Fichier d’annotations
Paris est en France . T1 ville 1 6 Paris “Paris” est du 1er au 6e caractère T2 pays 14 20 France “France” est du 14e au 20e caractère
5.2.2 Modalités d’annotation
– annotation manuelle : processus d’annotation réalisé par un humain – annotation automatique : processus d’annotation réalisé par une machine
– pré-annotation : processus d’annotations grossières (base de travail) devant être repris/complété par un annotateur humain
<v i l l e|prénom> P a r i s < /v i l l e|prénom> e s t en <v i l l e|prénom>France< /v i l l e|prénom> .
5.3 Annotation manuelle
Guide d’annotation On cherche à annoter tous les noms de lieux présents dans un corpus d’extraits d’articles Wikipédia sur les différents pays du monde, rédigés en français. Quatre catégories de lieux sont utilisées, du plus générique au plus spécifique (cf. figure 2) :
– régions (régions du monde qui regroupent plusieurs pays) :Asie, Caucase, Europe;
– pays (forme courte des pays, correspondant à une dénomination officielle, pour un pays reconnu comme tel au niveau international) :États-Unis, France, Géorgie;
– territoires (partie d’un pays, plus ou moins autonome, mais pas indépendant) :Californie, Floride; – villes :Paris, Tbilissi, Washington.
Régions Pays Territoires Villes
FIGURE2 – Hiérarchisation des catégories utilisées pour l’annotation de corpus
Annoter les noms de lieux relevant des quatre catégories précédentes en respectant les règles d’annotation suivantes : – annoter toutes les occurrences de lieux dans un document, y compris si la même occurrence revient plusieurs fois ; – annoter les formes courtes, pas les formes longues : on annote « Finlande » mais pas « République de Finlande » ; – annoter uniquement les noms écrits en français : on annote « Finlande » (version française) mais pas « Suomi » ou
« Suomen » (versions finnoises) ;
– annoter les noms de lieux actuels, pas les anciens noms : on annote « Géorgie » mais pas « Colchide » et « Ibérie » (anciens royaumes disparus).
Consignes
1. Télécharger l’archive suivante :https://perso.limsi.fr/grouin/tbilissi/exercices.tar.gz 2. Copier le répertoirecorpus/brat/dans le répertoirebrat-v1.3_Crunchy_Frog/data/
3. Lancer le serveur depuis les lignes de commandes : cd brat-v1.3_Crunchy_Frog/
python standalone.py
4. Ouvrir un navigateur à l’adresse :http://127.0.0.1:8001
5. Se connecter (nom d’utilisateur et mot de passe) puis sélectionner le corpuscorpus/brat/
6. Annoter toutes les noms derégions, pays, territoires etvillescontenus dans les documents textuels de ce corpus en respectant le guide d’annotation ci-dessus.
5.4 Annotation automatique
5.4.1 Méthodes symboliques
Méthodes qui reposent sur des connaissances d’expert formalisées en listes/expressions régulières – listes : fichier contenant des données relevant d’une seule catégorie (adjectifs, noms de ville) ;
– dictionnaire : ensemble des mots (lemmes) d’une langue classés par ordre alphabétique (mot, définition, exemple, information morphologique, prononciation) ;
– thesaurus : ensemble des mots (lemmes) d’une langue organisés par thématiques en distingant les différents sens ; – expressions régulières : séquences de caractères qui définissent un patron de recherche : [A-Z][a-z]+
– patron syntaxique/motif : motif particulier cherché dans un texte (un mot commençant par une majuscule suivie de minuscules non accentuées) : Paris, France
5.4.2 Méthodes par apprentissage
Méthodes qui reposent sur des observations statistiques ; l’utilisateur fournit à la machine des exemples de sorties atten- dues (supposent un corpus annoté).
– formalismes : CRF (champs aléatoires conditionnels), SVM (séparateurs à vaste marge), arbres de décision – outils : CRF++, Wapiti, LibSVM, SVMLight, Weka
– caractéristiques : ensemble des informations associées à chaque token permettant de construire des modèles : – caractéristiques de surface : propriétés inférées du token (capitalisation, taille)
– caractéristiques profondes : informations morpho-syntaxiques, syntaxiques, sémantiques – caractéristiques externes : position dans le document, fréquence globale, cluster
6 Les expressions régulières
6.1 Présentation
Une expression régulière est une suite de caractères qui décrit, de manière générique, un motif qu’on souhaite identifier dans un texte, dans le but d’appliquer un traitement sur la chaîne de caractères identifiée par le motif : ajout, remplacement ou suppression. Plusieurs langages de script et commandes permettent d’appliquer des expressions régulières (grep, perl).
Les expressions régulières sont généralement indiquées entre 2 barres obliques (/regex/), sauf pour les substitutions pour lesquelles 3 barres obliques sont utilisées (s/ancien/nouveau/). Des caractères spéciaux utilisés avant et après ces barres obliques permettent de préciser la portée de ces expressions :
– Avant :s/motif/remplacement/ (le « s » indique une substitution du motif par le remplacement ; dans ce cas, la règle contient 3 barres obliques)
– Après :/motif/i (le « i » indique que le motif peut s’appliquer aussi bien sur un texte en majuscules qu’en minuscules ; le motif est insensible à la casse typographique)
– Après :/motif/g (le « g » indique que le motif sera généralisé sur l’ensemble du texte ; le motif sera appliqué sur le texte tant qu’il est possible de le faire)
– Après :/motif/gi (combinaison des deux options précédentes)
– Entre barres obliques :/^motif/ (le caractère «^» après la 1e barre oblique indique que le motif doit être trouvé au début du contenu de la variable)
– Entre barres obliques :/motif$/ (le caractère «$» avant la 2e barre oblique indique que le motif doit être trouvé à la fin du contenu de la variable)
Exemples (perl)
– Ajout :$mot="dé".$mot;(on ajoute « dé » devant le contenu de la variable$motet on enreigstre le résultat dans la variable$mot; permet de générer de modifier le sens des mots :construire→déconstruire)
– Remplacement :$texte=~s/é/e/g;(on remplace toutes les lettres « é » par la lettre « e » ; permet de désaccentuer un mot :éléphant→elephant)
– Suppression :$mot=~s/s$//;(on supprime le caractère « s » dans la variable$mots’il s’agit du dernier caractère ; permet de transformer un mot du pluriel vers le singulier :ordinateurs→ordinateur)
– Test : if ($fichier=~/\.txt/) { print "Fichier texte"; } (on teste si la variable $fichier contient l’extension « .txt »)
Il est possible de regrouper plusieurs caractères, soit en définissant un intervalle, soit en utilisant des classes de caractères.
Intervalles [0-9](tous les chiffres de 0 à 9) [0-3](tous les chiffres de 0 à 3) [a-z](toutes les lettres non accentuées en minuscules de « a » à « z ») [a-zàçéèêëîïôûù](toutes les lettres en minuscules de « a » à « z » plus les lettres accentuées utilisées en français) [A-Za-z](toutes les lettres de « a » à « z », en majuscules et en minuscules)
Classes de caractères (lua) Les classes de caractères permettent de regrouper des caractères de même valeur :
.(n’importe quel caractère) %a(n’importe quelle lettre) %c(caractère de contrôle) %d(chiffres) %l(lettre en minuscule) %p(ponctuations) %s(caractère d’espace ou de tabulation) %u(lettre en majuscule) %w(caractère alphanumérique) %x(chiffres hexadécimaux) %z(the character with representation 0).
Quantifieurs (perl, lua) Ils permettent de fixer le nombre de caractères qu’on cherche à faire correspondre dans un motif :+(1 caractère ou plus) *(0 caractères ou plus, chaîne de caractères la plus longue) -(0 caractères ou plus, chaîne de caractères la plus courte) ?(0 ou 1 caractère).
Exemples (lua)
– /%u?%l+/ (0 ou 1 caractère en majuscule, au moins 1 caractère en minuscule ; ce motif permet d’identifier « Paris » ou « Tbilissi » dans un texte)
– /(19|20)%d%d/ (soit « 19 », soit « 20 » suivi de deux chiffres ; permet d’identifier des années : « 1995 », « 2015 »)
6.2 Exercices
Dans le tableau suivant, indiquer le résultat de l’application des expressions régulières sur le contenu textuel présenté.
Texte Expression régulière Résultat
1995 /%a/
mars 1995 /^%a+/
le chat boit le lait s/chat/chien/
Pour le contenu textuel présenté ci-dessous, en fonction du résultat qu’on souhaite obtenir, indiquer quelle expression régulière permet d’atteindre ce résultat.
Texte Résultat voulu Expression régulière
1995 1996
mars 1995 Extraire le mois le chat boit le lait mon chat boit le lait
7 Annotation automatique à base de règles : outil DARK
7.1 Présentation
Ce travail repose sur l’outil DARK (Direct Annotation using Rules and Knowledge), Thomas Lavergne (LIMSI-CNRS).
L’ajout, la modification et la suppression de règles et de lexiques se font dans le fichier « regles.lua ».
Syntaxe
– Les lignes ne se terminent pas par un point-virgule «;», le symbole pourcentage «%» sert à déspécialiser ou pour les classes de caractères
– Les étiquettes sont précédées d’une esperluette «&» :&chemical &disorder &sosy
– Les captures se font au moyen des crochets (énorme avantage par rapport à PERL qui emploie les parenthèses aussi bien pour les captures que pour la disjonction), et le premier élément qui suit le crochet ouvrant est l’étiquette qui sera apposée si la règle s’applique :[&weight /%d+/ kg]
– Les commentaires se font avec deux tirets, on ne met pas de commentaire en fin de ligne : -- Ceci est un commentaire
– Les opérateurs habituels des expressions régulières sont disponibles : début, fin, quantifieurs "greedy" (capture la plus longue) et "lazy" (capture la plus courte), classes de caractères, disjonction, etc. :
^ $ * + ? *? +? ?? [0-9] [a-z] %d %a %l %u (un|deux) – Les éléments atomiques sont les tokens, pas les caractères !
Initialisation (création d’un pipeline, objet dans lequel DARK va réaliser les différentes étapes) : local main = dark.pipeline()
Lexiques
– Chargement d’un lexique depuis un fichier (un mot par ligne) : main:lexicon("&objet", "objets.txt")
→tous les mots du corpus identifiés dans le lexique contenu dans le fichierobjets.txtrecevront l’étiquette « objet ».
– Création d’un lexique dans le fichier *.lua :
main:lexicon("&animaux", {"chien", "chat"})
→les motschienetchatdu corpus recevront l’étiquette « animaux ».
Règles (reposent sur les expressions régulières) : – Sur une ligne :
Exemple 1 : main:pattern(’[&ponct /%p/ ]’)
→tous les signes de ponctuation du corpus recevront l’étiquette "ponct"
Exemple 2 : main:pattern(’[&weight /%d+/ kg]’)
→les séquences constituées de chiffres suivis du tokenkgrecevront l’étiquette « weight » Exemple 3 : main:pattern(’[&weight /%d+/ /kg/]’)
→les séquences constituées de chiffres suivis d’un token contenant la chaînekgrecevront l’étiquette « weight » – Sur plusieurs lignes (ne change rien, améliore la lisibilité) :
main:pattern([[
[&info
&animaux &VRB ]
]])
→les séquences constituées d’un premier token déjà porteur de l’étiquette « animaux » et d’un deuxième token porteur de l’étiquette « VRB » recevront l’étiquette « info »
Affichage à l’écran
– On définit la liste des étiquettes qu’on souhaite afficher, et la couleur associée à chaque étiquette : local tags = {
animal = "red", objet = "blue", }
– On peut décider :
– soit d’afficher toutes les étiquettes produites par les différentes règles, projections de lexiques, et autre étiquetage (utile pour débugguer) :
print(main(line))
– soit d’afficher uniquement les étiquettes listées ci-dessus (plus lisible pour un humain) : print(main(line):tostring(tags))
Modèles DARK est fourni avec un modèle d’étiquetage en parties du discours pour le français et l’anglais. Chaque token est donc étiqueté avec l’une des 13 étiquettes suivantes (taux d’erreur de 5 % sur du texte journalistique) : ADJ (ad- jectifs), ADP (pré/post-positions), ADV (adverbes), CON (conjonctions), DET (déterminants), NNC (noms communs), NNP (noms propres), NUM (numéraux et cardinaux), OTH (autres), PCT (ponctuations), PRO (pronoms), PRT (parti- cules), VRB (verbes). Il est donc possible d’écrire des règles fondées sur l’étiquetage en POS.
7.2 Fichier « regles.lua »
-- Création d’un pipeline pour DARK local main = dark.pipeline()
-- Chargement d’un modèle existant (.mdl) ou création du modèle à -- partir de données annotées (*.dat) au moyen des MaxEnt
main:model("model/postag-fr")
-- Création d’un lexique ou chargement d’un lexique existant main:lexicon("&animal", {"chien", "chat"})
main:lexicon("&objet", "objets.txt")
-- Création de patterns en LUA. La capture se fait avec les crochets, -- l’étiquette à afficher est précédée de &~: &word
main:pattern(’[&weight /%d+/ kg]’)
main:pattern("[&NP ( &ADJ | &DET )* &NNC ( &ADJ | &DET )* ]")
-- Sélection des étiquettes voulues, attribution d’une couleur (black, -- blue, cyan, green, magenta, red, white, yellow) pour affichage sur -- le terminal ou valeur "true" si redirection vers un fichier de -- sortie (obligatoire pour éviter de copier les caractères de -- contrôle)
local tags = {
animal = "red", NP = "yellow", objet = "blue", weight = "magenta", }
-- Traitement des lignes du fichier for line in io.lines() do
-- Toutes les étiquettes print(main(line))
-- Uniquement les étiquettes voulues --print(main(line):tostring(tags)) end
7.3 Exercice
EXERCICE : télécharger et copier les fichiers « regles.lua » et « objets.txt » dans votre répertoire de travail.
echo "Le petit chat dort sur la table de 80 kg ." | ./dark regles.lua doit produire ceci à l’écran :
<NP>Le p e t i t <a n i m a l> c h a t < /a n i m a l>< /NP> d o r t s u r <NP> l a <o b j e t> t a b l e < /o b j e t>< /NP> de <w e i g h t>80
<NP>kg< /NP>< /w e i g h t> .
8 Annotation automatique par apprentissage statistique : outil WAPITI
8.1 L’apprentissage statistique
Modèles génératifs (en haut du schéma2) : bayésiens naïfs, chaînes de Markov cachées (HMM).
Ils modélisent la probabilité jointeP(y, x)c’est-à-dire la probabilité de l’étiquette y compte tenu du vecteur de caracté- ristiquesx. Pour décider de l’étiquette à apposer sur un token, il est nécessaire de modéliser la probabilité conditionnelle P(y|x)et de calculer la probabilité d’un vecteur de caractéristiquesP(x):
P(y, x) =P(y|x)/P(x) – Bayésien naïf (Naïve Bayes) : prédiction d’un label sur la base d’observations.
– Chaînes de Markov cachées (HMMs) : prise en compte des transitions au niveau local, entre la position courante et la position précédente.
Modèles discriminants (en bas du schéma) : régression logistique (Logistic Regression) = entropie maximale, champs aléatoires conditionnels (CRF) de chaîne linéaire (Linear-chain CRFs).
Ils modélisent directement la probabilité conditionnelleP(y|x)c’est-à-dire la séquence de labels la plus probable pour une séquence donnée de tokens.
2. Source :http://www.quora.com/Can-Hidden-Markov-Models-be-used-as-binary-classifiers-If-yes-how
8.2 WAPITI
8.2.1 Présentation
L’outil Wapiti repose sur le formalisme des champs aléatoires conditionnels (CRF Conditional Random Fields). Il implé- mente plusieurs alogirthmes(bcd, l-bfgs, rprop, sgd-l1). Il prend deux fichiers en entrée :
Corpus avec annotations de référence
– format tabulaire (i.e., plusieurs colonnes séparées par une tabulation) ; – un token par ligne (nécessite de réaliser une tokénisation) ;
– autant de colonnes que souhaité (même nombre de colonnes sur chaque ligne) ; – la dernière colonne contient l’annotation de référence.
fichier.txt Le Mm 2 NUL DET O
fichier.txt petit mm 5 NUL ADJ O
fichier.txt chat mm 4 NUL NOM B-animal fichier.txt boit mm 4 NUL VRB O
fichier.txt 2 NUL 1 DIGIT NUM B-quantite fichier.txt litres mm 6 NUL NOM I-quantite fichier.txt lait mm 4 NUL NOM O
fichier.txt . NUL 1 NUL PCT O
Ce fichier tabulaire contient, pour chaque token, des informations que l’on espère utiles pour réaliser des prédictions. On distingue plusieurs types de caractéristiques :
– Caractéristiques de surface : informations qu’il est possible d’inférer directement depuis le token (nombre de caractères, casse typographique, présence de chiffres, présence de ponctuation, présence d’affixes particulier, appartenance du token à une liste) ;
– Caractéristiques profondes : informations « riches » obtenues au moyen d’outils externes (étiquetage en parties du discours, dépendances syntaxiques, appartenance du token dans un lexique) ;
– Caractéristiques externes : informations obtenues par rapport aux autres tokens, aux autres documents du corpus (fré- quence du token en corpus, position du token dans le document, clustering non supervisé).
Fichier de configuration pour préciser comment « lire » le corpus annoté. Système de coordonnées entre crochets [position:colonne] (avec position = 0 pour la ligne courante et colonne = 0 pour la première colonne). Pour les CRF :
# Unigramme et bigrammes de tokens U10:%x[0,1]
U11:%x[-1,1]/%x[0,1]
U12:%x[0,1]/%x[1,1]
# Unigramme de la casse typographique, de la taille U20:%x[0,2]
U30:%x[0,3]
# Bigram of output
*
8.2.2 Utilisation
Création d’un modèle : wapiti train -a rprop -p config.tpl corpus-appr.tab modele.wap (avec -a le nom de l’algorithme utilisé l-bfgs/owl-qn/sgd-l1/bcd/rprop et -p le fichier de configuration).
Application d’un modèle : wapiti label -m modele.wap corpus-test.tab >sortie.tab(avec -m le nom du modèle précédemment créé, et éventuellement -c pour contrôler les prédictions produites par label, et -s pour ajouter les scores en sortie, utile pour un post-traitement correcteur).
A Étiquettes en partie du discours (POS) et lemmes
Catégorie (POS) Mots Lemme Forme générique
Articles (ART) la, le, les le
masculin singulier
un, une, des un
Adjectifs (ADJ) petit, petite, petits, petites petit géorgien, géorgienne, géorgiens, géorgiennes géorgien Substantifs (SUB)
chat, chatte, chats, chattes chat
fenêtre, fenêtres fenêtre
table, tables table
Verbes (VB)
suis, es, est, sommes, êtes, sont être
infinitif
ai, as, a, avons, avez, ont avoir
vais, vas, va, allons, allez, vont aller aime, aimes, aimons, aimez, aiment aimer installe, installes, installons, installez, installent installer
Adverbes (ADV) ici ici
sans changement
Conjonctions (CONJ) et et
mais mais
Prépositions (PREP)
à à
au, aux à+le
de de
en en
sur sur
Pronoms (PRO)
je je
tu tu
il, ils il
(≈cas nominatif) elle, elles elle
nous nous
vous vous
Pronoms (PRO) me, m’ me
(≈cas accusatif) te, t’ te
se, s’ se
Noms propres (NOM)
France France
Géorgie Géorgie
Paris Paris
Tbilissi Tbilissi
TABLE1 – Exemples d’étiquettes en partie du discours (POS) et de lemmes pour quelques mots
B Architecture
Scripts PERL pour l’annotation automatique avec l’outil DARK
– application de DARK sur les fichiers *.txt d’un répertoire, en utilisant un fichier de règles : perl 01_appliqueDARK.pl repertoire/ regles.lua
– conversion du format balisé au format tabulaire des fichiers d’une extension donnée présents dans un répertoire : perl 02_tag2tab.pl repertoire/ extension
– fusion de deux versions de fichiers tabulaires en un seul tabulaire au format BIO (format BIO mal géré) : perl 03_fusionne.pl repertoire/hypothese/ repertoire/reference/ >sortie
– évaluation des prédictions réalisées par l’outil DARK d’après la référence manuelle : perl conlleval.pl -d ’\t’ <sortie
corpus/dark/*txt
corpus/brat/*ann
00_creeFichiersAnn.pl
corpus/dark/*dark
01_appliqueDARK.pl
corpus/ref/*ann BRAT
corpus/dark/*tab 02_tag2tab.pl
sortie
03_fusionne.pl corpus/ref/*tag
00_brat2xml.pl
corpus/ref/*tab 02_tag2tab.pl
conlleval.pl
FIGURE3 – Chaîne de traitements pour l’application de DARK sur le corpus
Corpus – corpus/
– brat/ fichiers *.txt, *.ann et *.conf pour l’annotation manuelle avec l’outil BRAT (voir section 5.3, page 6) ; – dark/ fichiers *.txt pour l’annotation automatique à base de règles et de lexiques avec l’outil DARK (page 9) ; – ref/ fichiers *.txt, *.ann et *.tag contenant les annotations manuelles de référence pour lancer les évaluations ; – wapiti/ deux sous-répertoires pour l’annotation par apprentissage statistique avec l’outil WAPITI (page 11) :
– train/ fichiers tabulaires pour la construction du modèle CRF (apprentissage) – test/ fichiers tabulaires pour l’application du modèle (décodage)