Page optimisée à l'instant Afficher l'original Menu Data Sciences Sociales Sur

Page optimisée à l'instant Afficher l'original Menu Data Sciences Sociales Sur les données numériques et leurs usages en sciences sociales Les expressions régulières : le super rechercher-remplacer 15 réponses Les expressions régulières sont un outil extrêmement utile pour réaliser des opérations complexes de recherche-remplacer sur des grandes quantités de texte, qui nous semble d’intérêt général pour tous les chercheurs en sciences sociales. On en présente ici le principe, la syntaxe et comment les utiliser concrètement. Un outil indispensable pour les travailleurs du texte Nous passons notre temps, en sciences sociales, à manipuler des données textuelles : réponses ouvertes à un questionnaire, noms de personnes, lieux, caractéristiques sociales, mais aussi articles de presse, correspondances, transcriptions d’entretiens, jusqu’aux textes scientifiques que nous produisons. Or, pour traiter de telles données avec un ordinateur, il est fréquent de devoir effectuer des transformations systématiques, à des fins qui vont d’un nettoyage avant importation pour une analyse statistique, jusqu’à une conformation à des normes typographiques avant publication. Pourquoi programmer pour écrire ? Parmi les outils que nous utilisons couramment, certains permettent d’effectuer de telles modifications, en particulier R et OpenOffice/LibreOffice ou Word. Chacun a déjà utilisé les fonctions de recherche et de “rechercher-remplacer” de Word ou équivalent. On présente ici une généralisation de ces fonctions qui permet d’automatiser rapidement presque toutes les opérations textuelles imaginables. Pour les utiliser, il suffit d’un langage de programmation https://data.hypotheses.org/959 (par exemple R, Python, etc.) ou d’un bon éditeur de texte. Parmi les logiciels de traitement de texte, LibreOffice et OpenOffice permettent de faire la même chose ; c’est le cas aussi de Word (mais avec une syntaxe assez différente, qu’on n’évoquera pas ici). Nous avons donc sous la main des logiciels dotés de fonctions à même de nous épargner des heures de travail fastidieux, mais bien souvent nous ne savons pas les utiliser, ou nous ne savons même pas qu’elles existent. Le sujet peut paraître compliqué au premier abord, et si vous regardez rapidement la suite de ce billet, vous risquez de ne voir que des signes cabalistiques rebutants. Pas d’inquiétude toutefois : les expressions régulières ne sont pas faites pour être lues, mais pour être faciles à écrire. Ce billet propose une introduction à ce sujet, afin de montrer la logique de cet outil, à la fois très simple et puissant. Car le plus important n’est pas de connaitre les expressions régulières, mais d’en comprendre le principe et savoir ce qu’il est possible de faire avec. Après quoi, il existe de nombreuses aides que même les chercheurs expérimentés consultent souvent. Le principe : faire repérer des formes textuelles à l’ordinateur Supposons que, pour les individus d’une population dont on veut faire une prosopographie, on ait saisi une liste de dates et lieux de naissance dans un fichier texte (ou un vecteur de type character sous R) – ici des membres des Francs Tireurs et partisans (FTP) : né le 3 juillet 1897, à Rennes (35) né le 13 mai 1893, à Le Chambon-Feugerolles (42) née en 1895, à Tauriac (47) né le 2 octobre 1896, à Louey (65) née le 1er janvier 1908, à Końskowola -- Pologne (99) … Comment transformer cette série de lignes de texte, dont la structure est toujours la même, en une autre série de lignes de texte, chacune comportant uniquement l’année de naissance ? Si on sait réaliser cette opération, alors on pourra faire de même pour le département et les autres données qui nous intéressent, et transformer ce texte en base de données prête pour l’analyse. Concentrons-nous donc sur l’année. À conceptualiser, l’opération est très simple. Il suffit, dans chaque ligne, de rechercher l’année, de la mémoriser, puis de remplacer le contenu de la ligne par elle. Comment repérer l’année ? À l’œil nu, rien de plus facile : c’est le nombre composé de quatre chiffres. On pourrait aussi remarquer qu’elle ici est le deuxième nombre de chaque ligne, ou encore le premier nombre qui soit suivi immédiatement d’une virgule, etc. Toutes ces désignations de formes textuelles sont ce qu’on appelle des motifs (patterns, en anglais). Si on se décide pour cette première caractérisation de l’année, la procédure qu’on souhaitera effectuer pourra alors s’écrire, en langage humain : Dans chaque ligne, Remplace: l'ensemble de la ligne Par: le premier nombre à quatre chiffres trouvé Le travail est donc très simple à penser. Mais s’il doit être répété sur un grand nombre de lignes, c’est fastidieux. Certains vont donc employer un esclave doctorant, mais un programme informatique de quelques lignes le fait aussi bien. Et le travail de programmation qui peut paraître compliqué au premier abord est en réalité très simple à écrire, au point que c’est une solution plus rapide (et même plus sûre) que de recopier manuellement les informations qui vous intéressent, et ce dès que vous avez plus que quelques lignes[1]. En effet, la moitié du travail, à savoir l’écriture de la procédure “comme si on faisait à la main” est déjà réalisée. Il ne reste plus qu’à savoir comment la faire comprendre à l’ordinateur, et comment la lui faire exécuter. La syntaxe qui permet de traduire les instructions précédentes pour l’ordinateur, d’indiquer les motifs qu’on désire repérer, est appelée expressions régulières, en anglais regular expressions, souvent abbrevié en regex[2]. Il en existe plusieurs variantes. R utilise une syntaxe très puissante et très répandue, appelée PCRE ou parfois “de type perl”[3], comme à peu près tous les langages de programmation généralistes. Bases de la syntaxe Les expressions régulières sont donc une syntaxe pour décrire de manière assez naturelle des formes textuelles à un ordinateur. Cela n’a rien d’évident a priori, mais on va voir comment désigner des fragments de formes comme “n’importe quoi”, “quatre chiffres exactement”, “au moins une majuscule”, etc. La syntaxe comportera, inévitablement, des symboles un peu cabalistiques, mais il ceux-ci ne sont pas nombreux, et l’important est qu’ils se combinent comme du Lego. Classes de caractères et quantificateurs La syntaxe des expressions régulières se compose de deux types d’éléments : des groupes de caractères (par exemple : les chiffres, les lettres, les espaces, mais aussi des groupes que l’on peut définir soi-même, comme les lettres a et c, les chiffres de 0 à 7…)[4], et des quantificateurs (par exemple : un, deux, zéro ou un, un ou plus, entre 4 et 7, un nombre quelconque, etc.). On utilise ici cette convention graphique : gras pour les groupes de caractères, italique pour les quantificateurs. Une expression régulière est ainsi une suite de groupe de caractères, chacun accompagné d’un quantificateur. Par exemple : un certain nombre delettres, au moins un espace, exactement quatrechiffres. Les groupes de caractères les plus courants sont les suivants (en PCRE) : \w : les lettres (w pour word) \d : les chiffres (d pour digit) \s : les espaces (s pour spaces) [A-Z] : les majuscules [abd;_] : les lettres a, b, et d, le point-virgule (;), et l’underscore (_) . : n’importe quel caractère (excepté le saut de ligne) k : la lettre k (k|\d{2}) : la lettre k, ou bien deux chiffres Il existe également leur négation : \W : tout sauf les lettres \D : tout sauf les chiffres \S : tout sauf les espace [^A-Z] : tout sauf les majuscules [^abd;_] : tout sauf a, b, d, le point-virgule (;) ou l’underscore (_) Maintenant les quantificateurs : * : zéro ou plus + : un ou plus ? : zéro ou un {2} : deux exactement {2,5} : entre 2 et 5 inclus {,6} : entre 0 et 6 inclus {6,} : six ou plus {2;5} : exactement deux ou cinq (pas de quantificateur) : un exactement Une absence de quantificateur désigne une et une seule occurrence. Ainsi, le motif abc correspond à una, puis un b, puis un c, soit exactement le texte abc, comme d’habitude. Avec ces bases, on peut déjà aller très loin. Revenons à l’exemple des FTP : on peut maintenant écrire le motif correspondant à quatre chiffres : \d{4} (ou \d\d\d\d, c’est la même chose). Donc, si on veut extraire les années de l’exemple donné précedemment, on va chercher à écrire : “Dans chaque ligne, cherche un fragment de la forme \d{4}, et garde-le en mémoire”. Mémoriser des fragments du texte analysé Les expressions régulières servent à repérer des morceaux de texte correspondant à un motif que l’on écrit de façon formelle. Mais si on veut réutiliser ces morceaux de texte, il faut pouvoir les mettre en mémoire, et ensuite accéder au contenu de cette mémoire. Pour cela, la syntaxe consiste à entourer ce qu’on veut mettre en mémoire de parenthèses. Ainsi, pour chercher et mettre en mémoire quatre chiffres, on écrira l’expression régulière (\d{4}). Une fois appliqué cette expression régulière à une chaîne de caractères, le premier élément correspondant (ici le premier nombre à quatre chiffres trouvé) est stocké dans la variable \1 (ou parfois $1). Ainsi, pour extraire l’année de né le 3 juillet 1897, à Rennes (35), on écrira : si tu trouves le motif (\d{4}) dans cette chaîne de caractères, renvoie-moi \1. uploads/s3/ les-expressions-regulieres-le-super-rechercher-remplacer-data-sciences-sociales.pdf

  • 28
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager