DOI: 10.5281/zenodo.15575447
title: Gender_Biases_OpenScience _M6B_Exercise_Curation

description: Gestion des données issues d’une recherche sur des articles scientifiques concernant les biais de genre dans les travaux scientifiques

 

Readme pour le dataset intitulé « Tests-Gender-propre-final-6.csv » issu d’un exercice réalisé dans le cadre du cours « Curation des données » du Master Information Science de la Haute École de Gestion à Genève. Dans ce cadre, un dataset a été créé puis traité avant d’être rendu disponible sur une plateforme. Le dataset contient les données obtenues avec les différentes actions de traitement décrites ci-après. Le fichier est en format .csv et contient environ 1600 entrées. Le fichier contient des données manquantes qui n’ont pas pu être complétées (voir détails ci-dessous). 

 

Étapes de traitement appliquées

 

1.      Collecte des données brutes et extractions des données subsidiaires

 

Recherche des articles scientifiques à l’aide de cinq équations de recherche sur l’outil Publish or Perish

-          Mots-clés : « Gender AND API », « Gender AND Biases », « Gender AND Prediction », « Gender AND Prediction AND Classification», «Name to Gender»

-          Paramètres de la recherche : max 1000 lignes

-          Base de données sélectionnée : Crossref

 

Les résultats issus des cinq recherches effectuées ont été réunis en un seul fichier .csv sur Open Refine.

 

 

2.      Nettoyage, organisation et valorisation

Fichier initial : articles scientifiques

-          Suppression des doublons

-          Suppression de certaines colonnes (« file », « age », « querydate », etc.)

-          Séparation par colonne des auteur-rice-s

-          Tri pour sélectionner uniquement les articles de journaux (« format »)

-          Ajout d’une colonne « pays » basée sur la colonne des éditeurs avec l’action « réconciliation » et wikidata

-          Sélection de colonnes des citations parmi toutes les options (« cites », « citesurl », « GSRank », « citationURL », « cites per year », « cites per author »)

-          Réconciliation pour les maisons édition « academic publisher » (résultat : 1771 matched ; 3229 pas de correspondances trouvées)

 

Une tentative a été effectuée de réconciliation pour la colonne « ISSN » avec wikidata en sélectionnant l’option « scientific journal ». Le résultat n’étant pas satisfaisant (uniquement 16 matches, il a été décidé d’abandonner cette option.

 

Fichier secondaire : métadonnées des fichiers PDF

Utilisation de Tika Apache pour récupérer les métadonnées des fichiers afin de créer une colonne dans le fichier .csv. Ces métadonnées ont ensuite été liées au fichier principal. 

 

3.      Nettoyage du fichier secondaire pour obtenir le fichier final

 

Pour rendre le fichier adéquat pour l’ingérer dans Open Refine : une solution est mise en place avec l’aide de ChaGPT selon les deux étapes suivantes: 

 

1.      Sur Excel

-          Uniformisation des séparateurs (« ; » vers « . »)

 

2.      Sur WSL avec les lignes de commandes 

-          Changement en UTF-8 

 

iconv -f ISO-8859-1 -t UTF-8 Tests-GenderAPI_Metadata_JR.csv  -o Tests-Gender_propre_1.csv

-          Puis vérification du type de fichier avec « file » pour voir si l’action a bien fonctionné

-          Vérifier si le fichier contient des caractères spéciaux

 

grep --color='auto' -P '[^\x00-\x7F]' votre_fichier.csv

Cette action permet une mise en couleur des caractères spéciaux mais comme il y a beaucoup de lignes, essai avec une autre technique

iconv -f utf-8 -t utf-8 -c votre_fichier.csv > /dev/null

 

Constat : il y a beaucoup de caractères spéciaux. Face à la quantité et le temps nécessaire pour remplacer de manière adéquate avec les valeurs Unicode, et sur un ficher de 34'000 lignes, on fait le choix de supprimer les caractères spéciaux pour cet exercice.

perl -i -pe 's/[^\x00-\x7F]//g' 

 

-          Vérification après la fonction “grep” et plus aucun signe spécial ne ressort donc l’action est réussie

 

-          Vérification de la cohérence du nombre de colonnes

-          création d’un script pour supprimer les colonnes vides sur toutes les lignes avec ChatGPT et nano

 

import csv

#Fichier d'entrée et de sortie

input_file = 'Tests-Gender_propre_1.csv' output_file = 'fichier_sans_colonnes_vides.csv'

#Lire toutes les lignes du fichier

with open(input_file, 'r', encoding='utf-8') as f: reader = list(csv.reader(f))

#Transposer les lignes pour accéder aux colonnes

transposed = list(zip(*reader))

#Garder uniquement les colonnes qui ont au moins une valeur non vide (hors espaces)

colonnes_a_garder = [col for col in transposed if any(cell.strip() for cell in col)]

#Re-transposer pour revenir au format ligne

lignes_nettoyees = list(zip(*colonnes_a_garder))

#Écrire dans un nouveau fichier

with open(output_file, 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerows(lignes_nettoyees)

 

-          Création d’un script avec ChatGPT et nano pour supprimer les lignes vides ou contenant uniquement espace ou virgule

import csv

input_file = 'Tests-Gender_propre_1.csv' output_file = 'fichier_sans_lignes_vides.csv'

with open(input_file, 'r', encoding='utf-8') as infile: reader = csv.reader(infile) lignes_non_vides = [ligne for ligne in reader if any(cell.strip() for cell in ligne)]

with open(output_file, 'w', newline='', encoding='utf-8') as outfile: writer = csv.writer(outfile) writer.writerows(lignes_non_vides)

 

-          Constat : il y a des lignes avec énormément de colonne et c’est anormal par rapport à notre fichier de base.

 

-          Identification avec “awk”  des lignes avec plus de 100 colonnes pour analyser visuellement 

 

-          Constat : il y a un problème de séparateurs

 

-          Commande “sed” pour remplacer les « ; » dans cellules par « / » pour éviter bug

 

-          Après plusieurs essais infructueux pour régler ce problème de séparateurs, on fait le choix de ne conserver que les lignes avec le nombre de colonnes correctes pour pouvoir avancer sur Open Refine.

 

Etapes de nettoyage final sur Open Refine

-          Suppression des lignes avec des valeurs erronées dans « cites » et  « authors »

-          Suppression des colonnes vides

Il reste environ 1600 entrées. Pour enrichir les données, deux actions supplémentaires sont effectuées :

-          Extraction des langues avec Jython : résultat peu intéressant, car il y beaucoup de données manquantes

-          Extraction des keyword avec Jython : idem