Skip to content

Cas d’utilisation d’Open Refine – exemple 1/3 : nettoyer une liste de valeurs

10/10/2017

Ce blog est un peu en dormance, je vais essayer de le réactiver un peu. Disons que je n’ai pas encore trouvé (après déjà une année passée à Paris…) où je pouvais caler le moment « bloguer » dans mon rythme hebdomadaire.

Voici très rapidement un exemple d’utilisation d’Open Refine. Ce logiciel, dont j’ai déjà parlé à plusieurs reprises, est installé sur mon poste mais je n’en fais usage qu’assez épisodiquement — quand j’identifie qu’il peut m’être plus utile qu’Excel. Je prévois donc de présenter 3 exemples d’utilisations d’Open Refine — si ça peut vous donner d’autres idées.

Petite digression d’abord sur ce que je fais depuis un an à la BnF : je contribue, sur les notices déjà existantes, à l’évolution des données dans le contexte de la Transition bibliographique, et plus généralement à l’amélioration des données du catalogue — donc en gros, dès qu’on peut ajouter un peu de traitement de données, d’automatisations, j’aime bien mettre mon grain de sel. Un des gros projets en cours, c’est donc se rapprocher par étapes et à-coups du modèle FRBR (bon, LRM en fait maintenant, mais on verra ça une autre fois). Ce projet se décompose en un certain nombre de chantiers, selon la nature des documents, la nature des modifications, la nature des informations concernées, etc. La journée Systèmes & Données du 14 novembre devrait être l’occasion d’en évoquer certains.

Et il y a d’autres chantiers, liés à l’amélioration des données du catalogue « en général ». Parmi ceux-ci, je vais en évoquer un juste parce qu’il m’a donné l’occasion d’utiliser Open Refine (le chantier en question n’est pas terminé, d’ailleurs).

Le corpus est un lot de 34000 partitions : partie pour violon, partition pour chef d’orchestre, adaptation pour piano, etc. Le type de partition est précisé dans une zone en texte libre (la zone Intermarc 258$f, en l’occurrence).

Or il existe en parallèle une zone codée, permettant de décrire un type de partition : cette valeur permettrait ensuite de générer une facette, ou se retrouverait exploitable dans data.bnf.fr, etc.

referentiel type partition

Il faut donc l’alimenter à partir des informations textuelles.

Partir de 1500 valeurs distinctes pour arriver à 11.

Pour le logiciel Open Refine, il s’agit de clusteriser des valeurs (c’est-à-dire regrouper des chaînes de caractères distinctes dans un même groupe, auquel on affecte un même code). Ce n’est finalement pas différent de ce qu’a expliqué l’Abes sur son blog en 2014 à propos de la zone 200$bTexte imprimé. C’est également l’usage qui a été fait de ce même logiciel au SCD de Nice pour identifier les disciplines des thèses portant sur l’Afrique (la « discipline » dans une notice de thèse est une zone en texte libre).

Concernant ce chantier sur les partitions, voici les étapes suivies :

  1. extraction du catalogue d’un corpus de notices concernées, avec la zone textuelle source
  2. chargement dans Open Refine
  3. ajout d’une colonne « zone 258$f nettoyée » dupliquant la zone 258$f (ça permet de préserver la colonne contenant la valeur initiale : pour comparaison si les traitements successifs, trop violents, rendent le résultat final difficile à comprendre)
  4. Réalisation de plusieurs opérations de nettoyage et regroupement sur cette colonne, pour réduire le nombre de valeurs distinctes :
    1. rapprochements automatiques entre valeurs un peu différentes, en testant plusieurs algorithmes de clusterisation
      Le premier, le plus restrictif, peut être validé sans trop regarder : il rapproche les variantes d’accents, de majuscules et de ponctuation
      (et on passe en 2 secondes de 1500 valeurs à 1000)
      merge and recluster
    2. Utilisation des facettes, de Text Filter, pour identifier toutes les chaînes de caractère contenant par exemple « choeur », ou « voix », etc. pour attribuer une valeur commune à toutes ces lignes

On réexporte ensuite le résultat, sous forme d’un tableau à 2 colonnes :

  • Numéro de notice
  • Nouvelle valeur de la 009 pos.3

export_table

Fin du chantier
(restera évidemment à charger les données dans le catalogue, mais c’est pas moi qui m’en occupons)

Publicités

Laisser un commentaire

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

%d blogueurs aiment cette page :