Développement des outils

La chaîne de traitement de données orales initialement proposée (Figure 1) a été mise en place et s’avère robuste sur différents corpus. Elle a en effet été testée sur 4 corpus déposés au SLDR: CID (000027), MapTask-Aix (000732), “Audio-Visual condition of Aix-MapTask” (000875), et Grenelle II (000755) montré en Figure 2. Elle est également déjà utilisée dans divers projets, notamment des projets ANR tels que TYPALOC et Cofee.

Actuellement, la communication entre les outils s’effectue via des fichiers au format TextGrid, format natif du logiciel Praat, très utilisé dans la communauté. Nous allons améliorer ce fonctionnement en proposant un format d’échange plus riche, basé sur XML. Nous proposerons également des améliorations et des fonctionnalités supplémentaires.

Chaîne de traitement de l'oral

Chaîne de traitement de l’oral

Exemple de corpus annoté automatiquement. Seule la transcription orthographique enrichie (TOE) est effectuée manuellement.

Fig. 2 Exemple de corpus annoté automatiquement. Seule la transcription orthographique enrichie (TOE) est effectuée manuellement.

SPPAS

Dans la chaîne de traitement, SPPAS ([1]) permet la segmentation automatique en Unités Inter-Pausales, propose un petit outil dédié à la transcription orthographique de ces unités, puis effectue la segmentation automatique en phonèmes, en mots puis en syllabes. Enfin, SPPAS intègre un outil de visualisation des données, un outil de manipulation des fichiers annotés, un outil de statistiques et un système de requête.

SPPAS est entièrement implémenté en Python, il est donc multi-plateformes. En 2014, SPPAS a été visité par près de 1000 utilisateurs différents, dont 55% d’utilisateurs sous Windows, 35% sous MacOS et 10% sous Linux. Bien que nécessitant beaucoup plus d’efforts, le pari du “multi-plateforme” s’avère donc un pari gagnant.

Fig 3. Sessions ouvertes sur le site web de SPPAS en 2014

Fig 3. Sessions ouvertes sur le site web de SPPAS en 2014

Les méthodes d’annotations automatiques implémentées dans SPPAS reposent sur des algorithmes multi-lingues : seules les ressources utilisées dépendent de la langue. La qualité des ressources conditionne ainsi la qualité du résultat obtenu. En ce qui concerne le français, les résultats obtenus par SPPAS sont au moins équivalents à ceux de systèmes dédiés. De plus, par rapport à un système dédié, l’avantage de ce type d’approche réside dans la facilité de prise en charge d’une nouvelle langue. Ainsi, il suffit de créer :

  • une liste de mots pour disposer du “Tokenizer” (segmentation en mots),
  • un dictionnaire de prononciation pour disposer du “Phonetizer” (conversion graphème-phonème),
  • un modèle acoustique pour disposer d’un “Aligner” (alignement temporel des mots et phonèmes sur le signal acoustique),
  • une liste de règles pour disposer d’un “Syllaber” (regroupement des phonèmes en syllables).

Ainsi, entre 2012 et 2014, SPPAS est passé de 4 langues supportées à 9 langues. Au français, anglais, italien et mandarin se sont ajoutés l’espagnol, le taiwanais, le japonais, le catalan, le cantonais. L’ajout du polonais est en cours de réalisation, suite au dépôt récent d’un corpus sur SLDR. De plus, nous avons été contacté par une entreprise allemande pour ajouter le support de la langue russe. Le choix du “multi-linguisme” est là aussi un pari gagnant : d’un point de vue scientifique, il permet de soulever des questions méthodologiques intéressantes/innovantes et d’un point de vue pratique, il permet de mettre rapidement des outils à la disposition des utilisateurs.

Pays d’origine des utilisateurs (du site web)

Pays d’origine des utilisateurs (du site web)

Enfin, les questions de la multimodalité et de l’intéropérabilité ont été abordées pour la gestion interne des données annotées et la communication avec les autres logiciels. Une représentation unifiée des données a été proposée ([2]) et permet de traiter des fichiers de divers logiciels dans un cadre théorique unique. SPPAS permet d’ores et déjà de gérer des fichiers provenant de Transcriber, Praat, Elan et HTK. D’autres formats de fichiers vont s’ajouter à cette liste très rapidement (juin 2015). Cette représentation générique des données a par ailleurs permi de créer un système de requête des données multi-annotées ([3]).

SPPAS propose les 7 annotations automatiques suivantes :

  1. Momel et INTSINT : Modélisation de la mélodie (D. Hirst)
  2. IPUs segmentation : détection des silences
  3. Tokenization : normalisation de texte incluant la segmentation en mots ([4])
  4. Phonetization : convertion grapheme-phonème ([5])
  5. Alignment : alignement des phonèmes et mots sur le signal
  6. Syllabification: regroupement des phonèmes en syllabes
  7. Repetitions : repérage des auto- et hétéro- répétitions lexicales

ainsi que les 6 composantes graphiques suivantes pour l’analyse des annotations :

  • DataRoamer : manipulation des fichiers d’annotation
  • SndRoamer : manipulation des fichiers son (en cours)
  • SppasEdit : visualisation des annotations
  • IPUscribe : transcription orthographique facilitée
  • DataFilter : requêtage/extraction des données annotées
  • Statistics : inventaire des annotations (occurrences, durées…)

La diffusion de SPPAS est assurée via un site web précédemment hébergé par le LPL, et désormais par le SLDR. Dans la mesure où SPPAS est largement utilisé à l’international, et le site fréquemment visité, il est en effet important que le site web soit fonctionnel sans interruption.

Site web (page d’accueil)

Site web (page d’accueil)

Trois niveaux d’utilisation sont proposés :

  1. une interface graphique conviviale, accessible à tout type d’utilisateurs (plusieurs enseignants utilisent SPPAS pour leur cours de Phonétique),
  2. des commandes en ligne,
  3. une API (Application Programming Interface).

Les trois solutions sont largement documentées, en HTML et en PDF (sur le web et dans le logiciel).

SPPAS - Fenêtre d’accueil

SPPAS – Fenêtre d’accueil

Ainsi, SPPAS est un logiciel largement utilisé dans la communauté internationale, essentiellement par des Phonéticiens. Une formation de 2 jours, financée par l’IRCOM, sera assurée fin août à Nantes, juste avant le colloque GESPIN – Gestures and Speech in Interaction.

Pour résumer, SPPAS en quelques chiffres, c’est :

  • 42000 lignes de code, 20000 lignes de commentaires et documentation développeurs
  • 1000 téléchargements en 2014
  • 100 pages de documentation utilisateurs
  • 1 présentation d’introduction
  • 7 annotations automatiques, qui peuvent traiter jusqu’à 9 langues différentes
  • 6 composantes pour l’analyse des annotations
  • 5 publications liées à Ortolang (ci-dessous)

References :

[1] Brigitte Bigi, Daniel Hirst (2013). What’s new in SPPAS 1.5? Proceedins of Tools and Resources for the Analysis of Speech Prosody, Aix-en-Provence, France, Eds B. Bigi and D. Hirst, ISBN: 978-2-7466-6443-2, pp. 62-65.

[2] Brigitte Bigi, Tatsuya Watanabe, Laurent Prévot (2014). Representing Multimodal Linguistics Annotated Data. 9th International conference on Language Resources and Evaluation (LREC), Reykjavik (Iceland), pages 3386-3392. ISBN: 978-2-9517408-8-4.

[3] Brigitte Bigi, Tatsuya Watanabe. Extraction de données orales multi-annotées. TALN, pages 556-561, Marseille (France), 2014.

[4] Brigitte Bigi (2014). A Multilingual Text Normalization Approach. Human Language Technologies Challenges for Computer Science and Linguistics, LNAI 8387, Springer, Heidelberg. ISBN: 978-3-319-14120-6. Pages 515-526.

[5] Brigitte Bigi (2013). A phonetization approach for the forced-alignment task. 3rd Less-Resourced Languages workshop, 6th Language & Technology Conference, Poznan (Poland).

Phonedit

Dans le cadre du projet Ortolang, nous avons tout d’abord effectué une modernisation du code source existant. Phonedit 4.0 (la version de départ dans le projet Ortolang) a été développée en Visual C++ 6 (1998). Un travail de réécriture et de paramétrisation du compilateur a permis de passer à une version 4.1 compilée en Visual C++ 2010, ce qui nous autorise une visibilité pour l’avenir.   Nous avons créé une installation afin de faciliter l’installation.

Durant l’année 2014, Un effort important a porté sur les aspects liés à la visualisation et l’édition de données d’annotation, notamment sur les points suivants :

  • Optimisation mémoire et algorithmique pour pouvoir traiter jusqu’à 100 000 labels, ce qui représente plus d’une heure de données sonores avec des annotations phonémiques, syllabiques, lexicales, morpho-syntaxiques, discursives…
  • Capacité de synchronisation de frontières entre niveaux d’annotation (ex : phonèmes et syllabes)
  • Capacité de gérer divers types de labels : intervalles, points, contigus ou non,… Contrairement aux autres logiciels d’annotation, la synchronie et la contiguïté ne sont pas obligatoires, laissant ainsi de la liberté dans l’annotation.
  • Divers points d’ergonomie facilitant l’annotation manuelle
  • Utilitaires pour importer les données en provenance de SPASS et Praat.

MarsaTag

MarsaTag est une collection des outils d’analyse du français, tant écrit que oral (transcription) développé au LPL par Stéphane Rauzy en Java (multi-plateforme).

Au cours de l’année 2013, nous avions tout d’abord travaillé au packaging des outils : réalisation d’une interface graphique (GUI) pour le traitement de lot de fichiers, création d’un programme d’installation, et la gestion d’un certain nombre de formats d’entrée/sortie de l’écrit (texte brut, document Word ou PDF, formats XML) ainsi que d’un format de transcriptions (Textgrid Praat). Cette première version de MarsaTag offrait alors des outils de tokenisation, étiquettage morpho-syntaxique et POS tagging avec des modèles adaptés pour l’écrit et pour l’oral.

Durant l’année 2014, MarsaTag s’est tout d’abord enrichi au niveau des outils d’un parser (arbre de constituants) pour l’écrit (figure : MarsaTag – process flow).

Nous avons également amélioré l’interface utilisateur en augmentant les arguments pouvant être définis lors du lancement de MarsaTag (CLI, voir figure : MarsaTag – GUI & CLI). Par ce biais, il est à la fois possible de traiter un lot de fichier directement sans l’interface graphique (mode batch), ou encore de pré-configurer certaines options de celle-ci – c’est notamment ce que fait le plugin qu’offre SPPAS. Nous avons également travaillé à l’intégration de MarsaTag dans d’autre framework de traitement des langues en Java, avec un plugin pour GATE (figure : MarsaTag dans GATE).

Enfin, nous avons également quelques formats d’entrée/sortie, parmi lesquels un format de transcription supplémentaire (format ELAN), ainsi qu’un format d’échange pour une architecture de web-services (le format TCF, Text Corpus Format, pour l’architecture WebLicht).

Parmi les évolutions à venir pour MarsaTag, nous pouvons citer la mise au point d’un nouvel algorithme de parsing qui permettra notamment une meilleure prise en compte des disfluences dans le cas de l’oral, et sa mise en place comme web-service.

MarsaTag - process flow

MarsaTag – process flow

MarsaTag - GUI & CLI

MarsaTag – GUI & CLI

MarsaTag dans GATE

MarsaTag dans GATE

 

Éditeur d’arbres

Dans la perspective du développement ou de la correction de treebanks, nous avons étudié les différents outils  permettant l’édition facile d’arbres de constituants. Face à l’absence d’un outil vraiment adapté aux arbres de constituant et facile d’usage – tant pour ses fonctions d’édition que pour son installation – nous nous sommes orientés vers le développement d’un outil en javascript. Ainsi, l’éditeur s’exécutant dans le navigateur web de l’utilisateur, aucune installation n’est nécessaire , de plus l’outil pourra également s’intégrer à des plate-formes web d’annotation.

 Dans sa version actuelle, l’outil d’annotation se présente comme une simple page web qui permet de visualiser et éditer un fichier d’arbre (dans le format XML “SYNT” produit par MarsaTag, TODO: Penn). Après avoir sélectionné son fichier, les arbres sont affichés dans la page, avec en dessous de chacun la phrase correspondante (figure : éditeur d’arbres – vue générale).

Chaque représentation d’arbre étant un graphique vectoriel (format SVG), il est facile de zoomer ou de le redimensionner pour adapter au mieux la visualisation de l’arbre. De plus ce format XML permet d’utiliser des feuilles de styles (CSS) pour adapter les couleurs de chaque noeud.

Les noeuds de l’arbre peuvent être déplacés par simple drag & drop (figure : éditeur d’arbres – drag & drop). Un menu contextuel permet de faire les autres opérations d’édition : changement d’étiquette, création ou suppression de noeuds; ainsi que des ajustements visuels : masquer/ré-afficher une partie de l’arborescence, augmenter la taille de l’image, etc. (figure : éditeur d’arbres – menu contextuel). Il est également possible de sélectionner plusieurs noeuds pour leur appliquer la même modification.

Une fois les modifications faites, le fichier modifié peut être sauvegardé par l’utilisateur.

éditeur d’arbres - vue générale

éditeur d’arbres – vue générale

éditeur d’arbres - menu contectuel

éditeur d’arbres – menu contectuel

Cette première version de l’outil offre un fonctionnement stand-alone, qui permet à l’utilisateur d’éditer ses propres fichiers d’arbres. Afin de pouvoir l’utiliser dans une campagne plus large de création et correction de corpus, nous travaillons actuellement à l’intégrer dans une plate-forme web d’annotation permettant de gérer de multiples annotateurs et curateurs.

MarsaGram

MarsaGram est un outil d’exploration et d’enrichissement de treebanks (tant en arbres de constituants que de dépendance).

Sa fonction première est d’extraire à partir du treebank une grammaire hors-contexte (CFG) et des propriétés induites d’unicité, linéarité, obligation ou exclusion entre les composants d’une même unité syntaxique (constituant ou dépendants d’une même tête).

Dans le même temps,  l’outil génère un ensemble de pages HTML qui permettent de visualiser règles et propriétés et d’explorer leurs occurrences dans le treebank.

La (figure : MarsaGram – vue générale) montre les pages d’exploration produites par MarsaGram. La fenêtre se subdivise en 3 parties :

  • Sur la gauche sont listés les différents composants du treebank (syntagmes ou catégories grammaticales dans le cas d’arbres de constituants), avec les décomptes des occurrences, nombre de règles CFG associées et propriétés induites. Un lien permet de charger dans la partie principale la page décrivant le composant.
  • La zone principale sert à présenter, pour chaque syntagme ou tête, les différents symboles qui le composent, les propriétés calculées et les règles CFG dont il est la partie gauche.
  • Une dernière zone placée en bas permet l’affichage des occurrences dans le treebank.

Chaque zone est bien sûr redimensionable pour l’adapter au besoin de la navigation.

MarsaGram - vue générale

MarsaGram – vue générale

Au sein de la zone principale, une première table “symbols” liste les différents composants des parties droites des règles, avec le nombre de règles où ceux-ci apparaissent, leur occurrences et fréquence (figure: MarsaGram – symbols). La figure nous montre également que la dernière colonne liste les index des règles, avec un lien vers celles-ci. En survolant l’index le détail de la règle apparaît.

Un seconde table “properties” liste les différentes propriétés avec leurs fréquences et différents poids (figure: MarsaGram – properties). La figure illustre également les filtres qui peuvent être appliqués sur les différentes tables.

Une troisième table “rules” liste les différentes règles avec encore une fois leur nombre d’occurrences et fréquence, et une dernière colonne qui permet d’afficher une occurrence dans la zone inférieure (figure: MarsaGram – rules).

Si les règles ont été filtrées, une dernière table liste les règles éliminées par le filtre. Leur exploration peut amener à détecter des cas particuliers ou des erreurs dans le treebank.

MarsaGram - symbols

MarsaGram – symbols

MarsaGram - properties

MarsaGram – properties

MarsaGram - rules

MarsaGram – rules

 MarsaGram possède plusieurs options pour affiner le calcul des règles et des propriétés. Il est tout d’abord possible de choisir le niveau de finesse des symboles considérés : il est possible de ne conserver que la catégorie grammaticale, ou de travailler sur la paire <catégorie, fonction>. Ensuite, pour certains formalismes de constituant qui utilisent des éléments non-projectifs, il est possible de les conserver ou de les “éliminer”. De même, dans le cadre d’arbres de constituants, il est possible d’activer des règles qui réduiront les constructions de coordinations. Il est également possible de filtrer les règles (en fonction de leur nombre d’occurrences, ou de leur fréquence) et d’ajuster le seuil de poids pour considérer une propriété.

Dans sa version actuelle, MarsaGram est un script Perl à la configuration complexe, nous travaillons donc à sa réécriture en Java pour faciliter sa diffusion et son utilisation.


Laisser un commentaire