Perl et textes PDF - M1 ÉdNITL-LTTAC 2024-2025

Summary

Ce document est une introduction aux concepts de base du langage Perl, à la manipulation de fichiers texte et aux commandes de base du système d'exploitation Linux. Il est destiné à des étudiants de première année d'université, ou équivalent.

Full Transcript

Perl et textes introduction Fabien Torre Université de Lille M1 ÉdNITL-LTTAC 2024-2025 Fabien Torre (Université de Lille)...

Perl et textes introduction Fabien Torre Université de Lille M1 ÉdNITL-LTTAC 2024-2025 Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 1 / 79 Généralités 1 Motivations et contexte Pourquoi apprendre Perl ? Principes En pratique 2 Système d’exploitation Linux 3 Formats ouverts 4 Bases du langage Perl Les traitements automatiques. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 2 / 79 Généralités Pourquoi apprendre Perl ? Quelques idées (1) Nos motivations maîtrise de ses données, utilisation de textes non structurés, exploration des big data, open data, etc. découverte du web caché et data journalisme, constitution automatique de corpus à partir du web, production automatique de documents, changement de formats (texte, html, LATEX). Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 3 / 79 Généralités Pourquoi apprendre Perl ? Quelques idées (2) Des exemples production automatique de textes : mots préfixe/suffixe, pipotron, conjugaisons, noms propres, néologismes, décomposition automatique, etc. reconnaissance et typage d’entités dans un texte, annotation automatique, découverte co-occurrences, concordancier, anagrammeurs, classification automatique de textes, base medline, wikileaks, procès Enron, anecdote des photos disparues du web, récupération des informations vlille ou crous ou lequipe. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 4 / 79 Généralités Principes Généralités sur Perl (1) Intérêts du langage langage glu, syntaxe simple pour les fichiers, facile pour les expressions régulières, pratique pour les textes, Turing complet. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 5 / 79 Généralités Principes Généralités sur Perl (2) Caractéristiques voulu proche du langage naturel, permet de dire une chose de plusieurs manières différentes, certains écrivent des poèmes en Perl... ou des programmes d’une seule ligne... la sémantique d’une expression dépend du contexte, pas de déclaration de variables obligatoire, existence de variables par défaut.... contraires à nos principes algorithmiques ! ? Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 6 / 79 Généralités Principes Perl et algorithmique (1) Déclaration variables et paramètres, warnings, commentaires, etc. Bonnes pratiques use strict ; use warnings ; # affiche les é l é ments contenus dans un tableau fourni sub affiche_tableau ( @ ) { my @t = @_ ; my $i ; for ( $i =0 ; $i < scalar ( @t ) ; $i = $i +1) { print $t [ $i ]; print " \ n " ; } } my @dico = ( ’ chanter ’ , ’ jouer ’ , ’ programmer ’ , ’ danser ’ ); affiche_tableau ( @dico ); Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 7 / 79 Généralités Principes Perl et algorithmique (2) Mauvaises pratiques sub affiche { for ( ; $i < @_ ; $i ++) { print $_ [ $i ]; print " \ n " ; } } affiche ( ’ chanter ’ , ’ jouer ’ , ’ programmer ’ , ’ danser ’ ); Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 8 / 79 Généralités En pratique Environnements de travail Il nous faut Perl, une console et un éditeur de textes. 1 Linux : Perl installé par défaut, 2 MacOS : Perl présent ou à installer, 3 Windows : installer Windows Subsystem for Linux, installer Strawberry Perl, installer une machine virtuelle sous Linux, installer Linux en dual-boot, 4 en ligne, dans un navigateur web.... prioritairement : Linux (machines de l’université en dual-boot) ! Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 9 / 79 Linux 1 Motivations et contexte 2 Système d’exploitation Linux Logiciel libre et distributions Linux Linux en pratique 3 Formats ouverts 4 Bases du langage Perl L’environnement. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 10 / 79 Linux Logiciel libre et distributions Linux Généralités (1) Éléments constitutifs d’une distribution un système d’exploitation, interface entre matériel et logiciels, en particulier, un système de fichiers, un environnement graphique, des logiciels applicatifs : une console, un éditeur de texte, une suite bureautique (traitement de texte, tableur, etc.), des archiveurs et des compresseurs, des visualisateurs (pdf, images, musiques, vidéos, etc.), un navigateur web, un lecteur de mail, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 11 / 79 Linux Logiciel libre et distributions Linux Généralités (2) Distributions Linux Ubuntu, Mint, Debian, Mandriva, Gentoo, Fedora, etc. environnements graphiques : Xfce, KDE, Gnome, Cinnamon, etc. stratégies différentes dans les choix des logiciels applicatifs et de la fréquence des mises à jour et nouvelles versions. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 12 / 79 Linux Linux en pratique Système de fichiers : principes et notations Principes organisé en hiérarchie de répertoires et de fichiers, avec des droits sur les fichiers et dossiers, pour soi-même, le groupe et les autres, lecture (r), écriture (w), entrée et exécution (x). Notations la racine du système / la racine du compte de l’utilisateur ∼ la racine du compte d’un autre utilisateur ∼ftorre l’endroit où l’on se trouve. le dossier parent.. le précédent endroit où l’on se trouvait - tous les fichiers du dossier * Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 13 / 79 Linux Linux en pratique Système de fichiers : syntaxes et flux Syntaxes des commandes passage de paramètres cmd param1 param2... avec options cmd -opt1 -opt2... params exécution en fond cmd & redirection cmd > fichier.txt canal d’erreur cmd 2> fichier.txt les enchaînements (pipe) cmd1 | cmd2 exécution programme perso./mon-programme.pl Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 14 / 79 Linux Linux en pratique Commandes Linux de base (1/2) Navigation et gestion changer de dossier cd lister le contenu d’un dossier ls savoir là où l’on se trouve pwd copier fichiers ou dossiers cp déplacer fichiers ou dossiers mv effacer fichiers ou dossiers rm créer un dossier mkdir Archivage et compression archivage d’un dossier tar compression d’un fichier bzip2 Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 15 / 79 Linux Linux en pratique Commandes Linux de base (2/2) Informations sur les commandes précédentes commandes history manuel d’une commande man recherche d’une commande apropos identification d’une commande which processus actifs top Éditeur/visualisateurs (selon distribution) Accès au web éditer gnome-text-editor récupérer wget voir pdf evince naviguer firefox-esr voir images eog (eye of gnome) Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 16 / 79 Linux Linux en pratique Gestion des fichiers textuels Traitements des fichiers textuels nombre de lignes, mots, caractères wc recherche dans le contenu grep extraction cut tri des lignes sort lignes sans répétition uniq contenu d’un fichier cat contenu page par page more premières lignes head dernières lignes tail différences entre deux fichiers diff Aller plus loin sur les textes : sed et awk. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 17 / 79 Linux Linux en pratique Commandes pour les autres documents Recherche et information recherche sur les noms find informations sur un fichier file Extraction du texte des documents extraction depuis un pdf pdftotext OCRisation depuis une image tesseract Passer d’un format à l’autre avec pandoc. Manipulation des pdf : pdfinfos, xournal, pdftk, pdfjam, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 18 / 79 Linux Linux en pratique Dans le terminal clear ou ctrl l : nettoyage de la console, ctrl + et ctrl - : modifier la taille des caractères, tab : complétion des instructions et des noms de fichiers, flèches haut/bas : accès à l’historique, !deb : recherche et lancement de l’instruction la plus récente commençant par deb, alt+tab : changement de fenêtres. Pas besoin de la souris ! Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 19 / 79 Formats 1 Motivations et contexte 2 Système d’exploitation Linux 3 Formats ouverts Généralités sur les formats fermés HTML & CSS Markdown LATEX Codages 4 Bases du langage Perl Les corpus et les productions. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 20 / 79 Formats Généralités sur les formats fermés Formats fermés, binaires, propriétaires La question du format est sans doute plus importante que celle d’utiliser ou non des logiciels libres... Constats obligation d’utiliser le logiciel qui a créé le document, sensible au changement de version du logiciel, interopérabilité nulle ou limitée aux logiciels du même éditeur, pérennité liée à celle du logiciel, mélange du contenu et de la mise en forme, sémantique difficilement appréhendable, taille importante des fichiers. Conclusion : formats non appropriés aux traitements automatiques. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 21 / 79 Formats HTML & CSS Un langage ouvert : HTML (HyperText Markup Language) Généralités fichier texte modifiable avec n’importe quel éditeur, essentiellement du texte, parsemé de balises. Vocabulaire les éléments (BODY, H1, CENTER, etc.), balises ouvrantes et fermantes (Coucou), les attributs et leurs valeurs (Coucou), imbrication (Coucou) : la dernière balise ouverte est la première refermée, on parle de structure arborescente. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 22 / 79 Formats HTML & CSS HTML : un exemple Un fichier html < HTML > < BODY BGCOLOR = pink > < CENTER > < FONT COLOR = " red " SIZE = " +20 " > Cours sur XML < BR > < BR > Le Plan : < UL type = a > < li > HTML < li > XML Ne facilite pas les traitements sémantiques... Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 23 / 79 Formats HTML & CSS HTML un peu plus sémantique HTML plus sémantique < HTML > < HEAD > < LINK REL = " stylesheet " TYPE = " text / css " HREF = " htmlcss. css < BODY > < H1 > Cours sur XML < BR > < BR > < BR > Le Plan : < UL type = a > < li > HTML < li > XML Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 24 / 79 Formats HTML & CSS Utilisation de CSS (Cascading StyleSheet) Feuille de style BODY { background - color : pink ; } H1 { text - align : center ; color : red ; font - size : 300%; } Sur les CSS dédiées à l’apparence, permettent du HTML sémantique, graphiquement plus puissantes que le HTML seul. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 25 / 79 Formats Markdown Le format « Markdown » Changement de format (pandoc) vers html, epub, LATEX, etc. Un fichier Markdown # Lexicographie, Terminographie et Traitement Automatique des Corpus ## Statut de la formation La spécialité *Lexicographie, Terminographie et Traitement Automatique des Corpus* du master "Sciences Humaines et Sociales" (SHS), mention "Sciences Du Langage" (SDL) de l’Université Lille 3 est un parcours de 2 années (M1 LTTAC et M2 LTTAC) qui, en fonction du projet de formation des étudiants, peuvent être soit combinées, soit suivies de manière indépendante. **Responsable : Nathalie Gasiglia** ## Objectifs En combinant un M1 axé sur le traitement automatique des langues (en particulier le applications qui nécessitent des ressources lexicales) et la linguistique (le M1 LTTAC) et un M2 plus spécifiquement consacré à la lexicographie, à la terminographie et au traitement automatique des corpus (le M2 LTTAC), cette formation vise à donner une qualification en ingénierie linguistique en phase avec les nouvelles technologies de l’information et de la communication (NTIC) dans les domaines suivants : - rédaction de dictionnaires monolingues et bilingues et d’encyclopédies, - conception de bases de données pour la lexicographie et la terminologie, - développement de lexiques pour des systèmes d’aide à la rédaction ou de traduction automatique ou assistée, - élaboration de catalogues et de guides thématiques, -Fabien Torre (Université construction de Lille) d’ontologies Perl et textesdes langues (TAL)M1 pour le traitement automatique et ÉdNITL-LTTAC l’intelligence2024-2025 26 / 79 artificielle (IA Formats LATEX Le format LATEX Quelques principes même esprit que HTML mais plus ancien et destiné à la publication (scientifique) papier, du texte et des instructions, format ouvert, peut être écrit à la main ou produit automatiquement, les instructions LATEX permettent de structurer le document s’en se soucier de son apparence, LATEX n’est pas WYSIWYG (What You See Is What You Get). Un fichier LATEX minimal \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \title{Premier document en \LaTeX} \author{Votre nom ici} Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 27 / 79 Formats LATEX Le logiciel LATEX LATEX désigne aussi le programme qui transforme un fichier LATEX en fichier pdf (commande pdflatex). Histoire et qualité TEX créé par Donald E. Knuth en 1978, LATEX date de 1982, gratuit et fiable, seuls 5 bugs ont nécessité une nouvelle version de TEX en 35 ans d’utilisation, Donald E. Knuth récompense ceux qui découvrent de nouveaux bugs, le dernier : trouvé en 1995, payé 327,68 $, LATEX respecte les règles de typographie (ligatures, sauts de page, etc.), les documents produits par LATEX sont prêts à l’impression par un éditeur professionnel. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 28 / 79 Formats Codages Codages des nombres Généralités seulement deux chiffres binaires (ou bit, 0 ou 1), mais mêmes principes que le système décimal, différence : le nombre de bits est limité sur machine, codage et décodage, addition, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 29 / 79 Formats Codages Codages des textes Principes numérotation des caractères et codage des numéros, combien de bits pour les caractères dont on a besoin ? passage minuscule/majuscule, ascii, iso-latin1, utf-16, utf-8. Autres codages codage des droits linux codage des couleurs (hexadécimal) proprio groupe autres r w x r w x r w x red green blue v v f v f f f f f FF 00 00 1 1 0 1 0 0 0 0 0 6 4 0 Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 30 / 79 Perl 1 Motivations et contexte 2 Système d’exploitation Linux 3 Formats ouverts 4 Bases du langage Perl Éléments syntaxiques Structures de contrôle Fonctions et procédures Tableaux Fichiers 5 Expressions régulières Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 31 / 79 Perl Éléments syntaxiques Entête minimal, affichages et commentaires Par l’exemple # utiliser Perl en mode strict (= comme en algo ) use strict ; # avoir des signalements de probl è mes é ventuels use warnings ; # utiliser des accents dans le programme use utf8 ; # utf8 sur la sortie standard et sur le canal d ’ erreur binmode ( STDOUT , ’: utf8 ’ ); # affichage d ’ un texte et passage à la ligne print " coucou \ n " ; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 32 / 79 Perl Éléments syntaxiques La syntaxe minimale Règles de base instructions suivies de points-virgules (;), les blocs d’instructions délimités par des accolades, commentaires introduits par le symbole #. Chaînes de caractères et affichage chaînes de caractères entre apostrophes ou guillemets, backslash (\) pour neutraliser un caractère, instruction print pour afficher, retour chariot avec \n. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 33 / 79 Perl Éléments syntaxiques Textes interprétés ou non Chaînes de caractères et affichage chaînes de caractères entre apostrophes (le contenu n’est pas interprété), guillemets (le contenu est interprété), backslash (\) pour neutraliser un caractère, retour chariot avec \n. Quelques affichages print " tout va aujourd ’ hui ? " ; print ’ aujourd \ ’ hui , oui ! ’; print " salut !\ n " ; print ’ salut !\ n ’; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 34 / 79 Perl Éléments syntaxiques Types et variables Types, déclaration, affectation types classiques : booléens, entiers, réels, caractères et chaînes, pas de déclaration de type, déclaration de variables avec my, tous les noms de variables sont préfixés par le symbole $, affectation d’une valeur à une variable : le symbole =, pour un test d’égalité (entre nombres) : le symbole ==. Premières manipulations de variables my $prenom = ’ Toto ’; my $age = 25; print " $prenom a $age ans.\ n " ; print ’ $prenom a $age ans.\ n ’; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 35 / 79 Perl Éléments syntaxiques Opérateurs Opérateurs arithmétiques : + - * /, partie entière avec int, aléatoire avec rand, opérateur de concaténation entre chaînes de caractères :., opérateurs logiques : && (ET) || (OU) ! (NON), comparaisons entre nombres : == != < > =, comparaisons entre chaînes : eq ne lt gt le ge. Premières opérations my $i = 10; $i = $i + 1; $i = $i + 9; my $texte = " La variable i vaut $i " ; $texte = $texte. " \ n " ; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 36 / 79 Perl Éléments syntaxiques Manipulation de chaînes Pour une chaîne de caractères $mot : length($mot), "\U$mot", "\u$mot", "\L$mot" et "\l$mot", substr($mot,$p,$l) : renvoie les lettres du $mot à partir de la position $p et sur une longueur $l. Extractions des parties d’un mot my $une = substr ( $mot ,0 ,1); # premi è re lettre du $mot my $deux = substr ( $mot ,1 ,1); # deuxi è me lettre du $mot my $trois = substr ( $mot ,0 ,3); # trois premi è res lettres my $fin = substr ( $mot , -2 ,2); # deux derni è res lettres # $mot priv é de ses deux derni è res lettres substr ( $mot , -2 ,2 , ’ ’ ); Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 37 / 79 Perl Structures de contrôle 4 Bases du langage Perl Éléments syntaxiques Structures de contrôle Fonctions et procédures Tableaux Fichiers Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 38 / 79 Perl Structures de contrôle Structures de contrôle (1) Structure conditionnelle : le « si alors sinon » if ( une condition ici ) { # des instructions ici } else { # des instructions ici } Structure itérative : la boucle « tant que » while ( une condition ici ) { # des instructions ici } Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 39 / 79 Perl Structures de contrôle Structures de contrôle (2) Pour une boucle pour, trois éléments doivent être fournis : une variable avec son initialisation, une condition de type tant que, une instruction à effectuer à chaque passage dans la boucle (typiquement, la mise à jour de la variable associée). Structure itérative : la boucle « pour » for ( my $i =1 ; $i ’; print $msg ; print ’ ’; } # appel à la proc é dure et renseignement du param è tre aff iche_a u_mili eu ( ’ coucou ’ ); Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 42 / 79 Perl Fonctions et procédures Fonctions Comme une procédure... avec une valeur de retour par return. Définition et utilisation d’une fonction # forme g é n é rale d ’ une fonction sub nom_de _l a_ fo nc ti on ( signature ) { # des instructions ici return resultat ; } # fonction calculant la somme de 2 entiers et renvoi sub addition ( $$ ) { my ( $x , $y ) = @_ ; my $s = $x + $y ; return $s ; } # appel et renseignement des param è tres my $somme = addition (2 ,2); print " le r é sultat est $somme \ n " ; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 43 / 79 Perl Tableaux 4 Bases du langage Perl Éléments syntaxiques Structures de contrôle Fonctions et procédures Tableaux Fichiers Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 44 / 79 Perl Tableaux Tableaux Caractéristiques des tableaux contenu quelconque des cases, numérotation à partir de 0, nom de variable préfixé par @ (et déclaration avec my), affectation de valeurs aux cases, accès aux contenus des cases, la taille d’un tableau @t est accessible par : scalar(@t). Créations de tableaux my @notes = (15 ,12 ,10 ,8 ,17); # d é finition d ’ un tableau $notes = 11; # modification d ’ une case push ( @notes ,14); # ajout d ’ une note print $notes ; # affichage d ’ une case... print scalar ( @notes ); # et du nombre de cases Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 45 / 79 Perl Tableaux Manipulation de tableaux Pour un tableau @notes : scalar(@notes) et $notes[$i]. Boucles dédiées aux tableaux : for et foreach # avec un for for ( my $i =0 ; $i < scalar ( @notes ) ; $i = $i +1) { # des instructions ici portant sur $notes [ $i ] } # avec un foreach foreach my $note ( @notes ) { # des instructions ici portant sur $note }... et sort pour trier un tableau, par exemple : sort(@notes). Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 46 / 79 Perl Fichiers Manipulation de fichiers : syntaxe écriture Production d’un fichier open ( OUT , ’ > sortie. html ’ ); binmode ( OUT , " : utf8 " ); print OUT " coucou ! \ n " ; print OUT " ç a va ? \ n " ; close ( OUT ); Instructions open et close pour ouvrir/fermer un flux vers un fichier. Signe > pour signifier l’ouverture en écriture. Instruction binmode pour l’encodage du flux. Nommage du flux : un mot en majuscules (ici : OUT). Utilisation du nom du flux dans les print. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 47 / 79 Perl Fichiers Manipulation de fichiers : syntaxe lecture Lecture d’un fichier open ( IN , ’ dico. txt ’ ); binmode ( IN , " : utf8 " ); while ( my $ligne = ) { chop ( $ligne ); # suppression du retour chariot # ici traitements de la $ligne } close ( IN ); Absence du signe > pour signifier l’ouverture en lecture. Opérateur et nom du flux pour lire une ligne dans le flux. Boucle while pour lire toutes les lignes, une par une. Instruction chop pour enlever le retour chariot de la ligne lue. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 48 / 79 Perl Fichiers Manipulation de fichiers : intérêt À partir des instructions pour manipuler des fichiers, on sait maintenant produire et lire différents formats textuels : CSV, Markdown, html, XML (dont TEI), LATEX, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 49 / 79 Expressions régulières 1 Motivations et contexte 2 Système d’exploitation Linux 3 Formats ouverts 4 Bases du langage Perl 5 Expressions régulières Introduction à la théorie des langages Hiérarchie de Chomsky Langages réguliers Expressions et opérateurs en Perl Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 50 / 79 Expressions régulières Introduction à la théorie des langages Point de départ : langages et grammaires Grammaire. Ensemble des règles à suivre pour parler et écrire correctement une langue. (Le Robert) Plus généralement, règles à suivre pour écrire correctement dans un langage. Et aussi pour vérifier ce qui a été écrit. Langages informatiques Perl, JavaScript, Python, PHP, etc. (les programmes doivent respecter la grammaire du langage), SQL (les requêtes doivent respecter une grammaire), XML (les documents doivent respecter des DTD/grammaires). Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 51 / 79 Expressions régulières Introduction à la théorie des langages Exemples d’autres langages Langages de lettres ou de mots lettres voyelles, mots constitués que de voyelles, palindromes, indications d’âge. Langages formels langages de parenthèses, mots à base de a et de b avec un nombre de a multiple de 3, an b n c n. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 52 / 79 Expressions régulières Introduction à la théorie des langages Une grammaire pour le français...... ou pour quelques phrases P → GN V COD GN → NP GN → DN COD → GN D → le | la N → chien | tomate | pissenlit | brute V → mange | plante NP → fabien | lille Dans le langage : la brute mange la tomate, fabien plante la pissenlit Hors du langage : mange le chien la tomate Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 53 / 79 Expressions régulières Introduction à la théorie des langages Grammaires pour les langages informatiques HTML P → ContenuP ContenuP → Texte ContenuP → ContenuP IMG ContenuP IMG → Dans le langage : coucou. Hors du langage : coucou SQL R → select Attribut from Table Dans le langage : select nom from personnes Hors du langage : from personnes select nom Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 54 / 79 Expressions régulières Introduction à la théorie des langages Grammaire pour un langage de lettres Reconnaissance de lettres S → a S → e S → i S → o S → u S → y ou de manière plus concise : S → a|e|i|o|u|y Dans le langage : a, e, i, o, u, y. Hors du langage : b, c, d, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 55 / 79 Expressions régulières Introduction à la théorie des langages Grammaires pour des mots Mots composées de voyelles Grammaire pour les palindromes S → S → S → aS S → a | b |...| z S → eS S → aSa S → iS S → bSb S → oS S →... S → uS S → zSz S → yS Dans le langage : a, eau, etc. Dans le langage : sonos, elle, etc. Hors du langage : beau, est, etc. Hors du langage : sot, car, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 56 / 79 Expressions régulières Introduction à la théorie des langages Grammaires pour des langages formels « Mots » bien parenthésés an b n c n S → S → abc S → SS S → aSBc S → (S) cB → Bc S → [S] bB → bb S → {S} Dans le langage : (), ()[[()]], etc. Dans le langage : abc, aabbcc, aaabbbccc, etc. Hors du langage : )(, ([)], etc. Hors langage : ab, bca, aabc, etc. Tenter une dérivation ? Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 57 / 79 Expressions régulières Introduction à la théorie des langages Bilan : langages et grammaires Rappels langage/grammaire Un langage est un ensemble de lettres, de mots ou de phrases. Une grammaire est une représentation concise d’un langage. Ce que doit permettre une grammaire Produire des phrases du langage. Vérifier qu’une phrase appartient ou non au langage. Dans la suite On s’intéresse uniquement à la vérification. Complexité : combien de temps prend une vérification ? Quelles autres représentations d’un langage ? Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 58 / 79 Expressions régulières Hiérarchie de Chomsky 5 Expressions régulières Introduction à la théorie des langages Hiérarchie de Chomsky Langages réguliers Expressions et opérateurs en Perl Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 59 / 79 Expressions régulières Hiérarchie de Chomsky Formalisation des grammaires Constituants d’une grammaire des symboles non-terminaux dont un de départ, des symboles terminaux, des règles de production. Conventions non-terminaux : notés en majuscules et devant être développés terminaux : en minuscules et ne pouvant pas être développés le non-terminal de départ est souvent noté P (comme Phrase) ou S (comme Sentence et Start) les règles de production sont de la forme α → β. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 60 / 79 Expressions régulières Hiérarchie de Chomsky Des grammaires formelles... Quatre grammaires S → S → S → S → aD S → abc S → SS S → a |...| z S → bS S → aSBc S → (S) S → aSa D → aU cB → Bc S → [S] S → bSb D → bD bB → bb S → {S} S →... U → aS S → zSz U → bU Dérivation ? Combien de temps pour décider si un mot respecte une grammaire ? Réponse par la hiérarchie de Chomsky... Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 61 / 79 Expressions régulières Hiérarchie de Chomsky Une classification des grammaires Hiérarchie de Chomsky type 0 : toutes les grammaires, type 1 : les grammaires contextuelles, type 2 : les grammaires hors contextes ou algébriques, type 3 : les grammaires rationnelles ou régulières. Critères de comparaison forme des règles de production α → β ? coût du test de reconnaissance ? Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 62 / 79 Expressions régulières Hiérarchie de Chomsky Grammaires de type 0 Sans contrainte sur la forme des règles de production α → β. Il n’existe pas d’algorithme de reconnaissance, c’est une question indécidable : le traitement d’une phrase de n mots est impossible. 1 mot 10 mots 20 mots 30 mots 40 mots 50 mots 60 mots - - - - - - - Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 63 / 79 Expressions régulières Hiérarchie de Chomsky Grammaires contextuelles (type 1) Pour les règles de production α → β, on impose que α contienne autant ou moins de symboles que β. an b n c n S → abc S → aSBc cB → Bc bB → bb Le test de reconnaissance est de complexité exponentielle : le traitement d’une phrase de n mots nécessitent 2n opérations. 1 mot 10 mots 20 mots 30 mots 40 mots 50 mots 60 mots 1 ms 1s 9 min 6 jours 17 ans 17 000 ans 18 300 000 ans Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 64 / 79 Expressions régulières Hiérarchie de Chomsky Un exemple de grammaire contextuelle Deux règles fonction du contexte P → GN V COD GN → NP GN → DN COD → GN D → le | la le N → le chien | le pissenlit la N → la tomate | la brute V → mange | plante NP → fabien | lille Pas dans le langage : fabien plante la pissenlit Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 65 / 79 Expressions régulières Hiérarchie de Chomsky Grammaires hors contextes ou algébriques (type 2) Pour les règles de production α → β, on impose que α est un unique symbole non terminal. Langage de Dyck et langage des palindromes S → S → S → a | b |...| z S → SS S → aSa S → (S) S → bSb S → [S] S →... S → {S} S → zSz Le test de reconnaissance est cubique : le traitement d’une phrase de n mots nécessitent n3 opérations. 1 mot 10 mots 20 mots 30 mots 40 mots 50 mots 60 mots 1 ms 1s 8s 27 s 1 min 2 min 4 min Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 66 / 79 Expressions régulières Hiérarchie de Chomsky Grammaires rationnelles ou régulières (type 3) Pour les règles α → β, on impose que α est un symbole non terminal, β est composé d’un terminal et d’un non terminal. Mots composées de voyelles S → S → oS S → aS S → uS S → eS S → yS S → iS Le test de reconnaissance est linéaire : le traitement d’une phrase de n mots nécessitent n opérations. 1 mot 10 mots 20 mots 30 mots 40 mots 50 mots 60 mots 1 ms 10 ms 20 ms 30 ms 40 ms 50 ms 60 ms Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 67 / 79 Expressions régulières Hiérarchie de Chomsky Retour sur la hiérarchie de Chomsky Hiérarchie type 0 : toutes les grammaires, type 1 : les grammaires contextuelles, type 2 : les grammaires hors contextes ou algébriques, type 3 : les grammaires rationnelles ou régulières. Selon les disciplines en linguistique, les langages naturels nécessitent des grammaires de type 1 ou 2... en sciences-cognitives, comment font les enfants ? en informatique, on s’intéresse au type 3 : grammaires, automates, expressions régulières. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 68 / 79 Expressions régulières Langages réguliers 5 Expressions régulières Introduction à la théorie des langages Hiérarchie de Chomsky Langages réguliers Expressions et opérateurs en Perl Autres représentations des grammaires de type 3 les automates, les expressions régulières. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 69 / 79 Expressions régulières Langages réguliers Langages réguliers et automates Vocabulaire des automates des états (un initial, certains finaux), des transitions. Nombre de a multiple de 3 Z → Z → aU Z b Z → bZ a U → aD a U → bU U b D → aZ b D a D → bD Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 70 / 79 Expressions régulières Langages réguliers Voyelles et automates Reconnaissance des voyelles a,e,i,o,u,y S → a|e|i|o|u|y S E Mots composés uniquement de voyelles S → S → aS a S → eS S → iS S e S → oS S → uS i,o,u,y S → yS Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 71 / 79 Expressions régulières Langages réguliers Langages réguliers et expressions régulières Expressions régulières construites à l’aide d’opérateurs | : disjonction, ∗ : 0 ou plus, + : 1 ou plus, ? : 0 ou 1. Exemples lettres-voyelles : a|e|i|o|u|y mots-voyelles : (a|e|i|o|u|y )+ nombre de a multiple de 3 : (ab ∗ ab ∗ a|b)∗ + autres facilités selon le langage de programmation. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 72 / 79 Expressions régulières Langages réguliers Bilan : puissance des expressions régulières Accessibles par expressions régulières identification des lettres-voyelles et mots-voyelles ; validité XML : DTD basées sur des expressions régulières ; comptages de type « multiple » ; repérage des indications d’âge. Inaccessibles par expressions régulières vérification grammaticale d’une phrase en français ; comptages de type « autant » ; test XML bien formé ; reconnaissance des palindromes. Les langages de programmation autorisent les expressions régulières, certains les transforment en automates ! Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 73 / 79 Expressions régulières Expressions et opérateurs en Perl 5 Expressions régulières Introduction à la théorie des langages Hiérarchie de Chomsky Langages réguliers Expressions et opérateurs en Perl Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 74 / 79 Expressions régulières Expressions et opérateurs en Perl Expressions régulières en Perl (1) Positions et familles de caractères début ˆ fin $ caractère quelconque. un espace \s pas un espace \S un chiffre \d pas un chiffre \D une lettre \w pas une lettre \W une voyelle [aeiouy] pas une voyelle [ˆaeiouy] une ponctuation [:punct:] \w et \W dépendent de la langue locale, tout comme sort, lt, gt, etc. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 75 / 79 Expressions régulières Expressions et opérateurs en Perl Expressions régulières en Perl (2) Quantifieurs zéro ou une fois ? zéro ou plusieurs fois * une ou plusieurs fois + Exemple commence par un M ; suivi par une voyelle ; puis par au moins une lettre ; ˆM[aeiouy]\w+\s+\d*$ au moins un espace ; éventuellement des chiffres pour finir. Dans le langage : Masters 2020, MEdNITL 1 Hors du langage : M2 LTTAC, Ma. Éditions, Masters 2. Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 76 / 79 Expressions régulières Expressions et opérateurs en Perl Opérateur de matching Matching : opérateur =∼ // if ( $verbe =~ /^[ aeiou ]/) { # si la cha î ne de caract è res est dans le langage # represent é par l ’ expression r é guli è re... } Insensibilité à la casse : modifieur i if ( $verbe =~ /^[ aeiou ]/ i ) {... } Matching et extraction : parenthèses et variables numérotées $verbe =~ /(..) $ /; $terminaison = $1 ; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 77 / 79 Expressions régulières Expressions et opérateurs en Perl Opérateur de substitution Substitution : opérateur =∼ s/// $verbe =~ s / er$ / ons /; Toutes les substitutions : modifieur g $description =~ s /\. /.\ n / g ; Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 78 / 79 Expressions régulières Expressions et opérateurs en Perl Opérateur de découpage Découpage avec split # r é cup é ration dans un tableau à 3 é l é ments my ( $num , $nom , $texte ) = split (/;/ , $ligne ); # r é cup é ration dans un tableau de taille ind é termin é e my @mots = split (/\ W +/ , $ligne ); # r é cup é ration des é l é ments et des s é parateurs my @morceaux = split (/(\ W +)/ , $ligne ); Fabien Torre (Université de Lille) Perl et textes M1 ÉdNITL-LTTAC 2024-2025 79 / 79

Use Quizgecko on...
Browser
Browser