google-refine.png OpenRefine (anciennement Google Refine) 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.

Note : la dernière version stable de Google Refine est la 2.5. Google Refine deviendra OpenRefine dans la prochaine version 2.6.

Documents et sites dont on s'est servi pour rédiger cette aide :

Pour commencer avec Google Refine

Installer Google Refine

Télécharger Google Refine et suivre les instructions.

Il est possible d'augmenter la mémoire vive allouée à Google Refine en modifiant la valeur dans le fichier google-refine.l4j

Formats importés

Google Refine (version 2.0) peut importer de nombreux formats :

  • TSV, CSV, ou n'importe quelles valeurs séparées par un séparateur que l'on spécifie
  • Excel (.xls, xlsx)
  • XML, RDF/XML
  • JSON
  • Feuille de calcul Google
  • RDF N3 triples

En première instance, Google Refine se base sur l'extension du fichier. Devant une extension inconnue, Google Refine utilise les tabulations ou les virgules pour identifier les colonnes.

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).

Il est possible d'importer une archive (extension .zip, .tar.gz, .tgz, .tar.bz2, .gz, ou .bz2) : Google Refine détecte les extensions les plus courantes et charge tous les fichiers ayant la même extension dans un projet unique.

Il est possible également d'utiliser un URL pour pointer vers une fichier de données ou une feuille de calcul Google.

Après l'import les données sont enregistrées dans un format propre à Google Refine :; les données d'origine ne sont pas modifiées.

Lancer Google Refine

Lancer Google Refine en exécutant en local le programme google-refine.exe

Après avoir démarré, Google Refine 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 Google Refine)

Créer un nouveau projet

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 (contenant des références issues de ProdInra).

create-project_1.JPG

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).

create2.JPG

Les paramètres d'import sont affichés et peuvent être modifiés avant l'import :

  • ignorer la première ligne
  • considérer la première ligne comme une ligne d'entêtes
  • supprimer les x premières lignes
  • télécharger au minimum x lignes
  • conserver ou non les lignes blanches
  • considérer les cellules blanches comme vides
  • conserver le nom du fichier d'origine (ou l'url) dans chaque ligne

Vérifier que l'encodage choisi est le bon. S'il apparait des caractères étranges (comme ci-dessous),

encodage.JPG

changer en utilisant la boîte "Character encoding".

encodage_UTF8.JPG

Donner éventuellement un nom au projet (ou laisser le nom du fichier importé) puis cliquer sur Create Project pour poursuivre l'import .

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.

nouveau-projet.JPG

Supprimer, renommer un projet

Pour supprimer un projet, il faut d'abord afficher les projet existants : cliquer sur le logo Google Refine puis Open Project.

create-project_6.JPG

Sélectionner le projet et cliquer sur la croix pour le supprimer, ou sur rename pour le renommer.

create-project_7.JPG

Historique

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.

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.

Lorsqu'on exporte un projet, l'historique est inclus dans l'export.

Il existe également un historique des expressions GREL

Facettes et filtres

Les facettes permettent de grouper les contenus semblables, pour y apporter des modifications par exemple. Vous utiliserez les facettes et des filtres très souvent dans Google Refine.

Les facettes sont créées à partir du contenu d'une colonne.

On peut avoir plusieurs facettes simultanément : chaque nouvelle face|te otÈre une sélection de données à partir des données déjà sélectionnées par la facette précédente. Attention à ne conserver que les facettes utiles
Les facettes ne fonctionnent que sur quelques milliers d'entrées uniques, donc si vous avez un jeu de données très volumineux et que vous voulez trouver des valeurs spécifiques dans une colonne avec de nombreuses valeurs distinctes, il peut être préférable d'utiliser un filtre pour rechercher un élément en particulier.

Cliquez sur le menu déroulant de l'en-tête de colonne, puis Facets > Text facets

Exemple de création de facettes sur la colonne "Type de produit" :

facettes1.JPG

Vous verrez apparaître un encadré qui regroupe tous les contenus de cellules identiques avec le nombre d’occurrence.

facettes2.JPG

Ceci peut être utile pour différentes raisons :

  • Repérer les fautes de frappe. Pour corriger, cliquez sur éditer et modifier directement. Cela modifiera toutes les cellules contenant cette faute de frappe.
  • Repérer les colonnes vides. Vous pouvez supprimer cette colonne en cliquant sur la colonne, Menu déroulant > Edit Column > Remove this Column.
  • Repérer des lignes vides.
  • Supprimer les  doublons (lignes semblables).
    Pour cela on trie les lignes sur ​​une valeur unique, dans l'exemple ci-dessous l'identifiant.
    Colonne Identifiant : Menu déroulant > Sort > Sort... cell values as Numbers

    sort_identifiant.JPG

    Une fois le tri effectué, un bouton "sort" apparait.
    Le tri est seulement une aide visuelle, à moins de choisir un tri permanent.
    Sort > Reorder rows permanently
    le tri permanent renumérote les lignes

    sort_identifiant2.JPG

    On peut ensuite supprimer l'Identifiant dans les lignes pour lesquelles il est identique à celui de la ligne précédente. On identifie ainsi les lignes qu'on pourra ensuite supprimer :
    Colonne Identifiant : Menu déroulant > Edit cells > Blank down
    .

    Pour supprimer ces lignes on peut créer des facettes à partir des cellules vides :
    Colonne Identifiant : Menu déroulant > Facet > Customized facets > Facet by blank


    facettes3.JPG

    Puis n'afficher que ces lignes en cliquant sur True dans le cadre des facettes et les supprimer par
    Colonne All : Menu détoulant > Edit rows > Remove all matching rows
    .

Facettes personnalisées

On peut construire des facettes à partir d'une valeur saisie pour repérer les lignes contenant cette valeur.

Facet -> Custom text facet value.contains("valeur-saisie")

Exemple 1 :

La colonne "Clé UT" contient des valeurs parfois précédées de "WOS:". Pour n'avoir plus que des valeurs on va créer une facette personnalisée pour repérer les lignes contenant "WOS:".

Colonne Clé UT : Facet > Custom Text facet : value.contains("WOS:")

facettes4.JPG

On sélectionne les 4 lignes en cliquant sur "true" puis on modifie le contenu des cellules :

Clé UT : Edit Cell > Transform value.replace ("WOS:","")

Reste à supprimer les deux points précédant les valeurs dans la colonne Clé UT. On procède avec la même fonction "replace", mais comme le guillemet est un caractère particulier on va utiliser la syntaxe suivante :

Clé UT : Edit Cell > Transform value.replace ('"','')

ou bien

Clé UT : Edit Cell > Transform value.replace ("\","")

Exemple 2 (extrait d'un autre projet) :

endowment.JPG

La colonne "endowment" (dotation) contient en principe des montants, mais certains sont exprimés sous la forme de texte, en particulier par une nombre suivi de "million". Pour modifier les cellules contenant ce type de donnée, on va devoir supprimer "million" sans oublier de multiplier le nombre contenu dans la cellule par 1000000 !

La première étape est de créer une facette personnalisée pour identifier et isoler les lignes contenant "million" dans cette colonne :

Facet -> Custom text facet value.contains("million")

On sélectionne uniquement les lignes concernées en cliquant dans la boite de la facette sur "true".

Pour multiplier par 1000000 il faut avoir des nombres et non des textes, on va donc également transformer le contenu des cellules en nombre. Pour cela, sur la colonne Endowment on effectue la commande :

Edit Cell > Transform  toNumber(value.replace("million.",""))*1000000

toNumber.JPG

Facettes en nuage de points

Offrent une autre façon d'explorer les données en créant des nuages de points correspondant aux relations entre les colonnes. On peut ensuite sélectionner une portion du nuage de points et n'afficher que les données (les lignes) correspondantes.

Facet > Scatterplot facet

Un tableau est généré, cliquer sur "log" pour afficher une présentation plus parlante :

nuages.JPG

Cliquer sur une des zones, le nuage correspondant est alors affiché en regard du tableau des données. On peut alors sélectionner une partie du nuage et voir les lignes correspondant à cette sélection.

nuages-selection.JPG

Les clusters

Les clusters regroupent différentes valeurs de cellules qui pourraient être des représentations alternatives d'un même chose (singulier-pluriel, minuscules-majuscules, mots composés avec ou sans espace, caractères accentués ou non...etc.).
Menu déroulant d'une colonne > Edit cells  > Cluster and edit.

Google Refine utilise différentes techniques pour identifier les clusters (par défaut "key collision" with "fingerprint").

Exemple :

clusters1.JPG

Si les clusters identifiés vous paraissent corrects, Select All puis Merge Selected & Re-Cluster. Il est possible de modifier la valeur proposée par Google Refine (New cell value) avant de valider la fusion des contenus.

On peut choisir une autre technique de clusterisation (Key collision + ngram-fingerprint + Ngram Size=2) qui va identifier les groupes qui ne diffèrent que par un espace (voir ci-dessous).

cluster_2.JPG

Autre exemple sur la colonne "événements" avec la méthode "Key collision / metaphone3".

clusters2.JPG

Méthodes de clustering

Les méthodes de clustering sont proposées dans l'ordre d'agressivité croissant. Il faut donc les appliquer les unes après les autres dans l'ordre, jusqu'à atteindre le degré de fusion satisfaisant.

Key-collision

  • + fingerprint ne va chercher que des différences de casse.
  • + ngram+fingerprint va permettre de chercher des différences impliquant des inclusion ou non d'espace ou de tiret (pour les formes composées). Il permet de jouer sur la taille des paquets de lettres utilisés lors de la comparaison.
  • Les modèles phonétiques sont très utiles pour rapprocher des noms de personne qui auraient été saisies par des opérateurs téléphoniques par exemple. Metaphone 3 fonctionne bien sur l'anglais et cologne-phonetics sur l'allemand.

Nearest neighbour

plus sophistiqué mais aussi plus lent. 

  • Levenstein est aussi appelé "distance d'édition" et est basé sur le nombre d'opérations nécessaires (suppression, ajout, substitution) pour passer d'un mot à un autre. Par exemple pour passer de SAMEDI à MARDI, la distance est de 3. (S devient M, M devient R, E est supprimé). Radius permet d'autoriser plus ou moins d'écart entre 2 mots.
  • PPM est utilisé pour comparer les séquences ADN.

Lignes et enregistrements

Les enregistrements (records) permettent de distribuer des valeurs de cellules mutlivaluées sur plusieurs lignes (rows).

Edit cells > Split multi-valued cells et indiquer le séparateur.

Le nombre d'enregistrements reste le même mais le nombre de lignes a augmenté.

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).

Transposer les données en colonnes

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.

*** Ajouter un exemple ***

Modifier le contenu des cellules

Éditer une cellule pour la modifier manuellement

Se placer simplement sur la cellule et cliquer sur "edit" lorsqu'il apparait.

edit1.JPG

On peut alors saisir les modification à apporter puis indiquer si elles porteront uniquement sur cette cellule ou sur toutes les cellules identiques.

edit2.JPG

Transformations courantes proposées par OpenRefine

transformations-courantes-c.jpg

Ce sont :

  • supprimer les espaces initiaux et finaux (trim leading and trailing whitespace)
  • suppression des espaces consécutifs (Collapse consecutive whitespace)
  • Convertit toutes les entités HTML en caractères normaux ? à vérifier (unescape HTML entities)
  • transformation en majuscule (to uppercase), en minuscule (to lowercase) ou avec en minuscule avec une majuscule en début de phrase (to titlecase)
  • Convertit le contenu des cellules en type nombre, date ou texte
  • Supprime le contenu des cellules

Cas des dates

Pour transformer et nettoyer des dates on les convertira tout d'abord en texte, pour les convertir ensuite en date.

Edit cells > Common transforms > To text

Edit cells > Common transforms > To date

En effet, sans la première transformation en texte les années peuvent être considérées comme des nombre et ne sont pas converties ensuite en date.

Si la date est uniquement une année, la date résultant de la transformation est le 1er janvier de l'année (ex : 2005-01-01T00:00:00Z).

Si la colonne de dates contient autre chose que des dates, il va falloir utiliser les fonctions et expressions régulières pour ne conserver que les dates.

Exemple : value.match(/.*(\d{4}).*/)[0] pour ne conserver sur les années.

dates-transform.JPG

Une fois les années isolées, on peut à nouveau transformer en type date (Edit cells > Common transforms > To date).

On obtient des dates de type : 2005-01-01T00:00:00Z.

Pour ne conserver que l'année (mais en conservant le type date des données) on utilisera l'expression value.toString('yyyy')

De la même manière, on peut transformer la date en récupérant les jours et les mois.

Exemple : value.toString('DD/MMMM/yyyy')

  • value.toString('M') --> 1
  • value.toString('MM') --> 01
  • value.toString('MMM') --> Jan
  • value.toString('MMMM') --> January

Autre exemple : value.toDate('MM/yy','MMM-yy').toString('yyyy-MM') transforme les dates de type 06/13 et Jun-13 en June-13

Voir si besoin une documentation détaillée sur les dates

Modifier des cellules à l'aide de fonctions (du langage GREL, clojure ou jython) et d'expressions régulières

Remplacer une valeur ou une chaine de caractères par une autre

value.replace("chaine-a-remplacer", "chaine-de-remplacement")

Dans l'exemple ci-dessous, on veut supprimer les guillemets présents dans certaines cellules autour du prénom dans la colonne Candidate Name.

Menu déroulant Candidate Name > Edit cells > Transform

Saisie la fonction suivante : value.replace("\"", ""). Le caractère \ est un caractère d'échappement, il permet d'indiquer à OpenRefine qu'il doit utiliser le guillemet comme caractère à remplacer et non pas comme élément de la fonction value.replace.

edit-cell-transform.JPG

Il est possible d'effectuer plusieurs modifications en un seul passage en combinant les commandes replace.

Dans l'exemple ci-dessous, on supprime d'un seul coup les "~" et les ",".

value.replace("~", "").replace(",","")

Supprimer les contenus semblables

value.split(", ").uniques().join(", ")

Dans l'exemple suivant, certaines cellules de la colonne "Categories" contient des valeurs en double (lignes 6 et 8 entre autres).

supprimer-contenus-semblables_1.JPG

Pour supprimer ces valeurs on transforme le contenu des cellules à l'aide d'une fonction GREL1:

Menu déroulant Categories > Edit cells > Transform

Saisie la fonction suivante : value.split(", ").uniques().join(", ")

Cette fonction sépare les valeurs de la cellule (selon le séparateur ", ") puis ne conserve que les valeurs uniques et joint à nouveau ces valeurs dans la cellule.

supprimer-contenus-semblables_2.JPG

Remplacer les caractères spéciaux codés dans les URLs

value.unescape('url')

transformera par exemple "%26" en "&"

  1. ^ Google Refine Expression Language

Modifier la structure des données

A TERMINER

Ajouter une colonne

ajouter-colonne.JPG

Menu déroulant de la colonne : Edit column >  Add column...

Scinder une colonne

Dupliquer une colonne

Dans le menu de la colonne que vous voulez dupliquer, choisissez Edit column > Add a column based on this column.

Dans la boîte de dialogue, indiquez le nom de la nouvelle colonne.

Dans la case "Expression", conservez la commande "value" (qui indique que les nouvelle cellules contiendront la valeur des cellules d'origine).

Cliquez sur OK.

Notes:

  • si la cellule d'origine est vide, la nouvelle cellule sera également vide. 
  • la nouvelle colonne est créé à la droite de la colonne d'origine

Ajouter des colonnes à l'aide d'un web service

Fractionner les cellules à valeurs multiples

Pour fractionner une cellule contenant plusieurs valeurs, on doit pouvoir identifier un séparateur dans le contenu des cellules.

Menu déroulant de la colonne > Edit cells > Split multi-valued cells, indiquer le séparateur retenu.

Google Refine crée de nouvelles lignes pour chaque nouvelle valeur.

La fonction inverse est  Join multi-valued cells (Menu déroulant de la colonne > Edit cells > Join multi-valued cells)

Transformer les colonnes en lignes

Transformer des lignes en colonnes

Comparer les valeurs de deux colonnes

Pour comparer les chaînes de 2 colonnes différentes ("a" et "b") et présenter le résultat dans une troisième colonne

Edit column > Add column...

if(cells["a"].value == cells["b"].value, "Yes", "No") 

Construire les facettes "Yes" et "No" de la nouvelle colonne pour voir quelles cellules sont similaires (Yes), et lesquelles sont différentes (No).

Une autre possibilité est de créer directement les facettes (sans construire la 3ème colonne).

Utiliser Facet > Custom text facet avec l'expression : 

value == cells["b"].value

Fusionner des données provenant de différents projets

A REDIGER

Exporter des données en RDF

Vous devez d'abord installer l'extension.

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":

grfnRDFButton2.JPG

Définir la conversion

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.

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 Google Refine 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"

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. Google refine vous propose la plus probable. Conseil: prévoyez une colonne contenant un identifiant. 

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.

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.

grfnRDFSkeleton.JPG

Ajouter un vocabulaire RDF

Par défaut, les vocabulaires suivants sont disponibles pour décirire vos données

  • RDFS
  • FOAF
  • OWL
  • XSD
  • RDF

Vous souhaitez par exemple ajouter le vocabulaire du "Dublin Core" qui permet de décrire, en particulier, des publications.

Dans le panneau du RDF Skeleton, cliquez sur "add prefix"

grfnAddPrefix.JPG

Dans la boîte, indiquez un nom de préfix, par exemple "dc".

Indiquez ensuite l'URI du vocabulaire du Dublin Core (http://purl.org/dc/elements/1.1/). Dans certains cas, Google Refine vous propose automatiquement cette adresse (c'est le cas pour Skos). Google Refine charge alors le vocabulaire qui sera maintenant disponible pour la session et toutes les suivantes.

Pour trouver un élément du nouveau vocabulaire, utilisez son préfixe dans la boîte de recherche. 

Transférer le squelette RDF d'un projet à l'autre

Dans le projet source, aller dans l'onglet Undo/Redo, et cliquer 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.

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. 

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)

Installer l'extension RDF

1) Localisez votre espace de travail Google Refine. Pour cela, cliquez sur le lien en bas de la page d'accueil de Google Refine. 

Accéder à la page d'accueil grfnHomelink.JPG 
Accéder à l'espace de travail grfnWorkspacelink.JPG 

2) Dans le cas où il n'existe pas, créer le répertoire "extensions" dans le répertoire de l'espace de travail.

3) Télécharger l'extension depuis cette adresse: http://refine.deri.ie/.

4) Dézippez l'archive téléchargée dans le répertoire "extensions" que vous venez de créer.

5) Redémarrez Google Refine. Vous devez maintenant voir le bouton "RDF" en haut à droite.

grfnRDFButton.JPG

Réconcilier des données

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 ou la taxonomie NCBI.

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.

L'apport de la réconciliation est multiple:

  • créer un lien vers de pages externes pour y lire des informations complémentaires sur nos objets ;
  • 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).

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).

Opérations basiques

Pour mettre en place le service de réconciliation avec NCBI Taxonomy, voir la section Installer un service de réconciliation.

Nous vous conseillons de commencer par dupliquer la colonne sur laquelle vous souhaitez appliquer la réconciliation. 

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...

reconcile1.JPG

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 Reconcileen bas à droite.

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).

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.

reconcile3.JPG

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 pour le premier "barley" ou http://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=4513 pour le second "barley").

Différentes facettes peuvent être affichées pour évaluer la qualité de la réconciliation et accompagner l'utilisateur lors de la validation.

reconcile4.JPG

Récupérer l'URL utilisé pour la réconciliation

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.

Supprimer les facettes éventuelles (Facet/Filter > remove all) et se placer en mode "rows" :

Menu déroulant common2reconcile > Edit column > Add column based on this column

saisir l'expression : cell.recon.match.id

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.

Installer un service de réconciliation

Des services de réconciliation avec quelques bases de données sont mises à disposition par de sympathiques internautes. Voir la liste plus bas.

Pour notre exemple, choisissons NCBI Taxonomy pour lequel l'adresse d'API est http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_ncbi.php.

Copiez cette adresse. 

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.

reconcile2.JPG

Le nouveau service apparaît alors dans le menu de gauche.

Liste de services de réconciliations

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.

Merci à iPhylo qui permet des liens vers différentes bases taxonomiques

  • EOL : http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_eol.php
  • NCBI taxonomy : http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_ncbi.php
  • uBio FindIT : http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_ubio.php
  • WORMS: http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_worms.php
  • GBIF : http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_gbif.php
  • Global Names Index : http://iphylo.org/~rpage/phyloinformatics/services/reconciliation_globalnames.php
  • OpenCorporates 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
  • Projet VIVO, à creuser car ça a l'air plus complexe (mais peut-être pas)

Aligner (réconcilier) ses données avec le thésaurus Agrovoc

Pour réaliser cette (délicieuse) recette, nous allons utiliser :

  • le service de réconciliation d'Open Refine
  • notre fichier source mots-cles-EN-FR (en pièce jointe à cette page)
  • un fichier RDF contenant les termes anglais du thésaurus Agrovoc de la FAO 

Voici les étapes à suivre

1. Chargez le fichier à aligner (mots-cles-EN-FR en pièce jointe) dans Open Refine. Il contient 30 enregistrements de concepts associés à des termes anglais et français.

2. Récupérez le fichier Agrovoc RDF/XML à cette adresse : http://aims.fao.org/standards/agrovoc/functionalities/download. Choisissez :

  • SKOS RDF/XML English Only - (much smaller, good for testing in your favorite SKOS editor)
    agrovoc.skos.xml.en.zip 

    Enregistrez-le de façon à le retrouver facilement.

3. Vérifiez que vous avez installé l'extension RDF. Si ce n'est pas le cas, suivez les instructions à cette page et revenez ici ensuite.

4. Ajoutez un service de réconciliation "Base on RDF file"

openrefine-reconciliationFile.JPG

  • Donnez un nom à votre nouveau service,
  • indiquez le fichier Agrovoc à charger, 
  • sélectionner le format RDF/XML
  • choisissez "skos:prefLabel", qui permettra de cibler les données à considérer pour l'alignement.

operefin-add-fileservice.JPG
La mise en place du service peut prendre quelques minutes. Patience.

5. Dans le menu de la colonne "label-en", choisissez Reconcile | Start reconciling. Dans la liste de services du menu de gauche, choisissez Agrovoc. Après quelques instants la fenêtre de réconciliation s'ouvre.

match.JPG

Conservez les options sélectionnées par défaut. Appuyez sur "Start reconciling". Le processus prend du temps, même pour un petit ensemble de données (chargement du thésaurus Agrovoc en mémoire).

Et voilà ! Vous pouvez voir dans le menu de gauche que 12 termes (labels) ont trouvé une correspondance dans le thésaurus Agrovoc.

resultat-match.JPG

Le travail (le vôtre) ne fait que commencer. Vous verrez par exemple que pour un même concept de notre fichier on obtient un alignement à plusieurs concepts Agrovoc. A vous d'aller voir à quoi ils correspondent (il suffit de cliquer sur le lien en bleu) et de faire vos choix.

Note : il peut être préférable de dupliquer la colonne sur laquelle vous souhaitez appliquer la réconciliation. 

Voici donc la méthode que nous vous 0ropoSonr... pour l'instant. A bientôt

Fontions GREL et expressions régulières

OpenRefine utilise les expressions régulières avec la syntaxe Java. On peut se reporter pour aller plus loin aux référentiels suivants :

L'intégration d'une expression régulière dans une expression GREL se fait entre deux slashs /expression/

Exemple :  value.replace(/\s+/, " ") où l'expression régulière est   \s+

Classes de caractères

  •  \d  un chiffre, on peut utiliser aussi : [0-9]
  •  \D  n'importe quel caractère sauf un chiffre. Équivalent à [^0-9]
  •  \s  espace (ou une tabulation, un saut de ligne, un retour à la ligne)
  •  \S  un caractère autre qu'un espace (ou une tabulation, un saut de ligne, un retour à la ligne)
  •  \w  n'importe quel caractère alphanumérique. Équivalent à [a-zA-Z_0-9].
  •  \W  n'importe quel caractère non alphanumérique.

Opérateurs

  • union (non marqué)
  • intersection  && 
  • négation  ^ 

Exemples d'utilisation :

  • [abc] La classe des trois caractères a, b et c
  • [a-z] classe de tous les caractères de a à z.
  • [^abc]  La classe de tous les caractères sauf a, b et c.
  • [a-zA-Z] L'union des classes [a-z] et [A-Z].
  • [a-z[A-Z]]  L'union des classes [a-z] et [A-Z].
  • [123abc&&[a-z]]  L'intersection de la classe [123abc] et  de la classe [a-z]

Métacaractères

  •  .   caractère unique. 
  •  .*  0 à n caractères de tout type
  •  ?  indique le caractère optionnel de ce qui précède (zéro ou une occurrence).
  •  +  une ou plusieurs occurrences.
  •  {n}  indique que l'on cherche n éléments (ex : \d{4} pour 4 chiffres)
  •  []  Intervalle de caractères. Exemple : [2-4]
  •  {}  Quantificateur. Exemple : m{2} pour mm.
    • {n} : exactement n occurrences
    • {n,} : au moins n occurrences.
    • {n,m} : de n à m (inclus) occurrences.
  •  \  Le caractère qui suit n'est plus considéré comme un méta-caractère
  •  ^  Négation ou début de ligne.
  •  $  Fin de ligne.
  •  |  Opérateur ou.

Tout caractère utilisé dans les expressions régulières doit être "échappé" en le précédant d'un "\" si l'on veut le rechercher.
Caractères devant être échappés :

  • . doit être écrit  \. 
  • + doit être écrit  \+ 
  • ? doit être écrit  \? 
  • [ doit être écrit  \[ 

Quelques exemple d'utilisations d'expressions régulières présentes dans ce wiki :

  • value.match(/.*(\d{4}).*/)[0] Extrait une année à partir de données mêlant années et texte. *  [0]    indique qu'on ne conserve que le 1er élément du tableau généré par la fonction value.match
  •  [-+]?[0-9]+(\.[0-9]+)?  décrit tout nombre décimal. On peut également écrire :  [-+]?\d+(\.\d+)?  

Historique des fonctions Grel

A chaque fois qu'on ouvre une boîte de transformation (Edit Cells/Transfom, Custom facet, Custom transform, etc.), on accède au même historique des fonctions Grel précédemment utilisées, dans le projet en cours ou dans un autre projet.

grel-historique.JPG

Dans cet historique, les transformations préférées peuvent être marquées par une étoile pour les retrouver plus rapidement (onglet "starred").

grel-starred.JPG
  

Exemples et cas d'usages

Dans le monde des bibliothèques et de la documentation

Tags:
Created by Sylvie COCAUD on 2013/02/18 15:46
     
© Copyright 2004-2017 XWiki - Directeur de publication : Pascal Aventurier - Sylvie Cocaud
6.4.6