Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

OpenRefine
               
                et
               
Maïwenn Bourdic
OpenRefine, c'est...
OpenRefine, c'est...
  • Un outil opensource et gratuit de nettoyage, harmonisation et
mise en forme de données, alias Excel aux hormones.

  • Soutenu par Google entre 2010 et 2012, puis remis
dans la communauté du libre depuis.

  • Une communauté de développeurs dynamique (y compris
francophone) et des mises à jour régulières.

  • Une installation simple (sans droits Administrateur), utilisation
du logiciel dans le navigateur Internet mais données strictement
en local.


OpenRefine permet...
enrichir les données à partir
de ressources externes

(jeux de données,
Wikidata, données géo)
homogénéiser des occurrences semblables
(AD29 / A.D.29 / Arch. dép. Finistère)
concaténer / déconcaténer
des colonnes / des cellules
transformer un xml en tableur
extraire un contenu
d'une cellule / colonne

"rechercher / remplacer par" XXL
sauvegarder des scripts de
modifications et les réappliquer
à des données semblables
changer facilement les dates
(JJ/MM/AAAA > AAAA)
faire des tris et
filtres puissants
etc.
changer la casse / enlever les
espaces inutiles

gérer des ensembles
(inclusion / exclusion selon des critères)
Pour le dire autrement...
XML, CSV
JSON,
TXT, etc.
aka : mes catalogues / inventaires / référentiels /
bases de données
XML, CSV,
JSON, TXT,
wikicode,
RDF, etc.
aka : les mêmes, enrichis de données, géolocalisés
reliés au web de données, référencés sur Wikidata


  • La phase de création du projet est importante (encodage des
accents UTF-8, entêtes de colonnes, sélection du nœud
principal en XML) : l'aperçu est là pour vous aider !

  • Si ça mouline en vain... assurez-vous que le fichier importé
est en local et pas sur le réseau, et transformer votre .ods
en CSV ou .xlsx.


Préliminaires
Les basiques 1/3
Filtre de texte
        (dont casse et expressions régulières)


Facettes :
  • compiler toutes les occurrences identiques
  • éditer en masse les occurrences proches
  • corriger en masse sur la base de
regroupements phonétique et de proximité

Mais aussi : facettes par mot, par
cellule vide/remplie, par longueur de contenu,
chronologique...

Le tout cumulable...

"ce qui commence par une lettre minuscule" : ^[a-z]
"ce qui contient 4 chiffres qui se suivent" : [0-9]{4}
Les basiques 2/3
Rechercher / remplacer par :
value.replace ("...","...")
Traitements automatiques :
  • supprimer les espaces consécutifs
  • supprimer les espaces de début / fin de cellule
  • changer la casse : aaa, AAA, Aaa Aaa


Les basiques 3/3
Diviser une colonne / cellule
sur la base d'un dénominateur commun
Concaténer des colonnes

cells["Colonne 1"].value
+
"séparateur"
+
cells["Colonne 2].value
Tout est enregistré
On peut revenir en arrière suite à de mauvaises manipulations...
Ou sauvegarder le script de modifications
pour le réappliquer sur un autre projet !
Rendez-vous...
quelques centaines
                de modifs plus loin
Mes données sont "propres"
  • Identifier / créer une colonne pouvant servir de pivot
avec Wikidata : par exemple une colonne Prénom Nom
Réconciliation Wikidata
  • Enrichir mes données : rajouter des contenus issus de Wikidata,
dates, lieux, coordonnées géographiques, lien vers data.bnf (ark),
article Wikipédia, image de Commons, etc.

  • Enrichir Wikidata avec mes données : rajouter une référence,
un lien vers le catalogue en ligne, une information inexistante
                                                                        
à la main...
ou en masse !
Réconciliation Wikidata 1/8
URL de l'API fr : https://tools.wmflabs.org/openrefine-wikidata/fr/api
Réconciliation Wikidata 2/8
Possibilité d'affiner le rapprochement pour plus de pertinence (spécification
d'un type d'élément, ajout de filtre sur des propriétés, ...)
Réconciliation Wikidata 3/8
Facettes spécifiques pour créer des groupes
et améliorer / vérifier les réconciliations
Réconciliation Wikidata 4/8
Possibilité de rechercher manuellement un
rapprochement avec Wikidata
Réconciliation Wikidata 5/8
En attendant une évolution : astuce pour ajouter
un lien vers l'article Wikipédia en fr (lien)
Réconciliation Wikidata 6/8
Réconciliation Wikidata 7/8
Réconciliation Wikidata 8/8
Des données prêtes pour
Quelques formules de base
rechercher / remplacer par : value.replace("[contenu recherché]","[remplacer par]")

changer le format de date :  value.toDate('yyyy-MM-dd','MMM-yy').toString('dd-MM-yyyy')

extraire une année
: value.match(/.*(\d{4}).*/)[0]

concaténer des colonnes
: cells["colonne 1"].value + "[séparateur]" + cells["colonne 2"].value

garder la première chaîne de caractères
: value.partition(smartSplit(value," ")[1])[0]

garder la dernière chaîne de caractères
: value.partition(smartSplit(value," ")[-1])[1]

enlever les espaces superflus
: value.trim()

créer une colonne avec numéro incrémenté
: rowIndex + 1 (voire : "d_0" + rowIndex + 1)

comparer des colonnes
: if(cells["nom1"].value == cells["nom2"].value, "Y", "N")

convertir dans un champ "... Paul DURAND ..." en "... Paul Durand..." (initiale capitale) :

forEach(value.split(' '), e, if(isNull(e.trim().match(/([A-Z]{4,})/)), e, e.toTitlecase())).join(' ')

croiser des projets différents sur la base d'une colonne clé :
cell.cross("nomduprojetOpenRefine", "nomColonneeCléIntermédiaire")
[0].cells["nomColonneArécupérer"].value

Utilisez la barre d'espace ou bien les touches fléchées pour naviguer