OpenRefine ou comment passer des listes aux applications ABES : illustration avec IdRef et theses.fr ?

Problématique de départ : Comment passer une liste de paramètres à IdRef en entrée afin d’obtenir en sortie un type d’informations recherchées ? Par exemple, comment obtenir les identifiants IdRef d’une liste de personnes pour lesquelles on dispose du nom et du prénom ?

Condition : Il va de soi qu’il est exclu pour résoudre ce problème de passer ces noms-prénoms un à un dans l’interface de recherche IdRef.

Hypothèse : IdRef dispose d’un service d’interrogation sous forme de web services Solr à l’adresse suivante : http://www.idref.fr/Sru/Solr

Résolution

import   La première étape consiste à importer les données de base.

 

 

 

 

 

 

import2

 

Un premier traitement,  simple mais essentiel, consiste, pour chacune des colonnes de départ, à « ôter tous les espaces en début et fin de chaine de caractères ». Ensuite, on construit une colonne NomComplet dans laquelle le nom et le prénom sont séparés par une virgule et un espace. Si  ce n’est déjà fait, il convient également de passer le tout en minuscule.

 

 

 

import3A partir de cette mise en forme – opération indispensable du fait que l’index Solr est construit ainsi – il sera possible de requêter l’index « Personne » d’IdRef avec la fonctionnalité « by fetching URL » et une expression rédigée dans le langage GREL propre à OpenRefine dans le menu « Apply » :

 

Exemple de code GREL :

{

« op »: « core/column-addition-by-fetching-urls »,

« description »: « Create column jsonidref at index 3 by fetching URLs based on column NomComplet using expression grel:\ »http://www.idref.fr/Sru/Solr?q=persname_s:\ »+replace(value, ‘ ‘, ‘\\\\%20’)+\n\n\ »*&sort=score%20desc&version=2.2&start=0&rows=30&indent=on&fl=id,ppn_z,recordtype_z,affcourt_z&wt=json\ » »,

« engineConfig »: {

« facets »: [],

« mode »: « row-based »

},

« newColumnName »: « jsonidref »,

« columnInsertIndex »: 3,

« baseColumnName »: « NomComplet »,

« urlExpression »: « grel:\ »http://www.idref.fr/Sru/Solr?q=persname_s:\ »+replace(value, ‘ ‘, ‘\\\\%20’)+\n\n\ »*&sort=score%20desc&version=2.2&start=0&rows=30&indent=on&fl=id,ppn_z,recordtype_z,affcourt_z&wt=json\ » »,

« onError »: « store-error »,

« delay »: 50

},

La réponse obtenue en format json contient (ou pas) les paramètres recherchés. Ici, par exemple, seule la troisième ligne contient l’identifiant souhaité. Cette dernière colonne est obtenue en « parsant » le json.

La question essentielle est celle de la fiabilité de la réponse obtenue. Pour répondre à cette question, il faut revenir au point de départ : de qui est constitué mon corpus de personnes au départ ? S’il est composé de directeurs de thèses, comme c’est le cas pour les données ADUM pour lesquels l’opération d’alignement est en cours (Voir Fil’ABES), alors le requêtage de theses.fr peut donner des résultats dont le taux d’erreur est presque nul.

Et la suite ???

Pour disposer de toute une gamme d’idées et de codes OpenRefine dédiés au requêtage des données mises à disposition par l’ABES, vous pouvez vous reporter à http://www.bibliopedia.fr/wiki/OpenRefine . Si vous avez besoin d’obtenir des identifiants pour des « Personnes » ou d’autres types d’autorité, adressez votre demande à idref@abes.fr. Nous pourrons élaborer ensemble la meilleure façon d’y répondre.

Notons enfin que si OpenRefine s’avère pratique, l’outil connait des limites. Sur la base de l’expérimentation SudocAd, l’ABES développe un outil plus sophistiqué en parallèle du projet de recherche Qualinca qu’elle mène avec le LIRMM. Cet outil, en cours de développement, est bien plus ambitieux en termes de quantité et de qualité des paramètres pris en entrée pour un niveau de fiabilité réhaussé. Pour creuser cette question, nous recommandons la lecture de l’article passionnant d’Aline Le Provost dans le numéro 77 d’Arabesque : http://fil.abes.fr/2015/01/05/arabesques-n77-dialogues-avec-la-machine/

Advertisements

7 réflexions sur “OpenRefine ou comment passer des listes aux applications ABES : illustration avec IdRef et theses.fr ?

  1. Bonjour,
    merci pour ces informations, la piste de développement autour de Qualinca parait intéressante mais amène une question a la suite de cet article autour d’OpenRefine, a-t-il été envisagC de développer une surcouche de l’outil a venir (en fonction de la forme qu’il prendra bien entendu) sous la forme d’un service de « reconciliation » pour OpenRefine? On devrait ainsi pouvoir combiner la puissance d’OpenRefine pour le traitement de données avec la qualité de l’algo de traitement a venir coté qualinca !

  2. Francois,
    voici une solution pour neutraliser les caracteres speciaux cote Open refine, pour que ca matche avec les index Solr (qui replacent les é par des e, les ç par des c, etc.).
    C’est pas en GREL, mais en Jython :

    import unicodedata
    return unicodedata.normalize('NFKD', value).encode('ascii', 'ignore') 
    
  3. Bonjour,
    Je chipote peut-être mais le code que vous fournissez n’est pas du code GREL mais du JSON d’un historique d’opérations d’OpenRefine. D’ailleurs, le JSON fournit tel quel n’est pas valide, il faut remplacer les guillemets typographiques par des guillemets droits. Il n’est pas facile de reproduire la procédure avec l’historique d’opérations, accepteriez-vous de redonner la procédure sous la même forme que http://www.bibliopedia.fr/wiki/OpenRefine#Interrogation_de_la_base_Relire ?
    Merci,

Les personnes disposent d’un droit d’accès aux informations contenues dans cette zone de texte. Les informations que vous y inscrivez doivent être pertinentes au regard du contexte. Elles ne doivent pas comporter d’appréciation subjective, ni faire apparaître, directement ou indirectement les origines raciales, les opinions politiques, philosophiques ou religieuses, les appartenances syndicales ou les mœurs de la personne concernée.

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s