Citations, métriques alternatives, Open Access, data : comment extraire facilement l’information pour l’analyser
Quelles publications sont Open Access ? Combien de fois sont-elles citées ? Font-elles l’objet de reprise sur Twitter ? Ont-elles des datasets associés ? Autant de questions qui nécessitent d’interroger plusieurs sources avant de pouvoir commencer l’analyse. Mais si on ne maîtrise pas certains outils ou langages informatiques, la collecte et la compilation des données pour enrichir un corpus de publications peut s’avérer difficile.
L’objectif ici est de présenter des “extracteurs de données” très simples, principalement conçus dans Google Sheets, pour un usage immédiat ou pour être adaptés facilement à des dizaines d’autres situations.
Le lecteur pressé pourra directement accéder aux différents extracteurs et se passer de leur présentation en cliquant sur ces liens :
- Extracteur Unpaywall-HAL :
http://bit.ly/ExtracteurUnpaywallHAL - Extracteur Altmetric :
http://bit.ly/ExtracteurJSONAltmetric - Extracteur de citations dans Dimensions :
http://bit.ly/ExtracteurCitationsDimensions - Extracteur de datasets associés :
http://bit.ly/ExtracteurJSONData
Open Access : un extracteur Unpaywall & HAL
Nous avons eu l’opportunité de présenter cet extracteur à l’occasion des journées CasuHAL 2018 au cours de l’atelier “Comment booster le taux de full-texts dans HAL“ que nous avons animé avec Romain Boistel. La démarche proposée lors de cet atelier était en quelque sorte le deuxième épisode du post du même nom que nous avions publié sur Carnet’IST en 2017.
Cet extracteur repose sur le script ImportJSON initialement publié ici, désormais maintenu via cette page, et qui, une fois déployé, met à disposition la fonction ImportJSON()
dans Google Sheets. Elle permet alors d’extraire sans coder toutes les informations qu’une URL retourne au format JSON. C’est le cas de l’API d’Unpaywall, dont c’est le format de sortie unique et de celle de HAL à qui on indique dans un paramètre le format souhaité.
[On ne présente plus Unpaywall, anciennement oaDOI, dont nous avons déjà parlé ici et que nous avions testé à ses débuts ici.]
Sur la base d’une liste de DOIs, cet extracteur récupère l’information qui permettra de déterminer si la publication recherchée (via son DOI donc) est en Open Access ou pas et de livrer les détails de l’analyse.
Pour utiliser l’extracteur Unpaywall-HAL,
cliquer ici et faire une copie dans son compte Google.
Pour collecter les données nécessaires à ses propres analyses, il suffit de faire un simple copier-coller d’une liste de DOIs en colonne C. Il faut aussi saisir son mail en cellule A8 et appliquer ensuite tous les calculs en utilisant la poignée de recopie. Quelques instants de patience (plus ou moins selon le nombre de DOIs) et il suffit d’admirer le résultat !
Comment ça marche ? Premier niveau de détails
Les DOIs sont collés colonne C et leur statut Open Access est calculé colonne D, “bilan OA”.
L’API d’Unpaywall nous retourne pour chaque DOI :
- colonne E : si la publication est en Open Access ou pas
- colonne F : si la revue est une revue Open Access ou pas
- colonne G : si la revue est dans le DOAJ ou non
- colonne H : la meilleure source éventuelle du full-text (chez l’éditeur ou dans une archive ouverte)
L’API de HAL nous retourne :
- colonne I : l’identifiant HAL du dépôt s’il existe
- colonne J : le nombre de notices pour le DOI testé ; évidemment c’est ici l’occasion de procéder à quelques dédoublonnages dans HAL…
- colonne K : si la publication est en OA selon Unpaywall ; HAL a effectivement intégré Unpaywall dans son interface (voir billet du blog du CCSD) sur les notices sans texte intégral afin d’offrir la possibilité à celui qui les consulte de rebondir vers une version Open Access qu’Unpaywall aurait trouvée. Et si Unpaywall ne trouve rien, HAL interroge ISTEX. ATTENTION : si l’API de HAL trouve in fine la publication dans ISTEX, la valeur indiquée comme bilan OA dans l’extracteur restera “non-OA” puisqu’ISTEX n’est pas une base Open Access.
- colonne L : en fonction de ce qui est retournée colonne K, l’URL pointant vers le fichier est récupérée
- colonne M : l’URL du full-text si le dépôt existe
Comment ça marche vraiment ? Deuxième niveau de détails
La fonction ImportJSON
fonctionne de la manière suivante, avec 3 arguments :
=importJSON(URL, requête, options)
Nous choisissons noHeaders
(cellule A5) comme option d’affichage des résultats sans les en-têtes. Il nous reste donc à bâtir les 2 URLs qui permettront d’interroger l’API d’Unpaywall et celle de HAL.
Unpaywall
L’URL pour interroger Unpaywall est simplement constituée de 3 parties :
URL de l'API + le DOI + votre mail
https://api.unpaywall.org/v2/DOI?email=adresse_mail
https://api.unpaywall.org/v2/DOI_en_ColonneC?email=votre_mail_en_A8
https://api.unpaywall.org/v2/10.5194/tc-10-1647-2016?email=mail@tutu.com
[Pour faciliter la lecture du fichier JSON retourné, il est conseillé d’installer une extension dans le navigateur, comme par exemple celle-ci pour Chrome.]
La fonction ImportJSON
attend ensuite en deuxième argument une requête. Nous en avons 4 à formuler pour obtenir les valeurs qui nous intéressent :
- colonne E :
/is_oa
- colonne F :
/journal_is_oa
- colonne G :
/journal_is_in_doaj
- colonne H :
/best_oa_location/evidence
Par commodité, pour éviter d’avoir à les ressaisir à chaque fois, ces 4 requêtes sont saisies dans les cellules A15 à A18.
HAL
L’API de HAL fonctionne de la même manière, il faut cependant préciser le format de sortie et les champs à retourner. Le mail n’est pas nécessaire :
https://api.archives-ouvertes.fr/search/?wt=json&fq=doiId_s:(DOI)&fl=champ_attendu1,champ_attendu2
https://api.archives-ouvertes.fr/search/?wt=json&fq=doiId_s:(DOI_en_ColonneC)&fl=halId_s,fileMain_s,linkExtId_s,linkExtUrl_s
Les 5 requêtes à formuler sont renseignées dans les cellules A20 à A24 pour les colonnes suivantes :
- colonne I :
/response/docs/halId_s
- colonne J :
/response/numFound
- colonne K :
/response/docs/linkExtId_s
(pour trouver un full-text dans Arxiv ou Pubmed, puis pour le statut OA qu’Unpaywall renvoie à HAL, puis éventuellement pour le full-text dans ISTEX) - colonne L :
/response/docs/linkExtUrl_s
(URL vers le document repéré éventuellement en colonne K) - colonne M :
/response/docs/fileMain_s
(URL vers le document repéré éventuellement dans HAL via son DOI)
Et, la formule en colonne D permet de déterminer si le document est accessible en Open Access en fonction de ce qui est retourné par les 2 APIs.
Pour adapter cet extracteur à d’autres besoins, il suffit tout simplement d’ajouter ou de modifier les requêtes déjà renseignées. Attention cependant lorsqu’on adapte celles de HAL : il ne faut pas oublier d’ajouter tous les champs requis en fin d’URL, mais la cellule A13 simplifie cette tâche.
Enfin, il faut veiller à ne pas dépasser les quota de requêtes autorisées par Google et par Unpaywall.
L’info vérité
Nous avons relevé de nombreuses incongruités entre le résultat direct d’Unpaywall et celui que HAL renvoie d’Unpaywall. Le CCSD nous explique qu’il ne recalcule pas le résultat d’Unpaywall tous les jours et qu’il peut donc exister un problème de synchronisation entre HAL et Unpaywall. Le mystère reste cependant entier pour certains cas qui génèrent depuis des mois le même résultat surprenant, à la fois du côté de HAL et d’Unpaywall. Voir par exemple ce DOI 10.1016/j.cemconres.2015.01.002 qui n’est pas en OA selon Unpaywall mais qui pointe vers une thèse dans Pastel selon ce que HAL renvoie d’Unpaywall…
Métriques alternatives, citations, datasets : un extracteur et des milliers de possibilités…
Selon les mêmes principes et avec le même script ImportJSON
, on peut imaginer une infinité d’extracteurs :
- Métriques alternatives : Altmetric, qui fournit des métriques alternatives qu’on a l’habitude de voir sous la forme d’un donut coloré, met également à disposition une API dont les résultats sont retournés au format JSON. Il est alors très simple de mettre en œuvre un Google Sheet dynamique pour extraire certaines valeurs avec un DOI en entrée.
A noter que parmi les indicateurs livrés, Altmetric repère depuis quelques mois les brevets citant la publication examinée, ce qui peut révéler l’exploitation inattendue de certains travaux de recherche.
Pour utiliser l’extracteur Altmetric,
cliquer ici et faire une copie dans son compte Google.
- Citations : Dimensions, une base bibliographique lancée début 2018 par Digital Science peut aussi être interrogée via son API, sur quelques données seulement. On peut notamment récupérer le nombre de citations.
Attention !! Les valeurs retournées pour les Top 1%, 5% et 10% sont actuellement inexploitables comme indiqué par Dimensions lorsque nous les avons interpellés sur ce point sur Twitter :
@freddie2310 For now, the highly_cited 1-10 will be always set on false until we officially launch the indicator. It was active for a day or two in a development version when you accessed it. Hope this helps – Christian from the Dimensions team
— Dimensions (@DSDimensions) July 22, 2018
Pour utiliser l’extracteur Dimensions,
cliquer ici et faire une copie dans son compte Google.
- Données associées : Scholexplorer, une infrastructure technique permettant d’identifier les liens entre publications et datasets, propose une API que nous avions déjà présentée dans ce billet sur les données. Le service s’appelait à l’époque Scholix. Toujours avec une liste de DOIs en entrée, on peut savoir rapidement dans quelle proportion des datasets sont disponibles.
Pour utiliser l’extracteur de datasets associés,
cliquer ici et faire une copie dans son compte Google.
Bien d’autres déclinaisons…
Nous avons eu recours à ce script à de nombreuses reprises pour extraire des données qui n’avaient rien à voir avec celles nécessaires pour faire de la bibliométrie, comme par exemple pour obtenir le nombre de followers pour une liste importante de comptes Twitter ou encore étendre des URLs raccourcies pour extraire le nom de domaine de l’URL d’origine.
Il existe bien sûr d’autres outils pour obtenir les mêmes résultats, mais ce script JSON nous a à la fois paru simple d’utilisation et facilement adaptable. On peut faire des choses similaires dans Excel avec notamment les fonctions SERVICEWEB
et FILTRE.XML
. C’est ce que nous avons aussi présenté aux journées CasuHAL avec un deuxième extracteur qui récupère les données de Sherpa Romeo produites en XML (à télécharger ici). En effet, ici la fonction IMPORTXML
de Google Sheets était beaucoup trop lente pour être exploitée.
Rapidminer (comme nous l’avons montré dans ce post) ou encore OpenRefine sont sans doute aussi d’excellentes alternatives mais bien plus complexes à mettre en œuvre.
[Image en une : CC BY-NC-ND clemmac on Foter.com]
OpenEdition vous propose de citer ce billet de la manière suivante :
Frédérique Bordignon (30 août 2018). Citations, métriques alternatives, Open Access, data : comment extraire facilement l’information pour l’analyser. Carnet'IST. Consulté le 14 novembre 2024 à l’adresse https://doi.org/10.58079/m8ni