Toggle navigation
Go
Log-in
Traitements Documentaires - Outils et savoir faire
Go to Wiki
Document Index
Main
Go to Space
Document Index
OpenRefine
Wiki Home
OpenRefine
Wiki source code of
OpenRefine
More actions
Content
Comments (5)
Annotations (5)
Attachments (26)
Blame
History
Information
Hide line numbers
1: {{box cssClass="floatinginfobox" title="**Table des matières**" width="30%"}} 2: {{toc numbered="false" start="2" depth="3" /}} 3: {{/box}} 4: 5: [[image:google-refine.png]] OpenRefine permet de nettoyer des données et de les transformer d’un format à un autre. OpenRefine est une application installée en local, sur l'ordinateur de l'utilisateur, mais qui dispose d’une interface Web à partir de laquelle l'utilisateur va travailler. Il est donc nécessaire d'être connecté à Internet pour pouvoir utiliser OpenRefine , même si les données elles-mêmes restent en local. 6: 7: **Site de référence **: 8: 9: * **Le wiki OpenRefine** [[https:~~/~~/github.com/OpenRefine/OpenRefine/wiki>>https://github.com/OpenRefine/OpenRefine/wiki||rel="__blank"]] 10: 11: **Quelques sites et documents qui nous ont servi à rédiger ce Wiki :** 12: 13: * [[Formater des données financières avec Google Refine>>http://cameroon.openspending.org/data/CameroonDocs-GoogleRefineTutorial-fr.pdf]] 14: * [[Free your metadata>>http://freeyourmetadata.org/]] 15: * [[Employing Google Refine to Publish Linked Data>>http://fr.slideshare.net/fadimaali/employing-google-refine-to-publish-linked-data]]. Fadi Maali and Richard Cyganiak. 2011.\\ 16: * [[Google Refine Tutorial>>http://fr.slideshare.net/vijayaprabhu1/google-refine-tutotial-12311635]]. Sathishwaran.R, Vijaya Prabhu. April 2012 17: 18: {{astuce width="20%"}} 19: [[Quelques recettes>>Petites recettes]] 20: {{/astuce}} 21: 22: == Pour commencer avec OpenRefine == 23: 24: === Installer OpenRefine === 25: 26: [[Télécharger openRefine>>http://openrefine.org/download.html||title="Télécharger Google Refine"]] et suivre les instructions. 27: 28: Il est possible d'augmenter la mémoire vive allouée à OpenRefine en modifiant la valeur dans le fichier openrefine.l4j.l4j 29: 30: === Formats importés === 31: 32: OpenRefine peut importer de nombreux formats : 33: 34: * TSV, CSV, ou n'importe quelles valeurs séparées par un séparateur que l'on spécifie 35: * Excel (.xls, xlsx) 36: * XML, RDF/XML 37: * JSON 38: * Feuille de calcul Google 39: * RDF N3 triples 40: * ... voir la [[liste complète>>https://github.com/OpenRefine/OpenRefine/wiki/Importers||rel="__blank"]] 41: 42: En première instance, OpenRefine se base sur l'extension du fichier. Devant une extension inconnue, OenRefine utilise les tabulations ou les virgules pour identifier les colonnes. 43: 44: Si l'on a un format vraiment spécifique à importer, l'importer sans tenir compte des colonnes puis diviser la colonne selon des critères personnalisés (voir [[Scinder une colonne>>Main.Scinder une colonne]]). 45: 46: Il est possible d'importer une archive (extension .zip, .tar.gz, .tgz, .tar.bz2, .gz, ou .bz2) : OpenRefine détecte les extensions les plus courantes et charge tous les fichiers ayant la même extension dans un projet unique. 47: 48: Il est possible également d'utiliser un URL pour pointer vers une fichier de données ou une feuille de calcul Google. 49: 50: Après l'import les données sont enregistrées dans un format propre à OpenRefine :; les données d'origine ne sont pas modifiées. 51: 52: === Lancer OpenRefine === 53: 54: Lancer OpenRefine en exécutant en local le programme OpenRefine.exe 55: 56: Après avoir démarré, OpenRefine s’ouvre dans le navigateur et affiche la page d’accueil (URL http:~/~/127.0.0.1:3333/ ou http:~/~/localhost:3333). On peut alors créer un nouveau projet, ouvrir un projet existant ou importer un projet (exporté par exemple depuis un autre ordinateur ou dans un autre contexte OpenRefine) 57: 58: === Créer un nouveau projet === 59: 60: La création d'un nouveau projet commence par le téléchargement des données à transformer. Vous trouverez en pièces jointes un[[ exemple de fichier Excel utilisable pour les tests>>attach:Prodinra_echantillon-avec-doublons.xlsx]] (contenant des références issues de ProdInra). 61: 62: [[image:create-project_1.JPG]] 63: 64: 65: Choisir le fichier puis cliquer sur **Next**. Le format du fichier est reconnu (par ex. ici Excel) et le nombre de lignes identifiées est indiqué (ici par ex : 213 lignes). 66: 67: [[image:create2.JPG]] 68: 69: 70: Les paramètres d'import sont affichés et peuvent être modifiés avant l'import : 71: 72: * ignorer la première ligne 73: * considérer la première ligne comme une ligne d'entêtes 74: * supprimer les x premières lignes 75: * télécharger au minimum x lignes 76: * conserver ou non les lignes blanches 77: * considérer les cellules blanches comme vides 78: * conserver le nom du fichier d'origine (ou l'url) dans chaque ligne 79: 80: Vérifier que l'encodage choisi est le bon. S'il apparait des caractères étranges (comme ci-dessous), 81: 82: [[image:encodage.JPG]] 83: 84: changer en utilisant la boîte "**Character encoding**". 85: 86: [[image:encodage_UTF8.JPG]] 87: 88: 89: Donner éventuellement un nom au projet (ou laisser le nom du fichier importé) puis cliquer sur **Create Project** pour poursuivre l'import . 90: 91: Une fois les données importées, le nombre de lignes est affiché (ici 212 et non 213 car il y a une ligne d'entête). Les données sont automatiquement distribuées dans les colonnes. 92: 93: [[image:https://wiki.inra.fr/wiki/traitementsdocumentaires/download/Main/OpenRefine/nouveau%2Dprojet.JPG?width=966||alt="nouveau-projet.JPG"]] 94: 95: === Supprimer, renommer un projet === 96: 97: Pour supprimer un projet, il faut d'abord afficher les projet existants : cliquer sur le **logo OpenRefine** puis **Open Project**. 98: 99: [[image:create-project_6.JPG]] 100: 101: Sélectionner le projet et **cliquer sur la croix pour le supprimer**, ou sur **rename **pour le renommer. 102: 103: [[image:create-project_7.JPG]] 104: 105: === Historique === 106: 107: Il permet d'accéder à la fonction "Défaire/Refaire". Dans l'onglet "Undo/Redo", la liste des opérations précédemment effectuées est visible. 108: 109: Il est possible d'exporter un historique pour le partager avec d'autres personnes ou être capable de tracer ou refaire ses traitements sur un autre jeu de données. 110: 111: Lorsqu'on exporte un projet, l'historique est inclus dans l'export. 112: 113: Il existe également un [[historique des expressions GREL>>OpenRefine#HHistoriquedesfonctionsGrel]]. 114: 115: == Facettes et filtres == 116: 117: {{include document="Facettes"/}} 118: 119: 120: == Les clusters == 121: 122: {{include document="Les clusters"/}} 123: 124: == Lignes et enregistrements == 125: 126: Les enregistrements (records) permettent de distribuer des valeurs de cellules mutlivaluées sur plusieurs lignes (rows). 127: 128: **Edit cells > Split multi-valued cells** et indiquer le séparateur. 129: 130: Le nombre d'enregistrements reste le même mais le nombre de lignes a augmenté. 131: 132: Ceci permet entre autres d'identifier des doublons à l'intérieur d'une liste multivaluée (une même cellule contenant plusieurs fois la même valeur). 133: 134: == Transposer les données en colonnes == 135: 136: Cette fonctionnalité permet de regrouper et d'organiser des colonnes contenant des informations ayant une sémantique proche. Par exemple, 3 colonnes indiquant respectivement le poids, la hauteur et la largeur et contenant des valeurs numériques. Il est possible de créer une colonne Dimension et une valeur Mesure. La première recevra le type de Dimension (poids, hauteur ou largeur) et la seconde recevra la valeur pour chaque mesure. 137: 138: (% style="color: rgb(255, 0, 0);" %)**~*~** Ajouter un exemple ~*~**** 139: 140: == Modifier le contenu des cellules == 141: 142: {{include document="Modifier le contenu des cellules"/}} 143: 144: == Modifier la structure des données == 145: 146: {{include document="Modifier la structure des données"/}} 147: 148: == Comparer les valeurs de deux colonnes == 149: 150: Pour comparer les chaînes de 2 colonnes différentes ("a" et "b") et présenter le résultat dans une troisième colonne 151: 152: **Edit column > Add column**... 153: 154: {{code}} 155: if(cells["a"].value == cells["b"].value, "Yes", "No") 156: {{/code}} 157: 158: Construire les facettes "Yes" et "No" de la nouvelle colonne pour voir quelles cellules sont similaires (Yes), et lesquelles sont différentes (No). 159: 160: 161: Une autre possibilité est de créer directement les facettes (sans construire la 3ème colonne). 162: 163: Utiliser **Facet > Custom text facet** avec l'expression : 164: 165: {{code}} 166: value == cells["b"].value 167: {{/code}} 168: 169: == Fusionner des données provenant de différents projets == 170: 171: **{{html}}<span style="color:red">A REDIGER</span>{{/html}}** 172: 173: == Exporter des données en RDF == 174: 175: Vous devez d'abord [[installer l'extension>>OpenRefine#HInstallerl27extensionRDF]]. 176: 177: Vous souhaitez transformer votre tableau en fichier RDF. Vous devez donc décrire la procédure de transformation du contenu de vos lignes en triplets rdf. Cliquez sur le bouton RDF en haut à droite de la page et choisissez "**Edit RDF Skeleton**": 178: 179: [[image:grfnRDFButton2.JPG]] 180: 181: 182: === Définir la conversion === 183: 184: L'écran de déclaration des paramètres de la conversion des données se compose de 4 parties. Après avoir modifié les informations, cliquez sur OK (5) en bas de la fenêtre. 185: 186: La **partie 1** concerne les vocabulaires dont vous vous servirez pour décrire le type des objets et les relations ente eux. Réutilisez autant que possible des éléments de vocabulaire existants. Certains sont déjà disponibles dans OpenRefine et sont listés en noir dans cette partie entourée en orange dans la figure ci-dessous. Vous pouvez également charger votre propre ontologie. Pour ajouter des vocabulaires (vous appartenant ou des vocabulaires publiques), consultez la partie [["Ajouter un vocabulaire RDF">>OpenRefine#HAjouterunvocabulaireRDF]]. 187: 188: La **partie 2** permet de définir le ou les sujet des triplets que vous allez construire à partir de votre tableur. Il en faut au moins 1. Vous pouvez en ajouter en cliquant sur le lien "**Add another root node**" en bas de la partie 2, en vert sur la figure ci-dessous. L'URI du sujet sera construite en utilisant la base URI (éditable dans l'en-tête de la fenêtre) et le contenu d'une cellule du tableur. Openrefine vous propose la plus probable. Conseil: prévoyez une colonne contenant un identifiant. 189: 190: La **partie 3** permet de définir les prédicats concernant le sujet défini dans la partie 2. Cherchez les prédicats adéquats dans les vocabulaires à votre disposition. 191: 192: La **partie 4** contient le nom des colonnes de votre tableur et permet d'aller chercher les valeurs qui seront l'objet de chaque prédicat. 193: 194: 195: [[image:grfnRDFSkeleton.JPG]] 196: 197: 198: === Ajouter un vocabulaire RDF === 199: 200: Par défaut, les vocabulaires suivants sont disponibles pour décirire vos données 201: 202: * RDFS 203: * FOAF 204: * OWL 205: * XSD 206: * RDF 207: 208: Vous souhaitez par exemple ajouter le vocabulaire du "Dublin Core" qui permet de décrire, en particulier, des publications. 209: 210: Dans le panneau du RDF Skeleton, cliquez sur "**add prefix**" 211: 212: [[image:grfnAddPrefix.JPG]] 213: 214: Dans la boîte, indiquez un nom de préfix, par exemple "dc". 215: 216: Indiquez ensuite l'URI du vocabulaire du Dublin Core ([[http:~~/~~/purl.org/dc/elements/1.1/>>http://purl.org/dc/elements/1.1/||rel="__blank"]]). Dans certains cas, OpenRefine vous propose automatiquement cette adresse (c'est le cas pour Skos). OpenRefine charge alors le vocabulaire qui sera maintenant disponible pour la session et toutes les suivantes. 217: 218: Pour trouver un élément du nouveau vocabulaire, utilisez son préfixe dans la boîte de recherche. 219: 220: === Transférer le squelette RDF d'un projet à l'autre === 221: 222: Dans le projet source, aller dans l'onglet Undo/Redo, et c(% style="line-height: 1.4em;" %)liquer sur "Extract...". Décocher toutes les opérations (Unselect all) et sélectionner uniquement la dernière opération du type "Save RDF schema skeleton". Copier le contenu du panneau de droite. 223: 224: Dans le projet cible, aller dans l'onglet Undo/Redo, et cliquer sur "Apply...". Coller le contenu dans le panneau de droite. Cliquer sur "Perform operations". Le processus peut prendre un certain temps et même bloquer l'application. Dans ce cas, fermer OpenRefine et le rouvrir. 225: 226: Il faut vérifier dans "Edit RDF skeleton" que le chargement a été correctement fait. Il faudra probabalement vérifier toutes les lignes de mapping et éventuellement revenir sur la sélection des colonnes (partie 4 en violet dans la section plus haut) 227: 228: === Installer l'extension RDF === 229: 230: 1) Localisez votre espace de travail OpenRefine. Pour cela, cliquez sur le lien en bas de la page des projets : 231: 232: [[image:openrefine_open-project.png]] 233: 234: 235: [[image:openrefine_workspace-direct.png]] 236: 237: 238: 239: 2) Dans le cas où il n'existe pas, créer le répertoire "extensions" dans le répertoire de l'espace de travail. 240: 241: 3) Fermer OpenRefine 242: 243: 4) Télécharger l'extension **"RDF extension**" depuis la liste des extensions [[http:~~/~~/openrefine.org/download.html>>http://openrefine.org/download.html||rel="__blank"]] 244: 245: 5) Dézippez l'archive téléchargée dans le répertoire "extensions" que vous venez de créer. 246: 247: 6) Redémarrez OpenRefine. Ouvrez un projet. Vous devez maintenant voir le bouton "RDF" en haut à droite. 248: 249: [[image:grfnRDFButton.JPG]] 250: 251: == Réconcilier des données == 252: 253: Réconcilier (ou peut-être plutôt aligner) les données est une fonctionnalité qui permet de lier de manière semi-automatique ses données à des bases de données externes (RDF et sparql-endpoint), par exemple [[Freebase >>http://wiki.freebase.com/wiki/What_is_Freebase%3F]]ou la [[taxonomie NCBI>>http://www.ncbi.nlm.nih.gov/taxonomy]]. 254: 255: La réconcilation est opérée via une API qui fait le lien entre Refine et la base de données externe. Pour développer de nouvelles API, voir [[les spécifications.>>https://github.com/OpenRefine/OpenRefine/wiki/Reconciliation-Service-API||title="documentation API de réconciliation"]] 256: 257: L'apport de la réconciliation est multiple: 258: 259: * créer un lien vers de pages externes pour y lire des informations complémentaires sur nos objets ; 260: * récupérer des informations complémentaires via l'API (par exemple, l'identifiant NCBI d'une espèce qui permettra d'autres accès à d'autres bases). 261: 262: Nous indiquons ici la procédure pour réconcilier ses données avec le contenu de //NCBI Taxonomy// que nous avons déjà utilisé (et qui fonctionne). 263: 264: === Opérations basiques === 265: 266: Pour mettre en place le service de réconciliation avec NCBI Taxonomy, voir la section [[Installer un service de réconciliation>>OpenRefine#HInstallerunservicederE9conciliation||title="Installer un service de réconciliation"]]. 267: 268: Nous vous conseillons de commencer par [[dupliquer la colonne>>OpenRefine#Dupliquer une colonne]] sur laquelle vous souhaitez appliquer la réconciliation. 269: 270: Pour une colonne contenant des noms d'êtres vivants, pour réconcilier ces noms avec ceux de //NCBI Taxonomy//, ouvrez le menu de la colonne en question et choisissez //Reconcile >Start reconciling//... 271: 272: 273: [[image:reconcile1.JPG]] 274: 275: Dans la boite de dialogue, choisissez //NCBI Taxonomy Service// sur la gauche. OpenRefine va alors tenter d'identifier le type des noms contenus dans votre colonne. Une fois fait, il va vous proposer une liste de types possibles (pour l'instant, il n'a l'air de proposer que location et people, quels que soient les noms...à suivre). Choisissez le plus adapté selon vous et cliquez sur //Start Reconcile//en bas à droite. 276: 277: Ceci peut prendre quelques minutes selon la taille de vos données (il est recommandé de limiter chaque réconciliation à une centaine d'entrées, pour Freebase au moins). 278: 279: A la fin du processus, vous verrez que les cellules réconciliées contiennent 1 lien ou 3 candidats avec un score de reconnaissance indiqué entre parenthèses ou rien. 280: 281: [[image:reconcile3.JPG]] 282: 283: Les cellules contenant des liens ont été automatiquement mises en correspondance, vous n'avez rien à y faire. Les cellules contenant des candidats n'ont pas pu être mises en correspondance car elles sont ambiguës C'est à vous de faire le choix soit individuellement, soit par paquets si vos données le permettent. En cliquant sur le candidat, vous accédez à sa page dans la base de données externe (dans l'exemple ci-dessus [[http:~~/~~/www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=112509>>http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=112509||rel="__blank"]] pour le premier "barley" ou [[http:~~/~~/www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=4513>>http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=4513||rel="__blank"]] pour le second "barley"). 284: 285: Différentes facettes peuvent être affichées pour évaluer la qualité de la réconciliation et accompagner l'utilisateur lors de la validation. 286: 287: [[image:reconcile4.JPG]] 288: 289: === Récupérer l'URL utilisé pour la réconciliation === 290: 291: La récupération de l'URL utilisé pour la réconciliation va permettre de lier les données au vocabulaire. Pour ce faire, on va créer une colonne sur la base de la colonne existante (dans l'exemple ci-dessus common2reconcile) en utilisant une fonction GREL. 292: 293: Supprimer les facettes éventuelles (Facet/Filter > remove all) et se placer en mode "rows" : 294: 295: **Menu déroulant common2reconcile > Edit column > Add column based on this column** 296: 297: saisir l'expression : **cell.recon.match.id** 298: 299: Cette expression récupère et insère dans chaque cellule l'identifiant (id, ici l'URL) des reconciliations qui ont été réalisées. 300: 301: === Installer un service de réconciliation === 302: 303: Des services de réconciliation avec quelques bases de données sont mises à disposition par de sympathiques internautes. Voir la liste plus bas. 304: 305: Pour notre exemple, choisissons NCBI Taxonomy pour lequel l'adresse d'API est [[http:~~/~~/iphylo.org/~~~~rpage/phyloinformatics/services/reconciliation_ncbi.php>>http://iphylo.org/~~rpage/phyloinformatics/services/reconciliation_ncbi.php||rel="__blank"]]. 306: 307: Copiez cette adresse. 308: 309: Procédez comme indiqué plus haut pour les premières étapes de la réconciliation. Au lieu de choisir un service sur la // Add Standard Service//. Dans la boîte de dialogue, collez l'adresse de l'API dans le champ Enter the service's URL comme montré ci-dessous. 310: 311: [[image:reconcile2.JPG]] 312: 313: Le nouveau service apparaît alors dans le menu de gauche. 314: 315: === Liste de services de réconciliations === 316: 317: Cette liste est à compléter au fur et à mesure de nos trouvailles. Si vous en trouvez de nouveau, merci de les indiquer en commentaire de cette page. 318: 319: Merci à [[iPhylo>>http://iphylo.blogspot.fr/2012/02/using-google-refine-and-taxonomic.html]] qui permet des liens vers différentes bases taxonomiques 320: 321: * [[EOL>>http://www.eol.org/]] : http:~/~/iphylo.org/~~rpage/phyloinformatics/services/reconciliation_eol.php 322: * [[NCBI taxonomy>>http://www.ncbi.nlm.nih.gov/Taxonomy/]] : http:~/~/iphylo.org/~~rpage/phyloinformatics/services/reconciliation_ncbi.php 323: * [[uBio FindIT>>http://www.ubio.org/tools/recognize.php]] : http:~/~/iphylo.org/~~rpage/phyloinformatics/services/reconciliation_ubio.php 324: * [[WORMS>>http://www.marinespecies.org/]]: http:~/~/iphylo.org/~~rpage/phyloinformatics/services/reconciliation_worms.php 325: * [[GBIF>>http://www.gbif.org/]] : http:~/~/iphylo.org/~~rpage/phyloinformatics/services/reconciliation_gbif.php 326: * [[Global Names Index>>http://gni.globalnames.org/]] : http:~/~/iphylo.org/~~rpage/phyloinformatics/services/reconciliation_globalnames.php 327: * [[OpenCorporates >>http://vimeo.com/17924204]]donne accès à des informations sur les entreprises britaniques, de Jersey et de Bermudes (et un petit tuto en vidéo) http:~/~/opencorporates.com/reconcile 328: * Projet [[VIVO>>https://wiki.duraspace.org/display/VIVO/Extending+Google+Refine+for+VIVO]], à creuser car ça a l'air plus complexe (mais peut-être pas) 329: 330: === Aligner (réconcilier) ses données avec le thésaurus Agrovoc === 331: 332: {{include document="ReconciliationAgrovoc"/}} 333: 334: == Fontions GREL et expressions régulières == 335: 336: {{include document="ExpressionsRegulieres"/}} 337: 338: === === 339: 340: == Exemples et cas d'usages == 341: 342: === Dans le monde des bibliothèques et de la documentation === 343: 344: * sur le site **Bibliopedia [[http:~~/~~/www.bibliopedia.fr/wiki/OpenRefine>>http://www.bibliopedia.fr/wiki/OpenRefine]][[(>>http://www.bibliopedia.fr/wiki/OpenRefine]]**Combinaison avec les web services abes, Contrôle d'accès à des ouvrages de numilog, Interrogation de la base Relire, Extraction des données d'une page web, Vérification d'un chantier de recotation, Vérification du dépôt d'articles dans HAL en fonction des couleurs RoMEO à partir du WoS. 345: * **Exploiter/visualiser/explorer un corpus issue de l’OAI-PMH grâce au duo OpenRefine/Palladio. D’une requête OAI à une exploitation des données par l’intermédiaire d’un outils d’infoviz (en passant par du nettoyage de données, de la géolocalisation, etc.).** Consulté 20 septembre 2016, à l’adresse [[https:~~/~~/medium.com/@seeksanusername/exploiter-visualiser-explorer-un-corpus-issue-de-loai-pmh-gr%C3%A2ce-au-couple-openrefine-palladio-1241323cf626#.mf63m8xbb >>https://medium.com/@seeksanusername/exploiter-visualiser-explorer-un-corpus-issue-de-loai-pmh-gr%C3%A2ce-au-couple-openrefine-palladio-1241323cf626]]
Outils
OpenRefine
XLWrap
Xwiki Compléments
Aide à la rédaction
XWiki Documentation
XWiki Inra
Recently Modified
Modifier la structure des données
OpenRefine
Les clusters
Facettes
LocalEditorGroup