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 de CasEN

Il est recommandé de mettre à jour Unitex. Il faut obligatoirement travailler avec la version stable 3.2 ou une version ultérieure. Pour installer CasEN, décompressez le fichier téléchargé dans votre répertoire personnel Unitex). Les fichiers seront placés directement dans les bon dossiers (French, CasSys, Dela et Graphs).

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 :

  • Deux fichiers cascade (.csc) à placer dans le répertoire Cassys. Ces fichiers contiennent le chemin (à partir du répertoire Graphs) et l'ordre de passage des graphes (cascade d'analyse et cascade de synthèse, version TEI).
  • Trois dictionnaires à placer dans le répertoire Dela.
  • Les graphes des deux cascades à placer dans un répertoire CasEN du répertoire Graphs. Celui-ci est divisé en deux sous-répertoires, respectivement Graphs\CasEN\CasEN_analyse et Graphs\CasEN\CasEN_synthese.
  • Les nouveaux fichiers de normalisation et d'alphabet à placer dans le répertoire French.

Cliquez ici : Télécharger CasEN_fr.1.4 (version du 28 juillet 2020).

Remarque : les chemins indiqués dans les deux 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.

Téléchargement des scripts CasEN

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 les scripts 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 :

  • 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.

En fait, il contient aussi des exemples permettant de tester les deux scripts, ainsi que deux scripts (.sh), conçus pour un Mac.

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.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.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 qui supprime l'extension d'origine a été ajoutée.

Les deux scripts proposés, lancementDeCasEN.bat et multiLancementDeCasEN.bat, sont des scripts Windows. Sont joins deux scripts identiques, lancementDeCasEN.sh et multiLancementDeCasEN.sh, qui sont des scripts Mac.

Cliquez ici : Télécharger Scripts_CasEN_fr.1.4 (version du 28 juillet 2020).

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.