Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (8638B)
1 #! page 2 title: Comment j\'ai volé le DES au CRISCO 3 author: Arthur Pons 4 description: Argent publique = Recherche publique, libérons le contenu du dictionnaire électronique des synonymes de sa cage webeuse 5 publication: 2024-05-24 6 7 sectionmd: main 8 9 Cet article a été partiellement réécrit suite aux demandes des participant·es 10 de PPPiraterie s'étant tenu à Cesure début avril 2025. Merci pour votre 11 enthousiasme ! 12 13 ## Les données et l'outil pour les parcourir 14 15 [La base de données du DES en json - 6Mo](des.json.gz)\ 16 [Un TSV du top 10 des synonymes pour chaque mot - 4Mo](data)\ 17 [L'outil pour parcourir les données](http://git.bebou.netlib.re/des/log.html) 18 19 ## Est-ce que c'est légale ? 20 21 Sur la [page d'accueil] on retrouve ce texte : 22 23 > Constitué à partir de données – mots et liens – extraites de dictionnaires et 24 > des recherches de l’ELSAP, laboratoire associé au CNRS, puis du CRISCO, le DÉS 25 > constitue dans sa forme actuelle une œuvre originale, propriété de 26 > l’université de Caen Normandie. La consultation du DÉS et la reproduction de 27 > ses pages sont libres, mais la base de données reste la propriété exclusive de 28 > l’université. L’utilisation de copies de cette base de données ne peut se 29 > faire que sous contrat de licence avec l’université. En conséquence, toute 30 > requête automatique visant à collecter les données du DÉS est strictement 31 > interdite. 32 33 Ce qui va suivre dans cet article pourrait être illégal 😲 34 35 Pourtant le CRISCO est financé par de l'argent publique et rend déjà accessible 36 la totalité des données du DES via son interface web. De plus le ministère de 37 l'enseignement supérieur et de la recherche dispose d'un [Plan national pour la 38 science ouverte] qui stipule à plusieurs reprises qu'il faudrait ouvrir autant 39 que possible les données de la recherche. En réalité le DES est déjà remarquable 40 en cela qu'il rend tout accessible via au moins une interface, même si ce n'est 41 pas celle que je préfère, communique bien sur les statistiques d'utilisation du 42 service, la vie du projet et permet même à n'importe qui de proposer des 43 modifications. Compte tenu des efforts déjà consentis par le CRISCO, j'ai du 44 mal à comprendre pourquoi tracer une ligne rouge aux requêtes automatiques[^1]. 45 Je vais donc, l'esprit tranquille, procéder à utiliser une copie de cette base 46 de donnée sans contrat de licence. Et sans faire de requête automatique. 47 48 Par ailleurs la question se pose de savoir ce qu'est une requête une automatique 49 et comment le CRISCO pourrait les détecter. On comprend bien qu'une requête via 50 l'utilisation de leur interface web est autorisée, on comprend bien que l'esprit 51 du texte est d'interdire un script qui scrapperait toute la bdd mais quid d'une 52 requête `curl` individuelle, formée à la main au moment même du besoin ? 53 54 Qui y'a-t-il de plus automatique dans le faite d'avoir un script comme celui-ci 55 56 mot="$1" 57 curl -Ls "https://crisco4.unicaen.fr/des/synonymes/$1" | 58 grep -E "height:8px" | grep -Eo '/des/synonymes/[^"]+' | 59 cut -d'/' -f4 | tr '+' ' ' 60 61 executé en écrivant `des manger` que dans le fait de faire construire la bonne 62 requête à firefox en écrivant dans une balise `input` et en cliquant sur le 63 bouton. C'est à mon sens strictement équivalent et l'on peut d'ailleurs trouver 64 des équivalences : l'argument passé à la commande est la balise `input` et son 65 contenu, l'appel à `curl` est le moteur de requête de firefox, le reste du code 66 est le moteur de rendu de firefox. 67 68 Je pense donc que les mentions légales du CRISCO devraient insister sur 69 l'interdiction de récupérer la totalité de la base sans faire de distinction 70 basée sur la manière de requêter leur base. Sauf qu'il est précisé que la 71 reproduction des pages est permise ce qui implique que si l'on partage nos 72 requêtes nous pourrions peu à peu reformer la totalité de la base de donnée 73 sans pour autant l'aspirer dans sa totalité à l'échelle individuelle. C'est 74 compliqué tout ça. 75 76 ## Comment j'ai collecter les données 77 78 Je pense que la première et bonne façon de faire aurait été d'envoyer un 79 mail à l'équipe de recherche expliquant le besoin. Il est assez probable que 80 l'équipe réponde favorablement. Cela dit j'avais à cœur de vérifier si c'était 81 possible autrement, via un bête lien quelque part dans la documentation. 82 83 En l'occurrence je ne suis pas parvenu à trouver ce que je voulais ni sur la 84 [page d'accueil] ni [la page de présentation] ni [la page du dictionnaire 85 elle-même]. Je n'ai peut-être pas les yeux en face des trous. 86 87 Je suis toujours un peu tiraillé entre deux sentiments dans ce genre de cas. 88 D'un côté je ne suis plus surpris de voir encore un service, une donnée, rendue 89 d'abord via une interface web avant même de se soucier si la donnée est 90 accessible sous sa forme initiale et de l'autre je suis toujours surpris de voir 91 que même le monde universitaire tombe dans ce travers. On me permet de partager 92 la page web dans linkedin mais pas de télécharger la base de donnée. 93 94 ### La version autonome 95 96 Heureusement il existe une version dîtes "autonome" disponible [ici]. Qui dit 97 pas de connexion internet dit toutes les données en locale. Il devrait donc 98 exister un fichier contenant ce qu'il nous faut. On télécharge 54Mo de données 99 zippées, 207Mo décompressés : 100 101 $ curl -Ls https://crisco4.unicaen.fr/des/a_DES.zip > des.zip 102 $ unzip des.zip 103 $ du -hs des 104 207Mo 105 106 Pour explorer le contenu du dossier on fait ensuite un grep un peu massif là 107 dedans et on le pipe dans fzy dont la sortie sera ouverte dans vim : 108 109 grep -rnIH | 110 fzy -l 100 | 111 cut -d':' -f-2 | sed 's/:/ +/' | 112 xargs -or vim 113 114 Si vous êtes sur un ordi pas très puissant ça n'est probablement pas l'idée du 115 siècle mais passons. En cherchant un mot comme "machin" je trouve des 116 occurrences intéressantes dans le fichier `sortieDES.txt`, on le sélectionne 117 pour l'ouvrir. Effectivement on y trouve un gros objet json du type : 118 119 { 120 mot : { 121 synonymes: [ 122 1, 123 2, 124 ...], 125 liste10: [ 126 1, 127 chiffre, 128 2, 129 chiffre2, 130 ...]; 131 132 Nous avons trouvé notre base de donnée ! Le fichier fait 36Mo en tout. Si vous 133 le voulez sans avoir à télécharger l'application java en entier je propose une 134 [version compressée](des.json.gz) que vous pouvez décompresser avec `gunzip 135 des.json.gz`. 136 137 ### TSViser le fichier 138 139 [J'aime bien le TSV](/amourtsv/) et en réalité ne suis qu'intéressé par la 140 "liste10", c'est à dire le top 10 des synonymes les plus "proches". J'ai 141 donc créé un format TSV un peu moche pour contenir ces infos : 142 143 cat sortieDES.txt | jq 'keys_unsorted' | sed '1 d;$ d' > mots 144 cat sortieDES.txt | jq '.[].liste10|join(";")' > synonymes 145 paste mots synonymes | tr -d '",' | sed -E 's/([0-9]);([^0-9])/\1\t\2/'g > data 146 147 Je suppose que l'on peut faire ça avec une seule commande jq mais j'y comprends 148 pas grand chose. Au final `data` ressemble à : 149 150 abaisse-langue spatule;50 151 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 152 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 153 abajoue bajoue;200 joue;40 154 155 C'est un format qu'on peut requêter avec par exemple : 156 157 $ grep "^manger\t" data | cut -f2- | tr ';\t' '\t\n' 158 bouffer 20 159 dévorer 19 160 engloutir 14 161 avaler 14 162 croquer 13 163 consumer 13 164 s'empiffrer 11 165 dépenser 11 166 absorber 10 167 dissiper 9 168 user 9 169 ronger 8 170 se gaver 8 171 engouffrer 8 172 dilapider 8 173 se gorger 8 174 175 Ce format est disponible [ici](data). 176 177 [page d'accueil]: https://crisco.unicaen.fr/dictionnaire-electronique-des-synonymes-des/ 178 [la page de présentation]: https://crisco.unicaen.fr/dictionnaire-electronique-des-synonymes-des/presentation-du-dictionnaire-electronique-des-synonymes/ 179 [la page du dictionnaire elle-même]: https://crisco4.unicaen.fr/des/ 180 [Plan national pour la science ouverte]: https://www.enseignementsup-recherche.gouv.fr/fr/le-plan-national-pour-la-science-ouverte-2021-2024-vers-une-generalisation-de-la-science-ouverte-en-48525 181 [^1]: contre lesquelles rien n'est fait par ailleurs 182 [ici]: https://crisco.unicaen.fr/dictionnaire-electronique-des-synonymes-des/version-autonome-du-dictionnaire-electronique-des-synonymes/ 183 184 endsection