Description générale

Il s’agit de développer un système à base de règles avec l’outil wmatch. Un manuel est disponible ici. Les types d’entités à détecter sont les _pers et les _time. Il s’agit des types les plus extérieurs (version simplifiée) du guide Quaero. La version complète du guide d’annotation est disponible ici.

Exemple de simplification
comment  <pers.ind>  <name.first> Eric  </name.first>  <name.last> Woerth  </name.last>  </pers.ind>

devient

comment  <pers> Eric  Woerth </pers>

Tout ce qui se rapporte au développement de ce système à base de règles se trouve l’archive disponible ici.

Objectifs

L’objectif pour ce TP est de développer un système de détection d’entités avec un système à base de règles et de procéder à des évaluations et des analyses des résultats.

Récupération et décompression de l’archive

Vous pouvez télécharger l’archive en cliquant sur ce lien.

Vous lancez ensuite la commande :

tar xvfz sys-regles.tar.gz

Pour changer automatique les chemins dans l’ensemble des scripts, tapez la commande suivante :

cd sys-regles
./change-path.sh `pwd`

Structure de l’archive

L’archive contient un ensemble de répertoire ainsi que le système de base et les ressources utiles.

Les répertoires utiles pour le système sont :

  • compwm : permet une compilation à la volée des grammaires
  • dic : contient
    • french-par-linux-3.1.bin : le modèle tree tagger pour l’annotation en parties du discours
    • tt-french-mapping.txt : fichier mapping pour wmatch
    • stems-fr.txt : une ressource contenant pour chaque item, son “lemme”
  • hyp : le répertoire où mettre les résultats de vos analyses
  • pers-time.lua : le système
  • res : le répertoire où mettre le résultat des évaluations
  • data : le répertoire de données
  • filtres : les filtres utilisés par le système
  • listes : les ressources lexicales du système
  • regles : les grammaires du systèmes
  • scripts : des scripts utiles (application, évaluation, etc.)
    • BIO-to-xml.awk : passer du format BIO au format xml
    • BIO-to-Full-xml.awk : passer du format BIO au format xml (arbres complets)
    • all_asr_eval.sh : évaluer tous les fichiers asr
    • asr_apply.sh : appliquer le système sur un fichier asr
    • config.lua : fichier de config pour évaluation
    • number-net.sed : nettoyage de la sortie de wmatch
    • all_asr_apply.sh : appliquer le système sur tous les fichiers asr
    • apply.sh : appliquer le système sur un fichier
    • asr_eval.sh : appliquer le système sur un fichier asr
    • eval.sh : faire une évaluation simple (transcription manuelle)
    • xml-to-bio.awk : passer du format xml au format bio

Récupération des outils

L’ensemble des outils compilés utiles (voire indispensables) se trouvent sur ce site. Récupérez-les et mettez-les dans le répertoire bin/

Ensuite, allez dans le répertoire bin/ et rendez exécutable les programmes.

cd bin/
chmod 755 *

Données

Vous disposez des données d’apprentissage de ETAPE annotées avec la version simplifiée. Celle-ci comprend la version annotée uniquement avec les _pers et les _time et la version avec tous les types (plus haut niveau à chaque fois, c’est à dire _amount, _func, _loc, _org, _prod, ainsi que _pers et _time). Ces données sont disponibles dans deux formats :

  • bio : un mot par ligne ; la deuxième colonne contient le type de l’entité. Exemple :
comment		o
Eric 		b-_pers
Woerth 		i-_pers
peut-il 	o
encore 		o
euh 		o
  • sgml : une “phrase” par ligne, les entités sont entourés par des tags sgml. Exemple :
comment <_pers> Eric Woerth </_pers> peut-il encore euh

Ces données sont disponibles dans le répertoire data. Vous disposez des données :

  • pour l’apprentissage : transcrites manuellement et annotées manuellement au format sgml et bio avec différentes typologies (complète, simplifiée et ultra-simplifiée)
  • pour le test : transcrites manuellement annotée pour la référence ou non annotée et transcrites automatiquement annotées manuellement par projection et non annotées.

L’organisation de ce répertoire est la suivante :

data
 trn						<-- données annotées
 						apprentissage/développement
  train_Etape_Complet_u8.bio
  train_Etape_Complet_u8.sgml
  train_Etape_POS.bio
  train_Etape_SimplifiedPERS+TIME_POS_u8.bio
  train_Etape_SimplifiedPERS+TIME_u8.bio
  train_Etape_SimplifiedPERS+TIME_u8.sgml
  train_Etape_Simplified_u8.bio
  train_Etape_Simplified_u8.sgml
 test						<-- données d'évaluation
  asr
   rover/*.txt
   s23/*.txt
   s25/*.txt
  man						<-- données textes simples
   test_man_Etape_u8.bio
   test_man_Etape_u8.txt
  references					<-- données de références
  						    (annotées)
   asr						<-- transcriptions automatiques
   						(projection/aref)
    rover/*.aref
    s23/*.aref
    s25/*aref
   man						<-- transcriptions manuelles
    test_man_Etape_Complet_u8.bio
    test_man_Etape_Complet_u8.sgml
    test_man_Etape_SimplifiedPERS+TIME_u8.bio
    test_man_Etape_SimplifiedPERS+TIME_u8.sgml
    test_man_Etape_Simplified_u8.bio
    test_man_Etape_Simplified_u8.sgml
    test_man_Etape_Simplified_u8.sgml

Système

Vous disposez de grammaires basiques qui vous permettront de démarrer et de scripts lancement.

Grammaires

Les grammaires sont dans le répertoires regles/ Elles sont la forme suivante (décrite dans le manuel wmatch).

%pays: Hollande France Belgique;      <-- une liste appelée toto
&pays: (<! en) %pays;  		      <-- une macro qui dit que les
       	       			       mots de la liste %pays
				       sont matchés par &pays si pas précédés
				       du mot "en"
_pays: (&pays);	                      <-- une expression qui entre dans
       				      	  &pays voit s'appliquer la règle
					  _pays.

Lancement

Vous pouvez utiliser le système pour du test interactif (très pratique quand on développe). Pour cela :

./pers-time.lua
le 23 juin                    -->> votre entrée 
le <_time> 23 juin </_time>   -->> réponse système

Vous pouvez également lancer le système sur tout un fichier et produire la sortie dans un fichier :

./pers-time.lua < fichier.txt > fichier.sgml

Améliorations

Pour améliorer les règles, en ajouter voire en supprimer, vous ouvrez avec un éditeur quelconque (par exemple emacs ou gedit) le fichier de grammaire qui vous intéresse et vous travaillez dessus.

Vous pouvez décider d’ajouter des grammaires et dans ce cas, vous ouvrez le fichier pers-time.lua avec un éditeur et vous ajoutez une ligne indiquant le nom de la nouvelle grammaire (sur les modèles disponibles).

Evaluations

Pour évaluer votre système, vous devez comparer ses hypothèses (sa sortie analysée) avec la référence. Pour cela vous disposez d’un logiciel qui vous permet d’obtenir les scores mais aussi les listes des différentes erreurs et de ce qui est bon dans un format texte lisible dans n’importe quel éditeur.

Ce logiciel, ne-scoring-gen, prend en paramètre un fichier de configuration (config.lua), un fichier de référence (annotations manuelles) et un fichier d’hypothèses (annotations automatiques). Il propose différentes options.

NE scoring

Usage: ne-scoring-gen [options] descr.lua ref-file hyp-file
  -a                  reference is in "aref" format
  -s                  show summary of results (default)
  -d                  show detail of errors
  -c                  show detail of errors and corrects
  -i <expected_count> show IAG-type values
  -o                  open - in IAG mode, there are no confusions

Vous disposez dans le répertoire scripts/ d’un ensemble de scripts permettant de faire différentes évaluations. Il s’agit de modèles que vous pourrez développer plus avant, selon vos besoins.