« OpenRefine » : différence entre les versions

De Bibliopedia
Aller à la navigation Aller à la recherche
(mise à jour)
Ligne 1 : Ligne 1 :
'''OpenRefine''' (anciennement '''Google Refine''') destinée à la transformation et au nettoyage de fichiers de données.  
'''OpenRefine''' (anciennement '''Google Refine''') destinée à la transformation et au nettoyage de fichiers de données.  


== Pistes d'usages ==
Il est particulièrement utilisé pour :
=== En combinaison avec les [[ Enrichissement des catalogues|web services]] abes ===
* ses capacités de nettoyage de fichier (en rapprochant semi-automatiquement des mots contenant des erreurs typographiques par exemple Bordeaux et Bordaux)
[[Fichier:Capture openrefine ws abes.png|thumb|Fichier après enrichissement]]
* ses capacités d'interrogation automatisée de [[web services]]. Ces derniers étant nombreux dans l'écosystème de l'informatique documentaire il est possible d'enrichir relativement simplement des fichiers de données (récupération de dates de naissance à partir d'un identifiant [[BnF]] par exemple ...)
En partant d'un fichier dont une colonne contient des isbn.


==== Récupération des [[PPN]] associés aux isbn ====
Bibliopedia dispose d'un certain nombre de guide pas-à-pas susceptibles d'intéresser les bibliothèques, voir '''[[OpenRefine : exemples]]'''. Plusieurs autres exemples, dépassant le domaine des bibliothèques mais adaptables, sont disponibles sur le wiki du projet OpenRefine : https://github.com/OpenRefine/OpenRefine/wiki/Recipes.
* Colonne ISBN > Edit column > Add column by fetching url
* Donner un nom à la colonne et utiliser comme expression : <nowiki>"http://www.sudoc.fr/services/isbn2ppn/" + value + "&format=text/json"</nowiki> (conserver les guillemets). On pourra aussi diminuer le délai entre deux interrogations au serveur (5000ms = 5s, 1000ms ou 500ms semble acceptable).
* On analysera ce contenu json en créant une nouvelle colonne à partir de ce contenu Json > Edit column > Add column based on this column en utilisant l'expression suivante :
<syntaxhighlight lang="javascript">
// Attention, ce script va bugger dans le cas où on a un isbn qui correspond exactement à 19 PPN
if (value.parseJson().sudoc.query.result.length() == 19,
  value.parseJson().sudoc.query.result.ppn,
  forEach(
    value.parseJson().sudoc.query.result,
    item,
    item.ppn
  ).join(", ")
)
</syntaxhighlight>
* On pourra ensuite "éclater" la cellule sur plusieurs lignes dans le cas où l'on a plusieurs PPN : Edit cells > Split multi-valued cells et en utilisant le séparateur ","
 
==== Récupération des RCR associés à des PPN ====
Sur le même principe que ci-dessus on pourra appeler le WS multiwhere pour récupérer la liste des PPN : <nowiki>"http://www.sudoc.fr/services/multiwhere/" + value + "&format=text/json"</nowiki>
 
On peut éventuellement vérifier la présence de l'ouvrage dans l'une des bibliothèques qui nous intéresse à l'aide de la formule suivante à partir de la colonne contenant le résultat Json de l'appel à multiwhere :
<syntaxhighlight lang="javascript">
filter(
  value.parseJson().sudoc.query.result.library,
  item,
  item["rcr"] == "010532201"
).join(",")
</syntaxhighlight>
 
Dans la colonne résultante, on pourra créer une facette automatique pour isoler les cellules qui contiennent quelque chose.
 
==== Mise à jour d'un fichier de PPN avec les PPN fusionnés ====
En partant d'un fichier de PPN et en utilisant le [http://documentation.abes.fr/sudoc/manuels/administration/aidewebservices/mergedppn.html WS merged] on va pouvoir contrôler les PPN, voir lesquels n'existent plus et les remplacer par le PPN de la notice fusionnée. Pour cela on va partir d'un fichier qui contient une colonne nommée "PPN" (le mieux est de charger un fichier au format CSV pour s'affranchir des problèmes liés aux 0 situés en début de PPN, en pensant au moment de la création du projet à décocher la case ''Parse cell text into numbers, dates, ...'').
 
À partir de cette colonne PPN, on va aller interroger le WS merged (clic sur la flèche en haut de colonne > Edit Column > Add column by fetching URL, penser à réduire le temps entre deux appels, fixé par défaut à 5 secondes, cela peut être long pour un fichier conséquent) à l'aide de l'expression suivante :
<syntaxhighlight lang="javascript">
"http://www.sudoc.fr/services/merged/"+value+"&format=text/json"
</syntaxhighlight>
 
On obtient alors une colonne qui va contenir, pour les notices non fusionnées un tableau JSON vide (<nowiki>{"sudoc":null}</nowiki>) et pour les autres les informations sur le PPN source et le PPN cible sous la forme suivante :
<syntaxhighlight lang="javascript">
{"sudoc":{"query":{"ppn":"PPN source","result":{"ppn":"PPN cible"}}}}
</syntaxhighlight>
 
On peut alors partir de cette colonne pour créer une nouvelle colonne contenant seulement le PPN cible (s'il existe), en ajoutant (clic sur la flèche de haut de colonne > Edit column > Add column based on this column) en utilisant l'expression suivante :
<syntaxhighlight lang="javascript">
value.parseJson()["sudoc"]["query"]["ppn"]
</syntaxhighlight>
 
Dans la nouvelle colonne ainsi créée, les lignes correspondant à des PPN ayant été fusionnés recevront donc le nouveau PPN, les autres la valeur ''null''. On peut alors créer une dernière colonne qu'on appellera PPN final et qui correspondra : soit au PPN fusionné quand il existe, soit au PPN original. Pour cela sur la dernière colonne créér, on cliquera sur la flèche de haut de colonne > Edit column > Add column based on this colum et on entrera l'expression suivante :
<syntaxhighlight lang="javascript">
if ((value != null), value, cells["PPN"].value)
</syntaxhighlight>
 
Cette expression indique à OpenRefine de faire un test : si la colonne n'est pas ''null'' on reprend la valeur dans la nouvelle colonne créée (''value''), sinon on va chercher la valeur dans une autre colonne (ici la colonne PPN, à adapter en fonction du nom de la colonne dans votre fichier initial) : ''cells["PPN"].value''.
 
==== Recherche des ID idref de personnes physiques ====
Voir http://punktokomo.abes.fr/2015/07/10/911/
 
==== Identification des publications commerciales de thèses à partir d'une liste de NNT ====
''En deux mots : À partir d'une liste de thèses contenant pour chaque thèse le NNT, identifier les thèses ayant fait l'objet d'une édition commerciale et pour chacune d'elle connaître son éditeur commercial''
 
Sur la colonne contenant le NNT, Add column by fetching URL avec la formule suivante :
 
<syntaxhighlight lang="javascript">
"https://www.sudoc.fr/services/nnt2ppn/"+ value + "&format=text/json"
</syntaxhighlight>
 
Sur la colonne ainsi récupérée, Edit Cells > Transform (à améliorer pour certains NNT présents sur plusieurs notices différentes) :
<syntaxhighlight lang="javascript">
value.parseJson()["sudoc"]["results"]["result"]["ppn"]
</syntaxhighlight>
 
Sur cette colonne qui contient donc le PPN de la notice, Add column bu fetching URL :
<syntaxhighlight lang="javascript">
"https://www.sudoc.fr/"+value+".rdf"
</syntaxhighlight>
 
Sur la colonne contenant le RDF de la notice, edit Cells > Transform pour trouver l'URL des notices liées, éditions commerciales des thèses :
<syntaxhighlight lang="javascript">
value.parseHtml().select("dcterms|hasVersion")[0].select("bibo|document")[0].htmlAttr('rdf:about').replace("/id", "")
</syntaxhighlight>
 
Sur cette colonne, Add column by fetching URL :
<syntaxhighlight lang="javascript">
value+".rdf"
</syntaxhighlight>
 
Et enfin, sur cette colonne puisque dans notre cas c'est l'éditeur qui nous intéresse, Edit cells > Transform :
<syntaxhighlight lang="javascript">
value.parseHtml().select("dc|publisher")[0].htmlText()
</syntaxhighlight>
 
=== Contrôle d'accès à des ouvrages de numilog ===
''En deux mots : vérifier que l'on a toujours accès à des ouvrages acquis il y a quelques années''
 
Il y a quelques années une bibliothèque avait passé une commande chez numilog pour des ouvrages en achat pérenne ET des ouvrages en abonnement. Aujourd'hui il faut vérifier qu'il ne reste plus dans le catalogue que des ouvrages pour lesquels on dispose encore d'un accès (les achats pérennes, les abonnements étant désormais terminés). Il suffit pour cela de vérifier que le bouton "Télécharger" est présent sur la page ([http://www.numilog.com/bibliotheque/u-bordeaux3/fiche_livre.asp?idprod=116 exemple]).
 
Toutes les pages d'ouvrages sont accessibles par une url toujours construite de la même manière : http://www.numilog.com/bibliotheque/u-bordeaux3/fiche_livre.asp?idprod=XXX où XXX correspond à un identifiant de la notice. On va partir pour le contrôle d'un fichier dont nous disposons et qui contient un identifiant par ligne. On va donc créer un projet avec au départ cette seule colonne.
 
Sur cette première colonne, on va cliquer sur la flèche dans l'en-tête et choisir : "Edit column > Add column by fetching URLs". On choisit un nom à cette colonne (code source page) et on va utiliser l'expression suivante pour construire les url :
<syntaxhighlight lang="javascript">
"http://www.numilog.com/bibliotheque/u-bordeaux3/fiche_livre.asp?idprod=" + value.replace(".0", "")
</syntaxhighlight>
 
Explication : on assemble le préfixe commun à toutes les url avec la valeur présente dans la colonne de base (après avoir supprimé le .0 qui se trouvait à la fin de toutes ces valeurs que Google Refine avait reconnues comme des nombres). Après validation, OpenRefine va aller récupérer dans une nouvelle colonne le code source des pages distantes.
 
On peut alors à partir de cette colonne "code source" créer une nouvelle colonne qui va nous indiquer si oui ou non le document est disponible au téléchargement. Pour cela on va vérifier la présence dans le code source de l'image b_telecharger_down.gif qui correspond au bouton. On clique sur la flèche en haut de la colonne puis : Edit column > Add column based on this column. On va alors créer une colonne qu'on va appeler "Disponible ?" par exemple et à laquelle on va associer une valeur vrai ou faux selon que le bouton télécharger est disponible. Pour cela il suffit de vérifier que le code source de la page contient (''contains'') l'image. On utilise donc l'expression :
 
<syntaxhighlight lang="javascript">
value.contains("b_telecharger_down.gif")
</syntaxhighlight>
 
Une fois cette colonne créée on peut supprimer la colonne code source qui ne nous est plus utile (flèche de haut de colonne > Edit column > Remove this column). Il nous reste alors une colonne identifiant et une colonne "Disponible ?". On va aller en haut de cette dernière colonne pour choisir d'ajouter une facette : Facet > Text facet. La facette va apparaître sur la gauche et devrait contenir deux valeurs : true & false. Tous les false correspondent à des notices qui ne sont plus accessibles et qu'il va falloir retirer de son catalogue.
 
=== Interrogation de la base Relire ===
''Objectif : vérifier si des auteurs sont dans la base [http://relire.bnf.fr/ Relire]''
 
[https://code.google.com/p/google-refine/wiki/InstallationInstructions Instructions d'installation de Google Refine]
 
Préalable : disposer d'une liste des noms de famille des auteurs, par exemple sous la forme d'un tableur contenant une colonne AUTEUR. Créer un projet à partir de ce tableur.
 
Sur la colonne AUTEUR, cliquer sur la flèche dans l'en-tête et choisir : "Edit column > Add column based on column". Nommer cette colonne, ici RECHERCHE.
Valeur de la colonne (grel) : 
<syntaxhighlight lang="javascript">
"http://relire.bnf.fr/recherche?champsTitre=&champsEditeur=&champsDate=&typer=a&champsAuteur=" + value.replace(".0", "")
</syntaxhighlight>
 
Toujours sur la colonne AUTEUR, cliquer sur la flèche dans l'en-tête et choisir : "Edit column > Add column by fetching URLs". Nommer cette colonne, ici PAGE.
Valeur de la colonne (grel) :
<syntaxhighlight lang="javascript">
"http://relire.bnf.fr/recherche?champsTitre=&champsEditeur=&champsDate=&typer=a&champsAuteur=" + value.replace(".0", "")
</syntaxhighlight>
 
Sur la colonne PAGE, cliquer sur la flèche dans l'en-tête et choisir : "Edit column > Add column based on column". Nommer cette colonne, ici TEST.
Valeur de la colonne (grel) :
<syntaxhighlight lang="javascript">
value.contains("Aucun résultat")
</syntaxhighlight>
Si la valeur est false, alors ce nom d'auteur est dans la base Relire et la colonne RECHERCHE permet d'aller vérifier la liste des titres sur Relire. Si la valeur est true, la recherche dans Relire ne renvoie pas de résultat pour cet auteur.
 
Pour plus de lisibilité, on peut masquer la colonne PAGE : flèche dans l'en-tête, puis "View > Collapse this column".
Sur la colonne TEST, flèche dans l'en-tête, puis "Facet > Text facet" permettra ensuite de ne sélectionner que les lignes portant "false", soit la liste des auteurs potentiellement concernés par Relire.
 
=== Extraire des données d'une page web ===
''Objectif : à partir d'un identifiant (ici le code-barre) récupérer une page web et en extraire des données qui nous manquent (ici l'ISBN)''
 
OpenRefine dispose d'une fonction bien utile d'analyse de page web : <code>parseHtml()</code>. Cette fonction peut être utilisée pour accéder facilement au contenu d'une page web. Dans cet exemple la demande est de trouver les ISBN correspondant à une liste de codes barres exemplaires. Pour cela, nous avons besoin d'un OPAC interrogeable à partir d'un code barre. C'est le cas de Babord+, le catalogue utilisé à Bordeaux qui à partir permet d'utiliser des URL de ce type : <nowiki>http://babordplus.univ-bordeaux.fr/resultat.php?type_rech=ra&index[]=cab&value[]=3SCD0002498</nowiki>. On peut donc en partant d'une colonne code barre, dans un premier temps récupérer le code source des pages correspondantes. "Add column by fetching URL" puis choisir l'expression (en adaptant à son catalogue :
<syntaxhighlight lang="javascript">
"http://babordplus.univ-bordeaux.fr/resultat.php?type_rech=ra&index[]=cab&value[]=" + value
</syntaxhighlight>
 
À partir de là on va devoir extraire de l'information du code HTML de la page. Pour cela on dispose de la fonction <code>parseHtml()</code> qui permet d'accéder à la plupart des informations de la page. Dans le cas qui nous intéresse on sait qu'à chaque ligne l'ISBN est utilisé pour appeler la vignette de couverture, qu'elle existe ou non, et que cette vignette est contenue dans un <code>div</code> ayant pour class "sid-image". On va donc construire à partir de la colonne contenant le code source (<code>Edit columns > Add column based on this column</code>) le code suivant :
<syntaxhighlight lang="javascript">
split(value.parseHtml().select("div.sid-image")[0].select("img")[0].htmlAttr("src"), "=")[1]
</syntaxhighlight>
 
Si l'on détaille les opérations utilisées, en partant de value, le code source de la page :
<syntaxhighlight lang="javascript" enclose="div">
value.parseHtml().select("div.sid-image") // renvoie la liste des div ayant pour class sid-image
value.parseHtml().select("div.sid-image")[0] // retourne le premier élément du tableau (on n'en a qu'un de toutes manières)
value.parseHtml().select("div.sid-image")[0].select("img") // renvoie les balises <img> qui se trouvent dans le div
value.parseHtml().select("div.sid-image")[0].select("img")[0] // retourne la première image (on n'en a qu'une de toutes manières)
value.parseHtml().select("div.sid-image")[0].select("img")[0].htmlAttr("src") // retourne l'attribut src de l'image, du type "http://babordplus.univ-bordeaux.fr/vignette.php?isbn=9780333393970"
 
// Le split général nous permet alors de scinder (''to split'') cette chaîne autour du signe =
split(value.parseHtml().select("div.sid-image")[0].select("img")[0].htmlAttr("src"), "=")
 
// On récupère la deuxième zone, donc ce qui se trouve après le = (indice 1, comme on l'a vu dans le reste de l'exemple [0] correspond à la première case du tableau, logiquement, [1] est la deuxième.
split(value.parseHtml().select("div.sid-image")[0].select("img")[0].htmlAttr("src"), "=")[1]
 
// On a bien l'ISBN
9780333393970
</syntaxhighlight>
 
=== Vérification d'un chantier de recotation ===
Dans le cadre d'une opération de recotation, chaque semaine, un fichier contenant : code barre, nouvelle cote, identifiant de notice est envoyé au service informatique. OpenRefine est utilisé pour vérifier que la recotation a bien été effectuée pour tous les exemplaires (cela pose parfois problème quand le code barre a été remplacé, que l'exemplaire a été rattaché à une nouvelle notice ...). Pour cela, on charge le fichier contenant a minima le code barre et la nouvelle cote attendue.
 
À partir de la colonne code barres : Edit column > Add colmun by fetching URL et on va utiliser la formule suivante :
<syntaxhighlight lang="javascript">
"http://babordplus.univ-bordeaux.fr/notice.php?q=cab:%28"+value+"%29&ct=bx3_ws"
</syntaxhighlight>
 
Cette opération va avoir pour effet de nous charger dans une nouvelle colonne le code source de la page Babord+ (notre Opac) qui correspond à l'affichage de la notice qui correspond au code barre passé en paramètre. À partir de ce code source HTML : Add a column > Based on this column puis on va entrer la formule suivante :
 
<syntaxhighlight lang="javascript">
value.contains(cells["cote_dew"].value)
</syntaxhighlight>
 
Cette formule a pour fonction de vérifier que la colonne courante contient l'information qui se trouve dans la colonne choisie (ici code_dew). On a a alors une colonne qui contient True ou False et sur laquelle on va pouvoir faire une facette qui nous permettra d'identifier les lignes qui correspondent à des recotations posant problème.
 
=== Vérification du dépôt d'articles dans HAL en fonction des couleurs RoMEO à partir du WoS ===
''Objectif : vérifier pour une année/institution si les articles sont présents dans HAL et s'ils ne le sont pas si la politique de l'éditeur le permet''
 
1. Obtenir dans le Web of Science la liste des articles publiés pour une année par une institution.
 
Dans le [http://apps.webofknowledge.com/ WoS] sélectionner Search > Web of Science Core Collection, sélectionner Organization-Enhanced comme index et rechercher l'institution dans Select from Index. Lancer la recherche en sélectionnant une année. Exporter ensuite la liste des résultats avec Save to Other File Formats, Number of Records: Records [1] to [500], Record Content: Author, Title, Source, File Format: Tab-delimited (Win, UTF-8). Si vous obtenez plus de 500 résultats il faudra exporter la liste en plusieurs fois ou passer par le [http://ip-science.interest.thomsonreuters.com/researchdatausage formulaire de demande de téléchargement de données]. Créer un projet dans OpenRefine avec les données exportées.
 
2. Interrogation de l'API HAL
 
À partir de la colonne TI, on va aller interroger le WS HAL (clic sur la flèche en haut de colonne > Edit Column > Add column by fetching URL, penser à réduire le temps entre deux appels, fixé par défaut à 5 secondes, cela peut être long pour un fichier conséquent) à l'aide de l'expression suivante :
 
<syntaxhighlight lang="javascript">
"http://api.archives-ouvertes.fr/search/?q=title_t:%22"+ value.replace(/\s/,"%20") +"%22~&wt=json&fl=title_s"
</syntaxhighlight>
 
A partir de cette colonne on va créer une nouvelle colonne contenant seulement la réussite de l'opération de comparaison (clic sur la flèche de haut de colonne > Edit column > Add column based on this column) en utilisant l'expression suivante :
 
<syntaxhighlight lang="javascript">
if ((value.parseJson().response.numFound >=1), "OK", "KO")
</syntaxhighlight>
 
3. Interrogation de l'API RoMEO
 
À partir de la colonne SN, on va aller interroger le WS RoMEO (clic sur la flèche en haut de colonne > Edit Column > Add column by fetching URL) à l'aide de l'expression suivante :
 
<syntaxhighlight lang="javascript">
"http://www.sherpa.ac.uk/romeo/api29.php?issn=" + value
</syntaxhighlight>
 
A partir de cette colonne on va créer une nouvelle colonne contenant seulement la couleur RoMEO (clic sur la flèche de haut de colonne > Edit column > Add column based on this column) en utilisant l'expression suivante :
 
<syntaxhighlight lang="javascript">
value.parseHtml().select('romeocolour')[0].replace('<romeocolour>','').replace('</romeocolour>','')
</syntaxhighlight>
 
4. Comparaison
 
On peut maintenant placer les colonnes de résultat en début de tableau avec (clic sur la flèche de haut de colonne > Edit column > Move column to beginning) ou bien produire une dernière colonne avec :
 
<syntaxhighlight lang="javascript">
if( and( cells['RoMEOcolor'] == "
 
green
",cells['HALok'].value == "KO"), "Contacter l'auteur", "Ne rien faire" )
</syntaxhighlight>
 
=== Récupérations d'infos crossref à partir d'une liste de DOI ===
* Colonne '''DOI''' avec les DOI
* Créer une colonne '''Crossref''' ''by fetching URLs'' basée sur la colonne '''DOI''' grel:<syntaxhighlight lang="javascript">"http://api.crossref.org/works/"+value</syntaxhighlight>
* Ajouter une colonne '''Message''' basée sur la colonne '''Crossref''' grel:<code>value.parseJson()["message"]</code>
* Ajouter une colonne '''Titre''' basée sur la colonne '''Message''' grel:<code>value.parseJson()["title"]</code>
* Ajouter une colonne '''Revue''' basée sur la colonne '''Message''' grel:<code>value.parseJson()["container-title"]</code>
* Ajouter une colonne '''Editeur''' basée sur la colonne '''Message''' grel:<code>value.parseJson()["publisher"]</code>
* Ajouter une colonne '''Reference Count''' basée sur la colonne '''Message''' grel:<code>value.parseJson()["reference-count"]</code>
* Ajouter une colonne '''ISSN''' basée sur la colonne '''Message''' grel:<code>value.parseJson()["ISSN"]</code>
* Ajouter une colonne '''Subjects''' basée sur la colonne '''Message''' grel:<code>value.parseJson()["subject"]</code>
* Nettoyer les cellules (enlever les <code>["</code> et les <code>"]</code>, colonne par colonne (Sauf ISSN) (edit cells > transform...) grel:<code>value.replace("[\"","").replace("\"]","")</code>
* Nettoyer les cellules de la colonne '''ISSN''' grel:<code>value.replace("[\"","").replace("\"]","").replace("\"\,\"","\,")</code>
=== Divers ===
* OpenRefine est utilisé par GoKB et KB+ pour le nettoyage des données fournies par les éditeurs. ([https://wiki.kuali.org/display/OLE/OpenRefine+How-Tos How-to] GoogleRefine sur le wiki de GoKB
* Exemple d'utilisation sur des revues électroniques : [http://www.meanboyfriend.com/overdue_ideas/2012/11/using-open-refine-for-e-journal-data/ Using OpenRefine for e-journal data], par Owen Stephens.
* Exemple d'utilisation sur des indicateurs Altmetrics (ou mesures alternatives d'impact) : [http://hublog.hubmed.org/archives/001976.html Collecting article metrics with OpenRefine] par Alf Eaton


== Bibliographie ==
== Bibliographie ==
* ACRL TechConnect Blog : [http://acrl.ala.org/techconnect/?p=3276 A Librarian’s Guide to OpenRefine].
* 2017:06 : '''[[:Fichier:OpenRefine Marseille 2017-06-09-v2.pdf|Nettoyer et préparer des données avec OpenRefine]], support de présentation par Mathieu Saby en juin 2017.'''
* [http://www.meanboyfriend.com/overdue_ideas/2014/11/working-with-data-using-openrefine/ Working with data using openrefine] (novembre 2014) : supports d'une formation d'une journée à destination des personnels de la Bristish library
* 2014-11 : [http://www.meanboyfriend.com/overdue_ideas/2014/11/working-with-data-using-openrefine/ Working with data using openrefine] (novembre 2014) : supports d'une formation d'une journée à destination des personnels de la Bristish library
* [[:Fichier:OpenRefine Marseille 2017-06-09-v2.pdf|Nettoyer et préparer des données avec OpenRefine]], support de présentation par Mathieu Saby en juin 2017.
* 2013-05 : ACRL TechConnect Blog : [http://acrl.ala.org/techconnect/?p=3276 A Librarian’s Guide to OpenRefine].
* [https://github.com/OpenRefine/OpenRefine/wiki/Recipes Recipes] sur le wiki du projet avec plusieurs cas d'utilisations décrits


[[Catégorie:Logiciel]]
[[Catégorie:Logiciel]]

Version du 27 juin 2017 à 22:13

OpenRefine (anciennement Google Refine) destinée à la transformation et au nettoyage de fichiers de données.

Il est particulièrement utilisé pour :

  • ses capacités de nettoyage de fichier (en rapprochant semi-automatiquement des mots contenant des erreurs typographiques par exemple Bordeaux et Bordaux)
  • ses capacités d'interrogation automatisée de web services. Ces derniers étant nombreux dans l'écosystème de l'informatique documentaire il est possible d'enrichir relativement simplement des fichiers de données (récupération de dates de naissance à partir d'un identifiant BnF par exemple ...)

Bibliopedia dispose d'un certain nombre de guide pas-à-pas susceptibles d'intéresser les bibliothèques, voir OpenRefine : exemples. Plusieurs autres exemples, dépassant le domaine des bibliothèques mais adaptables, sont disponibles sur le wiki du projet OpenRefine : https://github.com/OpenRefine/OpenRefine/wiki/Recipes.

Bibliographie