Les résultats
La base de données du DES en json - 6Mo
Un TSV du top 10 des synonymes pour chaque mot - 4Mo
Pourquoi ?
Parce que l’on veut pouvoir avoir des synonymes sans avoir besoin d’internet. Cela favorise la résilience, la sobriété et l’interopérabilité des usages numériques. Initialement je pensais que ce serait fatiguant à faire et/ou que ça prendrait trop de place et/ou que ça n’était pas nécessaire au vu des besoins (personne n’a besoin de la totalité des synonymes de la langue française sous la main). Puis une amie m’a convaincu de l’inverse, notamment que ça ne devrait pas représenter de grosses quantités de données, alors j’ai essayé. Merci à elle !
Sur la page d’accueil on retrouve ce texte :
Constitué à partir de données – mots et liens – extraites de dictionnaires et des recherches de l’ELSAP, laboratoire associé au CNRS, puis du CRISCO, le DÉS constitue dans sa forme actuelle une œuvre originale, propriété de l’université de Caen Normandie. La consultation du DÉS et la reproduction de ses pages sont libres, mais la base de données reste la propriété exclusive de l’université. L’utilisation de copies de cette base de données ne peut se faire que sous contrat de licence avec l’université. En conséquence, toute requête automatique visant à collecter les données du DÉS est strictement interdite.
Ce qui va suivre dans cet article est donc illégal 😲
Pourtant le CRISCO est financé par de l’argent publique et rend déjà accessible la totalité des données du DES via son interface web. De plus le ministère de l’enseignement supérieur et de la recherche dispose d’un Plan national pour la science ouverte qui stipule à plusieurs reprises qu’il faudrait ouvrir autant que possible les données de la recherche. En réalité le DES est déjà remarquable en cela qu’il rend tout accessible via au moins une interface, même si ce n’est pas celle que je préfère, communique bien sur les statistiques d’utilisation du service, la vie du projet et permet même à n’importe qui de proposer des modifications. Compte tenu des efforts déjà consentis par le CRISCO, j’ai du mal à comprendre pourquoi tracer une ligne rouge aux requêtes automatiques1. Je vais donc, l’esprit tranquille, procéder à utiliser une copie de cette base de donnée sans contrat de licence. Et sans faire de requête automatique.
Comment ?
Je pense que la première et bonne façon de faire aurait été d’envoyer un mail à l’équipe de recherche expliquant le besoin. Il est assez probable que l’équipe réponde favorablement. Cela dit j’avais à cœur de vérifier si c’était possible autrement, via un bête lien quelque part dans la documentation.
En l’occurrence je ne suis pas parvenu à trouver ce que je voulais ni sur la page d’accueil ni la page de présentation ni la page du dictionnaire elle-même. Je n’ai peut-être pas les yeux en face des trous.
Je suis toujours un peu tiraillé entre deux sentiments dans ce genre de cas. D’un côté je ne suis plus surpris de voir encore un service, une donnée, rendue d’abord via une interface web avant même de se soucier si la donnée est accessible sous sa forme initiale et de l’autre je suis toujours surpris de voir que même le monde universitaire tombe dans ce travers. On me permet de partager la page web dans linkedin mais pas de télécharger la base de donnée.
La version autonome
Heureusement il existe une version dîtes “autonome” disponible ici. Qui dit pas de connexion internet dit toutes les données en locale. Il devrait donc exister un fichier contenant ce qu’il nous faut. On télécharge 54Mo de données zippées, 207Mo décompressés :
$ curl -Ls https://crisco4.unicaen.fr/des/a_DES.zip > des.zip
$ unzip des.zip
$ du -hs des
207Mo
Pour explorer le contenu du dossier on fait ensuite un grep un peu massif là dedans et on le pipe dans fzy dont la sortie sera ouverte dans vim :
grep -rnIH |
fzy -l 100 |
cut -d':' -f-2 | sed 's/:/ +/' |
xargs -or vim
Si vous êtes sur un ordi pas très puissant ça n’est probablement pas l’idée du
siècle mais passons. En cherchant un mot comme “machin” je trouve des occurrences
intéressantes dans le fichier sortieDES.txt
, on le sélectionne pour l’ouvrir.
Effectivement on y trouve un gros objet json du type :
{
mot : {
synonymes: [
1,
2,
...],
liste10: [
1,
chiffre,
2,
chiffre2,
...];
Nous avons trouvé notre base de donnée ! Le fichier fait 36Mo en tout. Si vous
le voulez sans avoir à télécharger l’application java en entier je propose une
version compressée que vous pouvez décompresser avec gunzip
des.json.gz
.
TSViser le fichier
J’aime bien le TSV et en réalité ne suis qu’intéressé par la “liste10”, c’est à dire le top 10 des synonymes les plus “proches”. J’ai donc créé un format TSV un peu moche pour contenir ces infos :
cat sortieDES.txt | jq 'keys_unsorted' | sed '1 d;$ d' > mots
cat sortieDES.txt | jq '.[].liste10|join(";")' > synonymes
paste mots synonymes | tr -d '",' | sed -E 's/([0-9]);([^0-9])/\1\t\2/'g > data
Je suppose que l’on peut faire ça avec une seule commande jq mais j’y comprends
pas grand chose. Au final data
ressemble à :
abaisse-langue spatule;50
abaissement baisse;41 dégénérescence;31 décadence;31 déclin;29 avilissement;28 diminution;26 dégradation;26 déchéance;22 dépréciation;22 affaiblissement;19 détérioration;14 affaissement;14 rabaissement;14 honte;11 bassesse;11 indignité;10
abaisser rabaisser;49 avilir;41 déprécier;23 humilier;23 baisser;20 dégrader;20 diminuer;17 flétrir;15 ravaler;14 réduire;13 courber;13 abâtardir;11 salir;11 rabattre;11 rapetisser;9 affaiblir;9
abajoue bajoue;200 joue;40
C’est un format qu’on peut requêter avec par exemple :
$ grep "^manger\t" data | cut -f2- | tr ';\t' '\t\n'
bouffer 20
dévorer 19
engloutir 14
avaler 14
croquer 13
consumer 13
s'empiffrer 11
dépenser 11
absorber 10
dissiper 9
user 9
ronger 8
se gaver 8
engouffrer 8
dilapider 8
se gorger 8
Ce format est disponible ici.
-
contre lesquelles rien n’est fait par ailleurs ↩