Création d'entrées de dictionnaires à partir des fichiers GCIDE_XML

Contexte

La version GNU du The Collaborative International Dictionary of English est une version XML bien formé du CIDE. GCIDE est disponible librement sous forme d'un ensemble de fichiers ASCII contenant le texte balisé d'un dictionnaire anglais substantiel (plus de 130 000 articles).

Extrait du préambule de chaque fichier:

               This dictionary was derived from the
             Webster's Revised Unabridged Dictionary
                     Version published 1913
                   by the  C. & G. Merriam Co.
                       Springfield, Mass.
                     Under the direction of
                    Noah Porter, D.D., LL.D.

                            and from
               WordNet, a semantic network created by
                  the Cognitive Science Department
                     of Princeton University
                      under the direction of
                       Prof. George Miller

                 and is being updated and supplemented by
             an open coalition of volunteer collaborators from
                           around the world.

         This electronic dictionary is the starting point for an 
    ongoing project to develop a modern on-line comprehensive encyclopedic
    dictionary, by the efforts of all individuals willing to help build a
    large and freely available knowledge base.  Contributions of data,
    time, and effort are requested from any person willing to assist creation
    of a comprehensive and organized knowledge base for free access on the
    internet.  Anyone willing to assist in any way in constructing such a
    knowledge base should contact:

         Patrick Cassidy          pc@worldsoul.org
         735 Belvidere Ave.       Office: (908)668-5252
         Plainfield, NJ 07062
         (908) 561-3416

       Last edit January 17, 2002.

En 2002, Patrick Cassidy a converti les fichiers ASCII de format quasi-SGML en documents XML bien formés (environ 56 Mo). L'ensemble des balises utilisées dans le dictionnaire est donné dans le fichier GCIDE's tagset.web. Les fichiers qui décrivent la structure du GCIDE sont disponibles à http://micra.com/dictionary/. Le document XML complet est composé du document principal, qui fait référence à plusieurs documents auxiliaires, soit un pour chaque lettre de l'alphabet. Chacun de ces fichiers auxiliaires contient l'information sur les mots qui commencent par une lettre donnée. Le fichier XML principal utilise des System entities qui incluent ces fichiers auxiliaires, afin de constituer un document XML global complet. Seul le fichier XML global est un document XML bien formé.

La version XML est utile pour extraire certaines informations, mais elle conserve la plus grande partie du balisage d'origine, qui sert à la mise en page. En particulier, le document complet est vu comme une série de paragraphe. Pour récupérer toute l'information associée à une entrée donnée, il faut analyser le document à partir d'un certain point jusqu'à l'entrée suivante. Ce processus encombrant et sujet à l'erreur n'est pas commode pour le traitement de la langue naturelle.

Nous présentons donc ici une nouvelle version du GCIDE possédant les caractéristiques suivantes :

  • Le dictionnaire est structuré comme une série d'entrées qui rassemblent, à l'intérieur d'une seule balise XML, toute l'information au sujet d'une entrée donnée. Cette entrée conserver l'information d'origine, mais la subdivise en acceptions et sous-acceptions pour une entrée donnée.
  • La plupart des balises typographiques ont été retirées, mais les balises sémantiques et fonctionnelles sont conservées.
  • Le dictionnaire est validé à l'aide d'un schéma RelaxNG qui fait également office de documentation sur la structure des entrées.
  • Chaque fichier (un par lettre) est aussi un fichier XML valide.
  • Le dictionnaire complet est construit à partir de chaque fichier-lettre à l'aide d'instructions XInclude.
  • La plupart des noms de balises d'origine ont été conservés, même s'il aurait été opportun d'en renommer quelques-unes.
  • ATTENTION : Ce processus a remplacé les entités de caractères par leur contenu.

Obtenir le dictionnaire

Pour l'impatient intéressé à accéder au produit final, soit les fichiers XML du dictionnaire :

  • télécharger ce fichier Zip (27 Mo), 114 Mo une fois décompressé!
  • new-entries/gcide.xml est le fichier principale qui XInclude tous les autres
  • new-entries/gcide-entries.xml (64 Mo) est le dictionnaire complet en un seul fichier.
  • La structure du dictionnaire peut être consultée dans le schéma Relax NG avec ses schémas inclus automatiquement générés.
  • Un exemple de feuille de style XSLT 2.0 est fourni afin d'afficher les entrées dans une page HTML.

Processus de conversion

La conversion a été faite en utilisant un script bash qui lit un répertorie contenant les vieux (old) fichiers GCIDE_XML, légèrement modifiés pour ne corriger que les erreurs évidentes de balisage qui causaient des erreurs de validation. Le script crée un répertoire new avec une nouvelle structure. Puisque le fichier d'origine est un document XML valide, nous avons utilisé des feuilles de style XLST 2.0 pour créer les entrées de dictionnaire.

Ce script est donné ici. Voici les étapes principales :

  1. Créer un fichier contenant seulement les entités caractères XML (XML character entities);
  2. Créer un fichier distinct pour chaque lettre et section du dictionnaire;
  3. Créer le fichier principal incluant chaque lettre et section;
  4. Créer un fichier unique combinant tout les fichiers, au cas où le processeur XML interdit les instructions XInclude.
  5. Créer un nouveau répertoire contenant seulement les fichiers d'entrée et le compresser (zip).

Initialement, nous avions prévu de créer une structure simple à partir de l'ancienne, mais, étant donné la taille du fichier d'origine et les différents types de balisage utilisés au fil des années, nous avons décidé de conserver la plupart des balises d'origine et nous avons plus ou moins converti le DTD d'origine en schéma. Le DTD lui-même avait été créé automatiquement à partir des fichiers. Nous laissons à d'autres bénévoles le soin de reconcevoir le tout avec un schéma plus simple.

Nous avons créé un fichier Excel à partir du DTD d'origine afin de définir les correspondances entre les balises et les attributs d'origine et ceux utilisés dans la nouvelle version. Puisque qu'une feuille de style XSLT ne peut facilement traiter les fichiers en format natif Excel, nous exportons une version version CSV.

Nous avons développé une feuille de style de conversion qui prend en paramètre les correspondances entre balises et produit une partie du schéma RNC et une partie de la feuille de style XSLT du processus de conversion. Ces fichiers sont ensuite inclus dans le schéma complet Relax NG (format compact) et la feuille de style de conversion.

La feuille de style de conversion est un processus relativement ad hoc qui effectue les transformations suivantes sur le contenu des balises p :

  • suppression des balises source et de leur voisinage immédiat (<br/> et crochets) et inclusion de cette méta-information dans la première balise du contenu de la balise p;
  • insertion du texte et balises entre “ and ” au sein de balises <q>;
  • lorsqu'une balise <au> suit un élément, son contenu est inséré en tant qu'attribut au de l'élément;
  • groupement de tous les paragraphes, subordonnés à la même entrée;
  • pour chaque entrée, division en numéros d'acception, puis en sous-acceptions;
  • suppressions des noeuds texte contenant seulement de la ponctuation ou des tirets et suppression des parenthèses ouvrantes et fermantes, des accolades et des crochets.

Le processus de transformation XML a été développé dans l'éditeur Oxygen XML Editor et les instructions de traitement (processing instructions) appropriées ont été insérées dans les fichiers XML. Cependant, une validation externe utilisant Jing ou  une transformation utilisant  Saxon peuvent être utilisées.

Accès aux fichiers

Pour poursuivre ce travail (ou pour le déboguer...), il serait utile d'examiner les fichiers et répertoires suivants :

  • Fichier Excel donnant la correspondance entre les balises d'origine et celles utilisées dans cette version. Ce fichier contient les colonnes suivantes :
    1. type de balise suivant la classification donnée dans le fichier GCIDE's tagset.web;
    2. une définition très courte de la signification de chaque balise. Lorsqu'elle est vide, nous considérons que le nom de la balise suffit pour la documenter.
    3. balise dans le vieux gcide;
    4. attributs de la balise d'origine;
    5. contenu de la balise utilisant la notation DTD; le contenu de cette colonne a d'abord été produit à partir du DTD d'origine, mais a dû ensuite être modifié afin d'être en mesure de valider le fichier XML;
    6. nouvelle balise suivant la convention
      • =: la nouvelle balise est identique
      • #: la balise a été supprimée dans la nouvelle version
      • *: la balise est définie explicitement dans gcide.rnc
      • identificateur: la balise change de nom et s'appelle dorénavant identificateur (ceci a été fait afin de limiter le nombre de balises différentes qui semblaient synonymes)
    7. attributs de la nouvelle balise

    Si vous modifiez ce fichier, alors sauvegardez-le aussi sous format csv et lancez la feuille de style pour régénérer la partie correspondante du schéma RelaxNG et la feuille de style de conversion.

  • script de conversion script en Bash;
  • la feuille de style XSLT 2.0 pour créer les entrées qui peut être appliquées à l'aide de Saxon;
  • la validation Relax NG à l'aide de deux schémas (gcide.rnc et gcide-conv.rnc) faite avec Jing qui à son tour utilise: jing.jar, isorelax.jar, saxon.jar, xercesImpl.jar et xml-apis.jar;
  • Le répertoire pour le projet complet est disponible en un seul fichier zip.

Exploration du dictionnaire

Vous pouvez utiliser ce programme pour explorer les entrées et les extraire du très grand document XML. Elles peuvent ensuite être affichées en une page HTML à l'aide de cette feuille de style XSLT.

Pour se donner une idée du contenu du dictionnaire, vous pouvez chercher les entrées qui correspondent à un patron d'expression régulière sur notre serveur. Ce patron peut être :

  • un mot unique comme give ou jack;
  • une expression, se conformant à la syntaxe des expressions régulières en XSL, comme tr.*d, qui retourne les entrées commençant par tr et se terminant par d (il y en a 89 pour le moment).

L'expression régulière est utilisée lors de la recherche sans tenir compte de la casse, et ce, sur le contenu de la clé complète, soit le contenu de la première balise hw en ne considérant seulement que les lettres, espaces, tirets et apostrophes.

Trouver

«.» pour un caractère quelconque; «.*» pour une séquence quelconque de caractères (possiblement vide)

Étant donné qu'un volumineux document XML doit être utilisé, cette opération peut prendre un peu de temps à notre serveur.

S'il vous plaît, n'utilisez pas ce formulaire pour obtenir des centaines d'entrées de dictionnaire; téléchargez plutôt les fichiers mentionnés plus haut.

Si la première lettre de l'expression régulière est une lettre, alors seulement le fichier XML pour les mots commençant par cette lettre seront consultés, autrement, le dictionnaire XML complet sera parcouru.

Les entrées récupérées à partir de cette requête seront affichées à l'aide de cette feuille de style XSLT. Celle-ci ne traite pas toutes les balises, alors certaines parties des entrées pourront apparaître verbatim entre balises rouges. Cela donne néanmoins une bonne idée du contenu de l'entrée.

Plus d'information

Si vous éprouvez un problème (ou de la joie!) en utilisant ces fichiers, contactez :

Guy Lapalme, DIRO (Département d'informatique et de recherche opérationnelle), Université de Montréal.
Octobre 2009 - Travail effectué lors d'un séjour au LIF, Université de Marseille