Aller au contenu principal

Utilitaire : détecter les doublons dans plusieurs fichiers

05/11/2018
Une des raisons qui expliquent que je blogue moins depuis mon arrivée à Paris (outre des raisons personnelles, comme d’avoir 3 enfants à la maison), est que la BnF dispose de canaux officiels de communication à destination des professionnels.
Lorsque je travaillais au SCD de Nice, et que je bricolais des trucs sur Zotero, XSL, JavaScript ou Yahoo Pipes, je n’avais pas d’espace institutionnel à disposition. Ce blog était donc le bon canal pour partager les trucs qui me semblaient intéressants.
Mais ce que je fais à la BnF et qui soit susceptible d’intéresser des collègues, peut déjà être diffusé, notamment via le site transition-bibliographique.fr, l’espace Github de Bibliostratus, ou les journées professionnelles. Je n’ai donc pas forcément besoin d’un espace supplémentaire pour vous raconter ma vie (professionnelle).
Encore que je vous promets prochainement un billet pour avoir une vue d’ensemble sur la FRBRisation du catalogue et la correction en masse des données (avec du Bibliostratus dedans, d’ailleurs, et d’autres trucs aussi).
Il y a 2 ans, j’indiquais comment installer Python sur un PC, avec l’idée de vous partager divers scripts pratiques. J’avais oublié alors le temps écoulé entre le moment où j’avais commencé à apprendre XSL, et celui où j’en ai fait des billets.
Bon, ça fait deux ans que je monte en compétences sur Python (dont une année de Bibliostratus), sans proposer des trucs sur ce blog pour faciliter la vie.
Donc voilà dedupe-multifiles, un petit utilitaire développé hors de mon temps de travail, et qui peut vous intéresser à l’occasion.
Imaginons le cas suivant (c’est un exemple) : dans un contexte intercommunal, vous projetez de fusionner 10 SIGB en une seule base. (Je passe sur le fait que, par ailleurs, Bibliostratus vous permettrait, en identifiant les ARK de chaque notice de chaque base, d’identifier les doublons bibliographiques.) Vous soupçonnez que certains codes-barres peuvent dans plusieurs SIGB. Il vous faut donc comparer chacun des CB à chaque CB de chacune des autres bases.
Vous voyez le problème…
Donc ce petit programme Python propose de le faire pour vous.
Je n’ai pas développé d’interface un peu plus jolie (un formulaire avec des boutons, etc.) : ça se passe dans un terminal en noir et blanc, mais il y a peu d’infos à mettre.
Préalable : vous devez avoir installé Python 3.7, la librairie openpyxl, et déposé ce fichier dedupe-multifiles.py dans un répertoire en local.
En entrée, vous devez disposer d’un lot de fichiers Excel, ou un lot de fichiers CSV (évitez de mélanger les formats, quand même). Dans chacun, la colonne « Code-barre » (ou tout autre identifiant dont il faut vérifier s’il est dans plusieurs fichiers) doit être au même endroit (par exemple : en 3e colonne)
Le programme vous demande :
  1. la liste des fichiers (le plus simple est de les mettre tous dans le même répertoire que le script, pour éviter d’avoir à gérer le chemin absolu ou relatif dans les répertoires, mais ce n’est pas une obligation)
  2. la colonne où se trouvent les identifiants à comparer (elle peut être désignée par son numéro de colonne, ou par son en-tête)
 2 options supplémentaires sont également proposées
  1. Si vous souhaitez ignorer certaines lignes, par exemple tous les exemplaires en statut « Pilonné » qui ne seront pas migrés
    (en précisant la colonne « Statut de l’exemplaire » où chercher la valeur « Pilonné »)
  2. Si vous souhaitez récupérer toutes les métadonnées associées aux identifiants doublons, et pas seulement les identifiants eux-mêmes (donc récupérer en sortie la ligne complète de ces identifiants)
Imaginons maintenant qu’on dispose des fichiers suivants :
3 fichiers, avec des codes-barres en commun en 3e colonne
Voici comment exécuter le script et renseigner les paramètres
Et donc, le script produit :
  • un état d’avancement et une analyse finale directement dans le terminal
  • un fichier en sortie contenant la liste des doublons

Et le fichier rapport.xslx (si on a choisi de conserver toutes les métadonnées)

(l’identifiant sur fond bleu, présent dans 2 fichiers, n’est pas sorti comme doublon car dans un des fichiers, l’exemplaire était marqué comme Pilonné)
Je vous laisse envisager les cas d’utilisations pertinentes d’un tel script.
Je ne sais plus quelle bibliothèque envisageait d’utiliser Bibliostratus pour aligner plusieurs catalogues (en vue d’une fusion) et utiliser les ARK BnF (ou les PPN) comme identifiant commun pour trouver les doublons.
No comments yet

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 )

Photo Google+

Vous commentez à l'aide de votre compte Google+. 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 )

Connexion à %s

%d blogueurs aiment cette page :