DEM en format JSON-lines

JSON est un langage de balisage souvent utilisé dans le domaine du TAL pour lequel plusieurs outils de manipulation très efficaces ont été développés. Ce document présente l'organisation du DEM ainsi que des exemples simples d'utilisation de la version JSON.

Elle est publiée en format JSON lines: chaque entrée du lexique est une ligne du fichier et chaque ligne est une expression JSON qui peut être traitée facilement avec toute librairie manipulant ce type de données. Le fait que chaque entrée soit une seule ligne facilite les extractions par des outils tels que jq ou même grep. Ces extractions peuvent ensuite être manipulées facilement avec d'autres outils bien connus des informaticiens-linguistes.

Les prochaines sections décrivent le format JSON pour LVF et DEM et donne quelques exemples d'utilisation avec l'outil jq. Vous pourriez consulter cette excellente introduction à jq.

Les descriptions se limitent à donner les noms de champs qui sont identiques à ceux des documents originaux. Ces descriptions sont formalisées sous la forme d'un JSON-RNC, un formalisme inspiré de la forme compacte de Relax-NG, mais qui devrait être familière à quiconque connaît JSON. Ceci sert non seulement de documentation, mais aussi d'outil de validation des entrées ce qui en garantit le format attendu.

Une description d'un enregistrement JSON-RNC est une liste de champs, chacun suivi du type de la donnée attendue. À priori, un champ est obligatoire à moins d'être suivi par un point d'interrogation (?). Certaines contraintes supplémentaires peuvent être ajoutées: par exemple, les valeurs minimum ou maximum, la longueur d'une liste ou une expression régulière qui correspond aux valeurs acceptables pour ce champ. Ces contraintes apparaissent entre parenthèses précédées de @ après le nom du type de la valeur. Comme les contraintes d'expression régulière sont très fréquentes, il est possible d'indiquer cette expression régulière entre deux obliques (/.../) au lieu d'indiquer string@(pattern="...").

Description d'une entrée

Une entrée du DEM est composé de 14 champs, dont les 12 premiers correspondent aux colonnes du fichier CSV décrits dans la documentation originale rédigée par Françoise Dubois-Charlier.

Voici un exemple de l'entrée pour le mot abeille. L'indentation qui permet de faire ressortir la structure n'est évidemment pas présente dans le format JSON lines, où toute l'entrée est placée sur une seule ligne.

{"CA":{"categorie":"N",
       "code":"-9",
       "genre":"F",
       "type":"animal"},
 "CONT":"A q nutri",
 "DOM":{"code":"ENT",
        "nom":"entomologie"},
 "M":{"mot":"abeille"},
 "OP":"suc",
 "OP1":"S3j1",
 "SENS":"apidé,hyménoptère"}

Schéma

start = entree-DEM
entree-DEM = {
  M             : string, 
  no?           : /\d+/, 
  reflexif?     :boolean, 
  exclamatif?   :boolean, 
  interrogatif? :boolean, 
  h-aspire?     :boolean,
  CONT: string,
  DOM: { nom              :string, 
         niveau-de-langue?:string, 
         regionalisme?    :string, 
         majuscule?       :string, 
         depose?          :boolean,
         code             :string 
        },
  OP: string,
  SENS: string,
  OP1: string,
  CA: { categorie :/N|A|Adv|Conj|Interj|Vt|Vi|Vp/, 
        genre?    :/M|F|MF/, 
        type?     :/non-anime|humain|animal/, 
        code      :string 
       },
  id:integer,
  LVF?:boolean
}

Exemples d'utilisation avec jq sous Linux

Pour connaître le nombre d'expressions (c-à-d, un mot contenant au moins une espace):

jq -c 'select(.M |contains(" "))' < DEM.jsonl| uniq|  wc -l

qui retourne 13471.

Pour connaître les québécismes présents dans le DEM:

jq -r 'select(.DOM.regionalisme=="québécois")|.M' < DEM.jsonl

qui retournera les 14 mots suivants:

argonaute
avionnerie
blanchon
crosseur
demiard
farlouche
ferlouche
fudge
pénard
péquiste
pied-de-roi
soccer
traversier
vivoir

Accès aux ressources