ANNIS pour l’interrogation de corpus annotés Travaux pratiques sur les corpus oraux du projet Orfeo Clément Plancq, LaTTiCe (CNRS, ENS, Paris 3) [email protected] CORLI, lundi 14 novembre 2016 Plan ● ● ● ● Présentation d’Orfeo – Les corpus – Les métadonnées, les annotations TP 1 : Premiers pas avec ANNIS – Présentation de l’interface et des fonctionnalités – AQL : Annis Query Language ANNIS et les outils de corpus-tools.org – Modèle de données SALT – Installation et importation de données (outil de conversion Pepper) TP 2 : Exploration de corpus avec ANNIS ANNIS - Corli - 14/11/2016 2 Présentation d’Orfeo ANNIS - Corli - 14/11/2016 3 Orfeo ● ● ● ● Projet ANR (appel corpus) http://www.projet-orfeo.fr/ 7 laboratoires partenaires, coord. Jeanne-Marie Debaisieux (LaTTiCe) Objectifs : – Constituer un corpus d’étude pour le français contemporain – Rassembler des données secondaires à partir de corpus existants (méta-données, transcriptions harmonisées, alignement texte / signal, annotations) Résultats : – Plate-forme d’interrogation des données – Diffusion des corpus annotés sous licence libre ANNIS - Corli - 14/11/2016 4 Orfeo : les corpus ● ● ● ● Oral : 3 millions de mots Écrit : 15 millions Focus sur les corpus oraux pendant la formation Liste des corpus oraux : http://www.projet-orfeo.fr/corpus/corpus2 Description : http://www.projet-orfeo.fr/corpus/le-corpus-d-e tude-du-francais-contemporain ANNIS - Corli - 14/11/2016 5 Orfeo : méta-données ● ● ● ● Corpus oraux hétérogènes (taille, variétés de français, type de textes, date d’enregistrement, domaine, nombre de locuteurs, qualité du signal) Méta-données indispensables pour la description des données et aussi pour leur interrogation Travail d’élaboration d’un jeu de méta-données communes aux différents corpus Utilisation du standard tei (teiHeader) pour l’encodage ANNIS - Corli - 14/11/2016 6 Orfeo : annotations ● Départ : transcriptions (transcriber ou praat) et fichiers sons ● Chaîne de traitement Orfeo ● – Segmentation (manuelle et automatique) en unités macrosyntaxiques – Tokenisation (macaon, LIF) – Alignement texte / signal (JTrans, LORIA) – Étiquetage POS, lemmatisation (macaon, LIF) – Analyse syntaxique (macaon, LIF) Résultat : fichier conll (conll-X + 2 colonnes d’estampilles temporelles) ANNIS - Corli - 14/11/2016 7 Orfeo : POS ADJ (adjectifs qualificatifs) : méchant, petit, long, gigantesque, drôle, rouge, etc. ADN (adverbes de négation) : pas, jamais, nullement, guère, plus, etc. ADV (adverbes) : savamment, peut-être, in extremis, très, environ, etc. CLI (autres clitiques) : te, lui, -le, -y, en, -leur, nous, etc. CLN (clitique de négation) : ne CLS (clitiques sujets) : tu, elles, vous, -vous, c, etc. COO (conjonctions de coordination) : et, ou, alias, mais encore, voire, puis, etc. CSU (conjonctions de subordination) : au fur et à mesure qu, tandis que, lorsque, etc. DET (déterminants) : cette, certains, quelques, un, etc. INT (interjections) : hein, ben, allô, pfff, no comment, niark, okidoki, parbleu, etc. NOM (noms) : diplodocus, Montastruc-la-Conseillère, topinambour, Google, etc. NUM (nombres) : six, treize, milliard, quatorze, mille, billion, etc. PCT (signes de ponctuation) : !, ?, !, etc., (, », etc. PRE (prépositions) : des, nonobstant, parmi, pour cause de, par delà, outre, etc. PRO (pronoms) : moi, celles, les tiens, plusieurs, vous-mêmes, nul, pas grand-chose, etc. PRQ (pronoms interrogatifs-relatifs) : combien est-ce que, lequel, pourquoi, que, etc. VNF (verbes à l'infinitif) : tenir, poindre, jouer, entendre, etc. VPP (verbes au participe passé) : tenu, point, joué, entendu, etc. VPR (verbes au participe présent) : tenant, poignant, jouant, entendant, etc. VRB (verbes à la forme finie) : tiens, poignent, joueraient, entendissions, etc. X (mot inconnu, étranger ou tronqué de catégorie indécidable) : El Paìs, fuck you, etc. ANNIS - Corli - 14/11/2016 8 Orfeo : lemmes Les lemmes sont la forme pour les lexèmes invariables, la forme infinitive pour les verbes, le singulier pour les noms et le masculin singulier pour les adjectifs. ● Le lemme pour les articles (DET) et les pronoms clitiques (CLI) le, la, l, les est le ● le lemme pour du et des est de+le. ● ● ● ● Le lemme pour les pronoms de 1ère et 2ème personne je, tu, nous, vous, me, te … est la forme. Le lemme pour les clitiques sujet (CLS) de 3ème personne (il, ils, elle, elles) est la forme masc.sing. il. Le lemme pour les pronoms sujet (PRO) de 3ème personne (lui, eux, elle, elles) est la forme du masculin singulier lui. Le lemme pour les déterminants possessifs (mon, ma, mes, ton, ta, tes …) est toujours son. ANNIS - Corli - 14/11/2016 9 Orfeo : dépendances ROOT (racine) : verbe, nom, adjectif, adverbe, préposition, coordination subj (sujet) aux (auxiliaire): seuls être et avoir dep (complément) de verbe, de nom, d’adjectif, de préposition, d’adverbe, de coordination spe (spécifieur) periph (complément à droite du verbe) para (éléments de même fonction coordonnés ou énumérés) disflink (segment non analysable, disfluences) dm (éléments flottants) ANNIS - Corli - 14/11/2016 10 Orfeo : exemple http://ortolang107.inist.fr/annis-sample/fleuro n/V_Scol_endo_02_P4.html Accès réservé le temps de la formation identifiant : corli mot de passe : orfeo ANNIS - Corli - 14/11/2016 11 TP 1 : premiers pas avec ANNIS ANNIS - Corli - 14/11/2016 12 ANNIS : premiers pas http://ortolang107.inist.fr/annis-gui/ ● Composition de l’interface utilisateur ● Accès à la documentation, aux méta-données ● Sélection des corpus, des options ● Requête et visualisation des résultats ● Partage d’un résultat ● Fonctionnalités d’export ANNIS - Corli - 14/11/2016 13 ANNIS : premiers pas ● Annis Query Language (AQL) : http://corpus-tools.org/annis/aql.html ● Recherche par formes ● – "vous" (équivalent à tok="vous") – Disjonction : "vous" | "Vous" – Expressions régulières : /[Vv]ous/ Recherche de tokens successifs – . opérateur de "précédence" ● Ex : "vous" . "le" ("vous" directement suivi de "le") (équivalent à "vous" & "le" & #1 . #2) ● ● "vous" .* "le" ("vous" directement ou indirectement suivi de "le" (50 tokens max.)) "vous" .1,5 "le" ("vous" séparé de "le" par 1 à 5 tokens) ANNIS - Corli - 14/11/2016 14 Annis : premiers pas ● Méta-données – ● "vous" . "le" & meta::nombreLocuteurs="2" ("vous" directement suivi de "le" dans un texte avec deux locuteurs) Annotations – annotation_name = value POS = "CLS" – POS!= "CLS" (négation) – POS /CL./ (regex : tous les clitiques) – "pour" . POS = "ADV" ("pour" directement suivi d’un adverbe) – LEMMA = /.+ment/ . POS = "ADJ" (token dont le lemme se termine par "ment" directement suivi d’un adjectif) – ANNIS - Corli - 14/11/2016 15 Annis : premiers pas ● Deux conditions sur le même token – LEMMA = /.+ment/ _=_ POS!= "ADV" (un lemme se terminant par "ment" qui n’est pas un adverbe) (équivalent à LEMMA = /.+ment/ & POS!= "ADV" & #1 _=_ #2) ● Noeuds nommés – – name# permet permet de nommer un nœud recherché, à la manière d’une variable ment# LEMMA = /.+ment/ _=_ POS != "ADV" & adj# POS = "ADJ" & #ment . #adj ANNIS - Corli - 14/11/2016 16 Annis : premiers pas ● Dépendance – nœud →dep[deprel="dep_type"] noeud – "avec" →dep[deprel="dep"] node ("avec" gouverne un nœud quelconque avec une relation ‘dep’) – POS = "VPP" & #1:root (un participe passé est ‘root’) "avec" →dep[deprel!= "dep"] node & – #1 .2,5 #2 ("avec" gouverne un nœud avec une relation non ‘dep’. Les deux nœuds sont séparés d’au moins un token) ANNIS - Corli - 14/11/2016 17 Annis : premiers pas ● ● Ce n’est qu’une vue partielle d’AQL – Opérateurs sur les relations de dominance (treebank) – Espace de noms permet d’interroger des annotations concurrentielles Documentation : http://corpus-tools.org/annis/aql.html ANNIS - Corli - 14/11/2016 18 Annis : premiers pas ● Travaux pratiques. Trouvez les requêtes correspondant aux demandes suivantes : – Les noms en "-eur" – Pronoms interrogatifs relatifs ne commençant pas par ‘qu’ – Idem mais suivi d’un verbe à l’infinitif – "juste" suivi d’un adjectif – Les suites NOM NOM – Les spécifieurs qui ne sont pas des articles ANNIS - Corli - 14/11/2016 19 ANNIS et les outils de corpus-tools.org ANNIS - Corli - 14/11/2016 20 ANNIS et corpus-tools.org ● ● Projet open source (CC BY-NC-SA, github) soutenu par – Humboldt-Universität zu Berlin – Georgetown university – Universität Potsdam ANNIS fait partie d’un ensemble logiciel (corpustools.org) composé de : – Salt : méta modèle de données linguistiques – Pepper : outil de conversion de données linguistiques – Atomic : logiciel d’annotation de corpus ANNIS - Corli - 14/11/2016 21 ANNIS : installation ● ANNIS est écrit en Java ● ANNIS fonctionne avec PostgreSQL ● ANNIS est un outil web, deux installations possibles : ● ● – Serveur : déploiement dans un serveur d’applications (tomcat) – Local : kickstarter Multiplateforme (Windows, Mac, Linux), 2 prérequis : java, PostgreSQL http://corpus-tools.org/annis/download.html ANNIS - Corli - 14/11/2016 22 ANNIS et Salt ● ● ANNIS est un outil web de recherche et de visualisation de données annotées à plusieurs niveaux, quelque soit le type d’annotation Possible grâce à Salt, méta modèle de données annotées – Indépendant de la langue – Indépendant du jeu d’étiquette – Pas lié à une théorie – Mutli-niveaux – Multimédia (support audio et vidéo) ANNIS - Corli - 14/11/2016 23 ANNIS et Salt ● ● Pour être aussi générique Salt a adopté volontairement une sémantique pauvre Salt repose sur des graphes – ● ● Pas une structure linguistique mais plutôt utilisé en mathématiques et en informatique Un graphe est formé de nœuds reliés par des arcs – Les arcs peuvent avoir une direction (graphe orienté) – Les nœuds peuvent recevoir des labels Salt utilise des graphes orientés – Les tokens sont les nœuds – Les annotations sont les étiquettes – Les relations sont les arcs ANNIS - Corli - 14/11/2016 24 ANNIS et Salt ● ● La souplesse de Salt permet d’intégrer de nombreux types d’annotations : – Plusieurs variétés de transcriptions pour un même token – Pos (même plusieurs tagsets concurrents) – Lemme – Entités nommées – Arbres syntaxiques et constituants – Relations de dépendance – Coréférence – Structures de discours – ... La condition est que les données puissent être modélisées sous forme de graphe ANNIS - Corli - 14/11/2016 25 ANNIS et Pepper ● ● ● Salt est un modèle, implémenté en classes Java, accessible par une API Il existe un format SaltXML mais il est peu utilisé Comment importer des données dans ANNIS ? – relANNIS, le format ANNIS est un jeu de tables en relation composées de données et d’identifiants numériques – Proche de Salt mais peu lisible, doit être généré ANNIS - Corli - 14/11/2016 26 ANNIS et Pepper ● Pepper : outil de conversion de données linguistiques ● Salt comme modèle pivot ● Import / export de nombreux formats – Elan – Exmeralda – TigerXML – Conll – ANNIS – RST – MMAX2 – Gate – PTB – ... ANNIS - Corli - 14/11/2016 27 TP 2 : Exploration de corpus avec ANNIS ANNIS - Corli - 14/11/2016 28 TP 2 ANNIS ● Sujets inversés ● Distribution par POS des relations ‘disflink’ ● Sujets non pronominaux ● Compléments adjectivaux du verbe "trouver" ● ● Double marquage sujet (un verbe avec deux sujets) ... ANNIS - Corli - 14/11/2016 29