Traitement de corpus

Pour les utilisateurs enregistrés (cf. FAQ, Comment créer un nouveau compte?), il est possible de soumettre des corpus de textes à l'analyseur syntaxique FRMG. La taille des corpus est pour l'instant limitée à 1 million de mots. Au dessus de cette taille, nous vous proposons de nous contacter !

Ce service vous permet de charger un corpus (de préférence en format de texte brut) qui vous sera retourné analysé par la chaine de traitement linguistique FRMG d'ALPAGE.

Les résultats sont déchargeables sous forme d'une archive ou directement visualisable sous ce wiki. Par défaut, le corpus analysé réside dans une zone privée au dépositaire, mais nous encourageons les dépositaires de corpus à les rendre publics (sous réserve qu'ils aient les droits pour le faire). Divers schémas d'annotations sont disponibles en sortie, comme le schéma en dépendances utilisé pour le French TreeBank (en format tabulaire CONLL), le schéma natif DepXML de FRMG (sous format XML ou variante DepConll), et le schéma EASy/Passage mixte chunks et dépendances (sous format XML).

Des travaux sont en cours pour proposer prochainement de nouveaux services exploitant les résultats d'analyse:

  • fouille d'erreurs, pour déterminer des propriétés lexicales particulières d'un corpus posant problèmes (comme des mots inconnus)
  • indexation (via ElasticSearch) et recherche de type DPath, pour l'étude de phénomènes syntaxiques dans un corpus (fait !)
  • extraction terminologique et constitution de réseau de mots, avec couplage avec l'interface Libellex de visualisation et de validation (voir Applications).
  • ....

Nous nous réservons le droit d'utiliser les résultats d'analyse de corpus pour améliorer les performances de FRMG (en particulier au travers de fouilles d'erreurs). Par contre, sauf accord des dépositaires, les corpus et les résultats ne seront pas distribués ni publiés.

Enfin, le service est expérimental et dépends aussi des disponibilités de calcul sur cluster. Nous comptons donc sur votre indulgence en cas de problèmes ou de délai !

Notes sur l'utilisation du service: le mode de fonctionnement de ce service n'est pas (encore) totalement intuitif ! Pour traiter un nouveau corpus, il faut

  1. sélectionner un fichier ou archive à traiter avec "Choisissez un fichier"
  2. charger le fichier comme nouveau corpus avec "Start Upload"
  3. (le corpus chargé doit ensuite apparaître dans la liste des corpus avec le status "waiting")
  4. sélectionner le corpus dans la liste,
  5. ouvrir en bas à droite l'onglet "Process"
  6. choisir le schéma d'annotation de sortie (CONLL par défaut)
  7. cliquer sur "Launch Process"
  8. (comme la tâche peut prendre un certain temps, un mail est envoyé à l'utilisateur à la fin de celle-ci)

Pour voir le corpus traité, il suffit de le sélectionner dans la liste des corpus. Une liste des fichiers du corpus doit apparaître. En cliquant sur un fichier, le texte du fichier apparaît, avec des codes couleur indiquant le degré de réussite de FRMG sur les phrases. Cliquer sur une phrase fait apparaître son arbre d'analyse.

En utilisant l'onglet "Search" à droite, il est possible de faire des requêtes sur le corpus ou sur un fichier, en mode recherche de mots ou via des requêtes DPath.

Via l'onglet "Misc", il est possible de récupérer une archive de l'ensemble des phrases analysées

Langage DPath

Il est possible d'interroger les corpus traités par FRMG à l'aide du langage DPath, décrit ci-dessous.

Inspiré par le langage de requête XPath pour XML, le langage DPath permet d'exprimer des requêtes pour le schema natif FRMG sous son format DepXML. Il est implanté en Perl mais possède sa propre syntaxe pour plus de compacité. Le langage DPath s'appuie sur une représentation orientée objet des noeuds (DepXML::Node) et arcs (DepXML::Edge), et dans une moindre mesure des clusters (DepXML::Cluster). Les constituants et hypertags ne sont pas encore accessibles. Les primitives de base du langage sont des méthodes s'appliquant à ses objets. On distingue deux familles de méthodes:

  • la première famille permet de tester une propriété sur un objet. La table 1 illustre quelques une de ces propriétés. Une large partie des méthodes sont automatiquement construites à partir des labels et catégories syntaxiques du tagset de FRMG
  • la seconde famille permet de naviguer d'un objet à un autre. La table 2 liste les 4 déplacements de base.
méthode type d'objet propriété
Table 1 - Quelques méthodes de propriété dans DPath
is_adj arc test si l'arc est un arc d'adjonction
is_subst arc test si l'arc est un arc de substitution
is_subject arc test si l'arc est étiqueté subject
is_v noeud test si le noeud est verbal
is_active noeud test si le noeud verbal est à la voie active
is_root noeud test si le noeud est racine de la phrase
méthode type d'objet action
Table 2 - Les quatre méthodes de navigation de base dans DPath
in noeud accède à l'arc entrant du noeud
out noeud accède aux arcs sortant du noeud
source arc accède au noeud source de l'arc
target arc accède au noeud cible de l'arc

Certaines méthodes sont en fait implicites, comme par exemple cat_in_v_aux pour indiquer que la catégorie d'un noeud est soit v, soit aux, ou label_in_subject_impsubj pour indiquer que le label d'un arc est soit subject, soit impsubj.

Il est bien sûr possible de définir ses propres méthodes sur les noeuds et les arcs pour les utiliser dans DPath, en respectant la convention que les méthodes de propriétés doivent commencer par is_ ou has_. Et il est tout à fait possible d'utiliser une requête DPath dans la définition d'une telle méthode.

Une succession de propriétés dénote une conjonction, tandis qu'une succession de déplacements dénote un chemin dans la structure de dépendance.

Il est à noter que les expressions DPath (comme XPath) travaillent sur des ensembles d'objets (de même nature, noeuds ou arcs). Elles prennent généralement un singleton en entrée mais peuvent très bien retourner plusieurs objets en sortie, ou l'ensemble vide. L'opérateur union peut ainsi être utilisé pour grouper les résultats de deux sous-requêtes (équivalent à un ou logique). Enfin, il est possible de parenthéser une expression E pour l'appliquer sur l'ensemble courant d'objets sans déplacement, même si E contient des déplacements, de manière analogue à la construction [0...]0 en XPath. DPath autorise ainsi les constructions suivantes, sans déplacement:

  • .( <exp> ) pour filtrer l'ensemble courant en ne gardant que les membres vérifiant l'expression;
  • .x( <exp> ) pour garder l'ensemble courant, si au moins un des membres vérifie l'expression;
  • .a( <exp> ) pour garder l'ensemble courant, si tous ses membres vérifient l'expression;
  • .n( <exp> ) pour garder l'ensemble courant, si aucun de ses membres vérifient l'expression.

Il est également possible d'itérer une expression avec la notation ( <exp>)*.

L'expression suivante permet de récupérer les noeuds de catégorie coo (coordonnant), lié à un noeud fils verbal par un arc étiqueté coord3 et à un noeud père verbal par un arc d'adjonction.

  1. dpath is_coo
  2. .(out is_coord3 target is_v)
  3. .(in is_adj source is_v)

exemple d'expression dpath


  • 0
  • 0
configuration filtrée par l\'expression DPath dans il mange et il boit.



  • 0
  • 0
configuration rejetée par l\'expression DPath dans il mange ou non ?

Les deux méthodes suivantes (sur les noeuds) s'appuient sur des expressions DPath pour se déplacer au noeud père (via l'arc entrant) ou aux noeuds fils (via les arcs sortants). Ces méthodes peuvent ensuite elles-mêmes être utilisées dans des expressions DPath.

  1. sub parent {
  2. shift->apply(dpath in source);
  3. }
  4. sub children {
  5. shift->apply(dpath out target);
  6. }

méthodes de déplacement vers les noeuds père ou fils

En allant plus loin, on peut ainsi définir des méthodes de déplacement beaucoup plus complexes. Ainsi, la méthode suivante (sur les noeuds) permet de se déplacer vers son sujet. On notera l'emploi de l'opérateur union et l'emploi récursif de la méthode get_subject (intuitivement, un sujet est accroché directement sur le noeud ou doit être recherché récursivement sur un auxiliaire adjoint au noeud).

  1. sub get_subject {
  2. (shift->apply( dpath out
  3. ( is_subject target union is_Infl is_adj target is_aux get_subject )
  4. ) )[0]; }

méthode récursive pour se déplacer vers le sujet

DPath version wiki

Dans le cadre de ce wiki, pour la consultation des corpus analysés avec FRMG, DPath a été complété par l'utilisation d'une phase amont d'indexation via ElasticSearch. Il est également envisagé d'utiliser DPath pour chercher certaines structures dans les phrases d'exemple servant à illustrer ce wiki.

Pour ce wiki, DPath a aussi été étendu pour fonctionner pour les schémas CONLL, PASSAGE et DepCONLL en plus de DepXML. Il est également possible d'utiliser des macro. Les requêtes faites par les utilisateurs peuvent être enregistrés en vue de constituer une bibliothèque.

Il existe quelques différences de notation avec la version Perl.

Ainsi sur les expressions parenthésées:

  • .( <exp> ) pour filtrer l'ensemble courant en ne gardant que les membres vérifiant l'expression;
  • x( <exp> ) pour garder l'ensemble courant, si au moins un des membres vérifie l'expression;
  • a( <exp> ) pour garder l'ensemble courant, si tous ses membres vérifient l'expression;
  • n( <exp> ) pour garder l'ensemble courant, si aucun de ses membres vérifient l'expression.

Pour les tests élémentaires:

  • [@cat="v"] pour un trait de base (form, lemma; cat et xcat pour DepXML; pos et cpos pour CONLL)
  • [@features@p="2"] pour des traits morphosyntaxiques profonds (ici p pour personne)
  • [@cpos="C"] [@features@p="2"] pour une conjonction (séquence) de tests

Et naturellement, plus d'échappements possibles vers Perl !

Corpus Disponibles

Nous rendons disponibles les résultats d'analyse avec FRMG de quelques corpus du français (réalisé en Juin 2014). Ces corpus ont initialement été préparés en 2007 dans le cadre de l'action PASSAGE, et font partie du Corpus Passage Long (CPL). Les textes de ces corpus sont libres d'accès mais restent néanmoins associés à leur licence d'origine.

Un nouveau corpus, hors PASSAGE, est également disponible:

Les annotations produites sont librement disponibles, sous réserve, pour les éléments textuels, des licences s'appliquant sur les textes originaux.

Nous invitons cependant fortement les utilisateurs de ces annotations

  • à se faire connaître,
  • à éventuellement décrire leurs travaux sur ce site,
  • et à référencer ce site ou les publications sur FRMG (biblio) dans leurs propres articles !

Les annotations sont actuellement disponibles pour le schéma DepXML (format XML). En fonction des demandes, des versions pour les schémas FTB/CONLL et Passage/XML seront rendues disponibles. Il est également envisagé dans les mois à venir d'utiliser des versions plus récentes de Wikipédia et Wikisource. Des suggestions pour rendre disponible d'autres gros corpus (sous licence libre) sont les bienvenues !

Enfin, il est également possible de lancer des requêtes DPath sur ces corpus (Service de requêtes), en prenant en considération que certaines requêtes peuvent demander un temps de traitement conséquent !

Quelques statistiques sur les corpus:

Corpus #phrases (Millions) #mots (Millions) %analyses complètes notes
EuroParlement 1.6 41.5 95.0% débats parlementaires européens
Wikipedia Fr 18.0 178.9 93.4% 504K pages encyclopédiques
Wikisource Fr 4.4 64.0 84.8% 12.8K textes littéraires
EMEA Fr 1.3 14.9 88.8% médical

Les corpus ont été annotés automatiquement avec FRMG, sans post correction manuelle. Nous n'avons donc pas d'indication précise sur la qualité des analyses. Des éléments d'évaluation pour FRMG sont néanmoins disponibles sur cette page. Les utilisateurs de ces corpus sont gentiment invités à faire remonter des informations sur des erreurs manifestes et récurrentes.