Partager

CasEN


Présentation de CasEN

Cette mise à disposition de CasEN sur la plateforme Unitex a été réalisée dans le cadre des projet  ANR VarilingFEDER Région Centre Entités nommées et nommablesOrtolang et Istex.

La reconnaissance des entités nommées par la cascade d'analyse CasEN utilise des ressources lexicales et des descriptions locales de motifs, des transducteurs qui agissent sur le texte par des insertions, remplacements ou suppressions. Ces actions peuvent éventuellement être itératives. Elles peuvent aussi se faire "à la volée" sur un texte particulier en fonction des résultats des transducteurs précédents. La plateforme Unitex permet une écriture et une maintenance faciles de ces transducteurs en les présentant à l'utilisateur sous forme de graphes. Le principe d'une cascade est de pouvoir utiliser dans les descriptions suivantes les motifs déjà détectés ou, au contraire, d'éviter un étiquetage non souhaité pour un motif déjà reconnu. L'ordre de passage de ces transducteurs est donc un paramètre important.

Les graphes font éventuellement appel à des sous-graphes qui sont :

  • Soit des graphes plus spécifiques pour lesquels un passage en cascade est inutile. Par exemple le graphe amount.grf appelle des sous graphes reconnaissant différentes mesures (monnaie, température, longueur, etc.).
  • Soit des graphes outils qui opèrent différentes reconnaissances ou transformations utilisées par la suite.
  • Soit des graphes comprenant :
    • des listes de mots utilisés dans un contexte particulier. Ces listes peuvent éventuellement être étiquetées.
    • des expressions régulières ou des masques Unitex pour sélectionner des mots commençant par une majuscule, des contraintes morphologiques, etc.

Des graphes peuvent être construits automatiquement pour le texte étudié à partir de graphes de généralisation d'étiquetage. Ces graphes permettent, par exemple, de retrouver une entité non introduite par le contexte, si cette même entité a été repérée ailleurs dans le texte par un des graphes précédents.


Un exemple de balisage avec CasEN

En lançant la cascade d'analyse de CasEN (CasEN_analyse.csc), la phrase :

Vers le sud, une jetée longue de deux mille mètres s'allongeait comme un bras sur la rade de Suez.
extraite du corpus distribué par Unitex (Le tour du monde en 80 jours, de Jules Verne) va être transformée successivement par :

  • le graphe toolNombreLettres qui identifie les nombres écrits en toutes lettres ;
  • le graphe amountLongueur qui identifie les longueurs ;
  • le graphe tagACoteHydronyme qui identifie certains lieux proches d'un hydronyme ;
  • le graphe geogRiviere qui identifie les rivières ;

pour donner (fichier 80jours_snt.raw) :

Vers le sud, une jetée longue de {\{deux mille\,\.num\+type="cardinal"\+1900a2099\+1000a9999\+1a9999\+lettre\+grftoolNombreLettres\},.val} {\{mètres\,\.unit\},.measure+type="length"+grfamountLongueur} s'allongeait comme un bras sur la {\{rade\,\.w\+type="noun"\},.geogFeat+kind+grftagACoteHydronyme} de {Suez,.geogName+grfgeogRiviere}.
Ce format permet l'affichage de la concordance, mais n'est guère lisible, humainement parlant. Pour cela, un autre fichier résultat est disponible dans un format XML-CasSys (fichier 80jours_snt.txt). Cet exemple est alors, aux sauts de ligne près :

<s>
   Vers le sud, une jetée longue de
   <csc>
     <form>
       <csc>
         <form>deux mille</form>
         <code>num</code>
         <code>type="cardinal"</code>
         <code>type="1900a2099"</code>
         <code>type="1000a9999"</code>
         <code>type="1a9999"</code>
         <code>type="lettre"</code>
         <code>type="grftoolNombreLettres"</code>
       </csc>
     </form>
     <code>val</code>
   </csc>
   <csc>
     <form>
       <csc>
         <form>mètres</form>
         <code>unit</code>
       </csc>
       </form>
     <code>measure</code>
     <code>type="length"</code>
     <code>grfamountLongueur</code>
   </csc>
   s'allongeait comme un bras sur la
   <csc>
     <form>
       <csc>
         <form>rade</form>
         <code>w</code>
         <code>type="noun"</code>
       </csc>
     </form>
     <code>geogFeat</code>
     <code>kind</code>
     <code>grftagACoteHydronyme</code>
   </csc>
   de
   <csc>
     <form>
       Suez
     </form>
     <code>geogName</code>
     <code>grfgeogRiviere</code>
   </csc>
   .
</s>

Une séquence reconnue est, d'une part, étiquetée et, d'autre part, figée en une expression polylexicale. Ce balisage peut ensuite être recherché dans Unitex par des masques plus ou moins spécifiques. Pour faciliter le débogage, nous ajoutons au balisage le nom du graphe qui l'a inséré, préfixé par grf, soit ici grfamountLongueur.

Si la sortie XML-CasSys ne correspond pas au balisage souhaité (ce qui est le cas en général), le fichier _csc.txt peut être ouvert sous Unitex pour le passage d'une deuxième cascade. Ainsi, CasEN est en fait composé de deux cascades, une cascade d'analyse et une cascade de synthèse. Pour notre exemple, et pour la synthèse version TEI (CasEN_synthese_TEI.csc), le résultat de cette deuxième cascade est :

<s>Vers le sud, une jetée longue de <measure type="length" quantity="deux mille" unit="mètres">deux mille mètres</measure> s'allongeait comme un bras sur la <geogName><geogFeat>rade</geogFeat> de Suez</geogName>.</s>
Remarquons qu'en suivant non plus la TEI, mais le guide Istex, le même exemple deviendrait, en changeant seulement la cascade de synthèse (CasEN_synthese_ISTEX.csc), disponible sur la page CasEN-Istex :
Vers le sud, une jetée longue de deux mille mètres s'allongeait comme un bras sur la rade de Suez.
Une aide peut vous être apportée pour vous aider à concevoir une cascade de synthèse personalisée, qui correspond à vos attentes en terme d'annotation, ou pour écrire un script qui lance la cascade en dehors de l'interface.


L'ordre des graphes

La cascade elle-même est constituée à partir des îlots de certitude qu'il est possible de trouver... Par exemple, la phrase :

Il est arrivé le 29 février de l'année 2008.
peut être analysée par plusieurs graphes de la cascade d'analyse de CasEN :

  • timeDateCalendaireAbsolueAnnee reconnaît la séquence entière, le 29 février de l'année 2008 ;
  • timeDateCalendaire reconnaît le début de la séquence, le 29 ;
  • timeAnneee reconnaît la fin de la séquence, l'année 2008.

Ces trois graphes reconnaissent la date ou une partie de la date. Si ceux qui reconnaissent une partie de la date sont passés en premier sur le texte, les balises qu'ils auront insérées empêcheront le graphe timeDateCalendaireAbsolueAnnee de reconnaïtre la date entière. C'est pourquoi, celui-ci doit obligatoirement être passé avant les deux autres.

Parfois, il ne s'agit pas de concurrence, mais de complément. L'exemple le plus simple est sans doute le graphe des adresses postales qui contient des masques de personne (pour reconnaître rue du Général Leclerc) et de date (pour rue du 11 novembre 1918) : les graphes des dates et ceux des personnes sont donc placés avant le graphe des adresses. De nombreuses organisations comportent aussi des étiquettes de type personne, comme le Centre Georges Pompidou ou l'hôpital Henri Mondor. Ces organisations seront donc reconnues après les graphes de personnes. Ainsi, nous constatons que l'ordre des graphes est capital, mais non trivial.


Les différentes versions de CasEN

La version Ester de CasEN, présentée sur la page du projet FEDER Région Centre Entités nommées et nommables, n'est plus disponible. Il en est de même pour la version Quaero de CasEN, réalisée lors de la campagne ETAPE où CasEN a été classé premier sur la tâche de reconnaissance des entités nommées dans des textes transcrits manuellement. Ces cascades ne sont plus maintenues, suite à la création d'une nouvelle cascade respectant la norme TEI, dans le cadre du projet Ortolang et du projet Istex.

Cette version de CasEN est maintenue. Toute question, remarque ou signalement de bogue peut être envoyé à casen Arobase univ-tours Point fr.

Une discussion sur le choix des étiquettes TEI pour l'annotation des entités nommées se trouve dans :

Le Pevedic S., Maurel D. (2016), Retour sur les annotations des entités nommées dans les campagnes d’évaluation françaises et comparaison avec la TEI, Corela 14-2.

Deux cascades spécifiques au projet Istex (pour le français et pour l'anglais) sont disponibles sur ce site.

Téléchargement

Il est recommandé de mettre à jour Unitex. Il faut obligatoirement travailler avec la version stable 3.2 ou une version ultérieure. Depuis la version 3.2, Unitex permet une utilisation efficace des scripts utilisant des programmes Unitex (voir le chapitre 13 du manuel).

Pour télécharger CasEN, il faut accepter les termes de la licence LGPL-LR, dont le texte est rappelé sur ce site.

Le téléchargement ci-dessous contient principalement trois fichiers (ainsi que des exemples permettant des tests) :

  • CasEN_lingpkg.zip : Un package linguistique contenant l'ensemble des fichiers nécessaires à CasEN. Ce fichier est un fichier.zip, mais ne doit pas être dézippé. Il est commun à tous les systèmes d'exploitation.
  • lancementDeCasEN.bat : Un script, à adapter à son ordinateur, pour traiter un fichier.
  • multiLancementDeCasEN.bat : Un script, à adapter à son ordinateur, pour traiter tous les fichiers d'un dossier.

Le script lancementDeCasEN.bat pour traiter un fichier contient la ligne suivante :

"C:\Program Files (x86)\Unitex-GramLab\App\UnitexToolLogger.exe" { SelectOutput --output=off } { InstallLingResourcePackage -p C:\Documents\ScriptsCasEN\CasEN_lingpkg.zip -x $:UnitexPkgResource -v } { RunScript -v -a INPUT_FILE_1=C:\Documents\ScriptsCasEN\exemple.txt -a CORPUS_WORK_DIR=$:UnitexPkgWork -a PACKAGE_DIR=$:UnitexPkgResource -a OUTPUT_FILE_1=C:\Documents\ScriptsCasEN\exemple_result.txt $:UnitexPkgResource\script\CasEN_TEI.uniscript } { InstallLingResourcePackage -p C:\Documents\ScriptsCasEN\CasEN_lingpkg.zip -x $:UnitexPkgResource -u -v }

où sont notées avec l'adresse complète quatre informations à modifier:

  • Le chemin menant au programme UnitexToolLogger : C:\Program Files (x86)\Unitex-GramLab\App\UnitexToolLogger.exe
  • Le chemin menant au package linguistique CasEN_lingpkg.zip : C:\Documents\ScriptsCasEN\CasEN_lingpkg.zip
  • Le chemin et le nom du fichier à analyser : exemple.txt : C:\Documents\ScriptsCasEN\exemple.txt
  • Le chemin et le nom du fichier résultat : exemple_result.txt : C:\Documents\ScriptsCasEN\exemple_result.txt

Le script multiLancementDeCasEN.bat pour traiter tous les fichiers d'un dossier contient la ligne ci-dessous :

"C:\Program Files (x86)\Unitex-GramLab\App\UnitexToolLogger.exe" { BatchRunScript -e -i C:\Documents\ScriptsCasEN\DossierOrigine -o U:\Documents\ScriptsCasEN\DossierResultats -t1 C:\Documents\ScriptsCasEN\CasEN_lingpkg.zip -f -s script\CasEN_TEI.uniscript }

où sont notées avec l'adresse complète cinq informations à modifier:

  • Le chemin menant au programme UnitexToolLogger : C:\Program Files (x86)\Unitex-GramLab\App\UnitexToolLogger.exe
  • Le chemin et le nom du dossier contenant les fichiers à analyser : C:\Documents\ScriptsCasEN\DossierOrigine
  • Le chemin et le nom du dossier contenant les fichiers résultat : C:\Documents\ScriptsCasEN\DossierResultats
  • Le nombre de coeurs utilisés : argument -t, ici, pour un cœur, -t1 (pour deux cœurs, -t2, etc.)
  • Le chemin et le nom du package linguistique CasEN_lingpkg.zip : C:\Documents\ScriptsCasEN\CasEN_lingpkg.zip

Remarque : l'option -e supprime l'extension d'origine.

Les deux scripts proposés, lancementDeCasEN.bat et multiLancementDeCasEN.bat, sont des scripts Windows (en fait, ils sont doublés, avec une synthèse MUC et une synthèse TEI). Sont joints deux scripts identiques, lancementDeCasEN.sh et multiLancementDeCasEN.sh, qui sont des scripts Mac.

Cliquez ici : Télécharger CasEN_fr.1.8 (version du 19 septembre 2022).


Utilisation (et modification possible) de CasEN via l'interface d'Unitex

Il est possible d'adapter les cascades CasEN en utilisant l'interface d'Unitex. Pour cela, il faut ouvrir le fichier CasEN_lingpkg.zip, puis le dossier resource et fusionner le dossier French qui s'y trouve avec le dossier French de votre répertoire personnel Unitex. Les fichiers seront placés directement dans les bon dossiers (CasSys, Dela et Graphs).

Cette fusion ajoute dans votre répertoire French :

  • Dans le dossier French : Les nouveaux fichiers de normalisation et d'alphabet.
  • Dans le dossier Cassys : Trois fichiers cascade (.csc). Ces fichiers contiennent le chemin (à partir du dossier Graphs) et l'ordre de passage des graphes (une cascade d'analyse et deux cascades de synthèse, versions TEI et MUC).
  • Dans le dossier Dela : Trois dictionnaires.
  • Dans le dossier Graphs : Les graphes des deux cascades répartis dans deux sous-dossiers, respectivement Graphs\CasEN\CasEN_analyse et Graphs\CasEN\CasEN_synthese.

Remarque : les chemins indiqués dans les trois fichiers de cascade sont à la mode Windows, c'est-à-dire qu'ils comportent des antislashs. Les utilisateurs d'un autre système d'exploitation (par exemple, un Mac), auront peut-être à remplacer les antislashs par des slashs.

Avant de débuter la cascade, il faut refuser le preprocessing et appliquer les ressources lexicales (Text/Apply lexical resources) en sélectionnant en même temps :

  • à droite : le dictionnaire Dela_fr ;
  • à gauche : les trois dictionnaires de la cascade (CasEN_Dico, CasEN_Ambiguites- et Prolex-Unitex-BestOf_2_2_fra).

Remarque : si on utilise uniquement CasEN, le bouton SetDefault de ce même menu Text/Apply lexical resources permet d'enregistrer ces deux listes comme dictionnaires par défaut. Ces dictionnaires pourront alors être lancés par le preprocessing.

Tutoriels

Des tutoriels pour la prise en main d'Unitex et de CasSys sont disponibles sur ce site.

Pour nous citer

Friburger N., Maurel D. (2004), Finite-state transducer cascade to extract named entities in texts, Theoretical Computer Science, vol. 313, 94-104.

Maurel D., Friburger N., Antoine J.-Y., Eshkol-Taravella I., Nouvel D. (2011), Cascades autour de la reconnaissance des entités nommées, TAL 52-1.


Pour nous contacter

Toute question, remarque ou signalement de bogue peut être envoyé à casen Arobase univ-tours Point fr.