INDEXATION ET RECHERCHE D'INFORMATION (IRI) Cours DESS II et SCHM, Université Paris 11

Dimension: px
Commencer à balayer dès la page:

Download "INDEXATION ET RECHERCHE D'INFORMATION (IRI) Cours DESS II et SCHM, Université Paris 11"

Transcription

1 INDEXATION ET RECHERCHE D'INFORMATION (IRI) Cours DESS II et SCHM, Université Paris 11 Christian Jacquemin (Université Paris 11 et LIMSI-CNRS)

2 Introduction à la recherche d'information

3 LES RECHERCHES D'INFORMATIONS Préparatifs Classification et catégorisation de documents Représentation de l'information Bibliométrie Segmentation de documents, indexation Recherche d'information Requêtes booléennes, par document similaire, par description de sujet, par parcours de thésaurus Moteurs de recherche Requêtes sur une base de données (type SQL) Envoi d'information Routage Veille technologique

4 APPROCHE FONCTIONNELLE [Salton et Mc Gill 83]

5 LE MODÈLE BOOLÉEN Une requête est une expression booléenne sur les termes des documents Un document est sélectionné si et seulement si il satisfait l'expression booléenne (Auteur="Sartre" OU Auteur="Camus") ET (Titre~"Mythe" OU Titre~"étranger")

6 LE MODÈLE VECTOR SPACE [Salton 89] Documents et requêtes sont exprimés comme des vecteurs de termes Les documents sont classés en fonction de leur proximité avec la requête (Cosinus)

7 RAPPEL, PRÉCISION ET FALLOUT Précision = R r / R Rappel = R r / P Fallout = (R - P) / (D - R) taux documents pertinents dans les documents rapportés taux de documents pertinents rapportés taux de documents non pertinents rapportés

8 LA COURBE RAPPEL/PRÉCISION La précision est une fonction décroissante du rappel. Précision et rappel sont dans l'intervalle [0..1].

9 INDEXATION AUTOMATIQUE: RÉDUCTION DE L'INFORMATION Le but de l'indexation automatique est de transforment des documents en substituts capables de représenter le contenu de ces documents (Salton & McGill, 1983, 3.3.A). Les techniques basiques d'indexation automatique se font selon les étapes suivantes: 1.simplification du texte: 1.suppression des mots de fortes fréquences, généralement en référence à une stop list, 2.regroupement des formes morphologiquement liées par la racinisation, 2.sélection des meilleurs index, généralement basés sur des critères de fréquence tels que la valeur de discrimination, 3.pondération des termes qui reflète l'importance des termes pour la recherche d'information. Les termes utilisés traditionnellement en recherche d'information sont des mots simples. Toutefois l'indexation sur des syntagmes est une technique complémentaire qui augmente la précision en exploitant les termes multi-mots qui sont plus spécifiques que les termes simples.

10 TERMES EN THESAURUS: AGROVOC Entrée du terme Immunisation dans AGROVOC, un thesaurus en agronomie: Code Texte Glose IMMUNISATION (immunisation spécifique d'antigène) [note d'usage] ep immunisation active [non descripteur (synonyme)] ep immunisation croisée -- ep sensibilisation immune -- TG1 immunostimulation [generic term (level +1)] TG2 immunothérapie [-- (niveau +2)] TG3 thérapeutique [-- (niveau +3)] TG4 contrôle de la maladie [-- (niveau +4)] TS1 vaccination [terme spécifique (niveau -1)] ta antigène [terme associé] ta réponse immunitaire -- ta résistance aux maladies -- ta résistance induite -- En immunization [équivalent en anglais] Es immunizaci'on [équivalent en espagnol]

11 CONCEPTS DANS UN META-THESAURUS: UMLS La hiérarchie des fonctions biologiques dans le méta-thesaurus du Unified Medical Language System (UMLS), un méta-thesaurus dans le domaine médical:

12 TERMES DANS LES DOCUMENTS Les termes dans les documents sont utilisés pour la communication scientifique et technique et doivent satisfaire les trois critères suivants: économie, précision et adéquation (Sager). Économie: réutilisation du matériel existant en juxtaposant ou en surcomposant les termes (flux de sang capillaire est un terme ternaire construit à partir du terme binaire flux de sang) ou en référant à des concepts associés à des termes complexes au moyen d'expressions plus courtes (CAPD = Continuous ambulatory peritoneal dialysis). Précision Ajout de modifieurs additionnels lorsqu'un terme est ambigu (glande salivaire mandibulaire est plus précis queglande mandibulaire). Adéquation: Un compromis entre précision et économie en fonction du contexte courant, du focus, de la connaissance du domaine, du niveau de technicalité du document, etc.

13 INDEXATION AUTOMATIQUE : NOTIONS Index Les documents sont indexés par des termes, des mots simples (ou composés) censés représenter le contenu du document. Les index ne reprentent donc qu'une partie du document. On peut n'effectuer l'indexation que sur une partie du document. Fichier inverse Le fichier associant les termes aux documents.

14 INDEXATION AUTOMATIQUE : QUALITÉ DES TERMES Bons discriminateurs (médecine) [Salton et Mc Gill 83] 1. marrow 3. lymphostasis 5. hela 2. amyloidosis 4. hepathitis 6.antigen Mauvais discriminateurs (médecine) [Salton et Mc Gill 83] clinic act develop children high treat Mots stop [Salton et Mc Gill 83] 1. a 3. across 5. afterwards 2. about 4. after 6.again

15 But de la morphologie MORPHOLOGIE : INTRODUCTION L'étude de la construction des mots (leurs structures, leurs variations, leurs similitudes). Le double intérêt de la morphologie en recherche d'information L'analyse des mots permet (1) la simplification du texte en remplaçant les mots par leurs racines, et (2) l'expansion des requêtes en ajoutant les mots de la même famille à une requête. La morphologie mise en oeuvre en recherche d'information est très simple comparée aux études linguistiques.

16 MORPHOLOGIE: NOTIONS DE BASE Chaque mot de la langue a une catégorie morpho-syntaxique ou catégorie grammaticale Flexions, dérivations et mots composés Paradigme flexionnel: je travaille, tu travailles, elle/il travaille... Le lemme est travailler. Paradigme dérivationnel: nation, nationalité, nationaliser... La racine est nation. Les mots composés: un lave-vaisselle, un timbre poste, un centimètre, tout à fait. Description d'un mot Racine et lemme de nationaliseraient: lemme nationaliser et racine nation. Catégorie morphosyntaxique (ou grammaticale) attachée au lemme: nationaliseraient est un verbe. Traits morphologiques distinguent les différentes flexions d'un paradigme flexionnel: nationaliseraient est le verbe nationaliser à la 3ème personne de l'imparfait de l'indicatif.

17 MORPHOLOGIE DÉRIVATIONNELLE Affixations Préfixation: construire -> dé-construire. Suffixation: construire -> construct-eur. Allomorphies du suffixe -ion: permettre/permission, confondre/confusion, conduire/conduction. Combinaison d'affixations sur une même racine Structure d'un mot construit: déconstructeur = [ [dé [construire] V ] V eur] N.

18 MORPHOLOGIE: SCHÉMA GÉNÉRAL [Bauer 83]

19 RACINISATION: ALGORITHME DE LOVINS Désuffixage et recodage séparés (Lovins, 1968). Terminaisons (consultées par taille décroissante)

20 1 1 - a l i s t i c a l l y - a r i z a b i l i t y - i 10 -antialness -arisations -arizations -entialness 9 -al lic all y -a nta ne ou s - a n t i a l i t y

21 z a t i o n a l l y -ar isa tio n...

22 Règles de recodage des fins de racines (sont consultées dans cet ordre) 1.suppression desconsomnes répétées: bb-, dd-, gg-, ll-, mm-, nn-, pp-, rr-, dd-, tt iev- -> ief- 3.uct- -> uc- 4.umpt- -> um- 5.rpt- -> rb-... RACINISATION: ALGORITHME DE PORTER Désuffixage et recodage simultanés (Porter, 1980) Etape 1a Etape 1c -SSES -> -SS caresses -> caress -IES -> -I ponies -> poni -SS -> -SS caress -> caress -S -> - cats -> cat -Y -> -I happy -> happi -ANT -> - irritant -> irrit -EMENT -> - replacement -> replac -MENT -> - adjustment -> adjust

23 Etape 3 -ATIONAL -> -ATE -TIONAL -> -TION relational -> relate conditional -> condition Racines produites par (Lovins, 1968). RACINISATION: EXEMPLES Chaîne initiale Chaîne après désuffixage magnesia magnes magnes magnesite magnes magnes magnesian magnes magnes magnetize magnet magnet Chaîne recodée magnetometer magnetometer magnetometer magnetometric magnetometr magnetometer magnetometry magnetometr magnetometer

24

25 RACINISATION DU FRANÇAIS (Namer) 1/2 Analyse linguistique : le cas de -èrent en général, -èrent marque les verbes du 3ème groupe au passé simple : céd-èrent quelquefois, la terminaison est plus courte et -èrent marque le présent : légifèr-ent très rarement, la terminaison est ambiguë : lac-èrent et lacèr-ent Règles et exceptions : le cas de -èrent les partitions ambiguës sont lexicalisées car elles sont rares la règle étant le désuffixage sur le suffixe le plus long, les verbes correspondant au suffixe -ent tels que légifèr- sont lexicalisés dans les autres cas (e.g. céd-), le désuffixage se fait régulièrement sur -èrent.

26 RACINISATION DU FRANÇAIS (Namer) 2/2 Réduction des allomorphes principe : réduction à une racine unique cèd- -> cédjett- -> jet- Règles et exceptions : le cas de tt- 26 lemmes ont leur racine qui se termine par ttpour les autres, la consonne géminée est simplifiée

27 AUTOMATES FINIS Un automate fini est un graphe (arcs étiquetés sur un alphabet = transitions et noeuds = états) avec un état distingué (1, l'état initial) et un ensemble d'états distingués (les états finaux). Une chaîne est acceptée ssi il existe un chemin allant de l'état initial à un état final étiqueté par cette chaîne.

28 EXPRESSIONS RÉGULIÈRES ET AUTOMATES À ÉTATS FINIS Le logiciel TERMS (Justeson & Katz, 1995) d'extraction terminologique repose sur les filtres de patrons de catégories syntaxiques au moyen de l'expressions regulière suivante: ((A N) + (A N) * (N P) (A N) * ) N L'automate à états finis qui représente le langage défini par cette expression régulière est:

29 TRANSDUCTEURS FINIS Un transducteur fini est un automate dont les transitions portent des couples d'étiquettes : une étiquette d'entrée et une étiquette de sortie. Une chaîne est acceptée ssi il existe un chemin Callant de l'état initial à un état final étiqueté par cette chaîne. La chaîne émise est obtenue en concaténant les symboles émis sur les transitions du chemin C.

30 TRANSDUCTEURS FINIS : OPÉRATIONS Trois opérations sur les transducteurs Union Si T 1 et T 2 sont deux transducteurs, il existe un transducteur T 1 U T 2 tel que l'image de toute chaîne par T 1 U T 2 soit l'union des images par T 1 et T 2. Inversion Si T est un transducteur, il existe un transducteur T -1 tel que l'image de toute chaîne C par T -1 est l'union des chaînes dont l'image par T est C. Composition Si T 1 et T 2 sont deux transducteurs, il existe un transducteur T 2 o T 1 tel que l'image de toute chaîne C par T 2 o T 1 soit l'image par T 2 de l'image de C par T 1. Inversion et composition sont les deux propriétés les plus importantes. Elles permettent (1) d'inverser un transducteur passant, par exemple, d'analyse en génération et (2) de composer autant de transducteurs élémentaires que l'on souhaite en une machine complexe. Les transducteurs ne sont pas fermés pour l'intersection.

31 ANALYSE MORPHOLOGIQUE: APPROCHE CONCATENATIVE Une approche concaténative de la morphologie basée sur une arc-list, une liste de toutes les formes de base associées avec des suffixes flexionnels (Tzoukermann & Liberman, 1990)

32 ANALYSE MORPHOLOGIQUE FLEXIONNELLE (TZOUKERMANN) 1/2

33 ANALYSE MORPHOLOGIQUE FLEXIONNELLE (TZOUKERMANN) 2/2 Étiq. entrée Étiq. sortie Cha îne Traits rece v recevoir/ Fin oir verb/infinitive 226 Fin ons 1st/plural/present/indicative 226 Fin ez 2nd/plural/present/indicative 226 Fin ais 1st/singular/imperfect/indicative 226 Fin ais 2nd/singular/imperfect/indicative reç recevoir/ Fin ois 1st/singular/present/indicative 225 Fin ois 2nd/singular/present/indicative 225 Fin oit 3rd/singular/present/indicative 225 Fin oive nt 3rd/plural/present/indicative 225 Fin us 1st/singular/simple-past/indicative 225 Fin us 2nd/singular/simple-past/indicative

34 GRAMMAIRES HORS CONTEXTE Une grammaire hors contexte est décrit par des règles avec un non-terminal en partie gauche et une partie droite composée d'une concaténation de non-terminaux et de chaînes du langage. Pour la description d'un syntagme nominal en anglais, on peut écrire une grammaire des syntagmes nominaux telle que: <SN> <PreMod> <PreMod> <PreMod> <Adj> <Nom> -> <PreMod> <Nom> -> <PreMod> and <PreMod> -> <PreMod> <PreMod> -> <Adj> <Nom> -> normal -> blood bone cell marrow

35 ARBRES D'ANALYSE Les deux arbres de dérivation associés à blood and bone marrow cell par la grammaire précédente sont:

36 ASSOCIATIONS DE MOTS Les quatre fréquences caractérisant une paire de mots dans un texte sont représentées par la table de contingence suivante (Daille, 94, chap 4.3.2): w 2 w'!= w 2 w 1 a = f(w 1,w 2 ) b = SOM w'!= w2 f(w 1,w') w!= w 1 c = SOM w! = w1 f(w,w 2 ) d = SOM w!= w1,w'!= w2 f(w,w') L'Information Mutuelle est une mesure utilisée en théorie de l'information (Fano, 61, chap. 2) et appliquée aux associations de mots: IM(X,Y) = log 2 (P(w 1,w 2 ) / (P(w 1 ) P(w 2 ))) = log 2 a/((a+b)(a+c))

37 Introduction à Perl

38 PERL: INTRODUCTION Présentation Ce tutoriel est inspiré du tutoriel en ligne de Nik Silver à l'université de Leeds. Il est orienté vers l'extraction d'information à partir de données textuelles et ne prétend pas présenter toutes les facettes de ce langage. Perl est un logiciel GNU Public Licence.

39 Un programme simplissime Un programme d'affichage d'une chaîne : #!/usr/local/bin/perl PERL: PREMIER PROGRAMME # # Programme d'affichage d'une chaîne # print "Ça marche!"; # Imprime un message Composantes Lancement du programme perl supposé localisé à /usr/local/bin #!/usr/local/bin/perl Le texte suivant un # sur une ligne est un commentaire. # # Programme d'affichage d'une chaîne # La dernière ligne est une instruction d'impression à l'écran. print "Ça marche!";

40 PERL: EXÉCUTION Deux solutions Faire exécuter le programme par perl >perl mon_prog.prl Rendre le programme exécutable et le lancer directement. >chmod +x mon_prog.prl >mon_prog.prl Ça marche!> Si le message d'erreur bash:./mon_prog.prl: No such file or directory s'affiche, vérifier que le chemin pour accéder à perl est correct en tapant : which perl

41 PERL: VARIABLES SCALAIRES Exemples Les variables scalaires en perl ne sont pas typées. Elles contiennent donc indifféremment des nombres entiers, des nombres flottants ou des chaînes de caractères. $titre = "Un titre de ". 3. " lignes\navec un retour à\nla ligne.\n"; print $titre; donne Un titre de 3 lignes avec un retour à la ligne. La concaténation de chaînes (donc un environnement de chaînes de caractères) convertit les nombres en chaînes. Opération arithmétique sur une variable scalaire $x = 2; $x += 5; print $x. "\n"; donne 7

42 PERL: OPÉRATIONS ET AFFECTATIONS Opérations Perl utilise les opérateurs arithmétiques de C classiques: $a = 1 + 2; $a = 3-4; $a = 5 * 6; $a = 7 / 8; # Division rationnelle (non entière) $a = 9 ** 10; # puissance $a = 5 % 2; # Reste de la division entière ++$a; # Préincrément $a++; # Post-incrément --$a; # Prédécrément $a--; # Post-décrément et pour les chaînes: $a = $b. $c; # concaténation $a = $b x $c; # $b répété $c fois Affectations $a = $b; # Affecte $b à $a $a += $b; # Ajoute $b à $a $a -= $b; # Soustrait $b de $a $a.= $b; # Concatène $b à $a Contrairement aux langages à pointeurs comme Java, l'instruction $a = $b copie le contenu de $b dans $a. Toute modification ultérieure de $b ne changera pas la valeur de $a.

43 PERL: INTERPRÉTATION DE VARIABLES Forcer l'interprétation d'une variable dans une chaîne Il y a deux façons de définir une chaîne : avec des doubles ou des simples quotes. Seules les doubles quotes forcent l'interprétation des variables $a = "perl"; $chaine = "Je programme en $a.\n"; print $chaine; donne Je programme en perl. alors que $a = "perl"; $chaine = 'Je programme en $a.\n'; print $chaine; donne Je programme en $a.\n>

44 PERL: TABLEAUX 1/2 Définition Un tableau est une liste ordonnée de variables = (1, "deux", "3"); print $a[1]. "\n"; donne deux Affectations On peut utiliser un tableau pour en construire un autre = (1, "deux", = (2+2)); # = ("ZERO", 1, "deux", "3", 4); Ajouter ou soustraire des éléments un par un par la fin du tableau = (1, "deux", "3"); 2**2); # = (1, "deux", "3", 4); $b = # = (1, "deux", "3") et $b = 4;;

45 PERL: TABLEAUX 2/2 Affectations combinant variables scalaires et tableaux On peut directement manipuler des variables scalaires dans un tableau lors d'affectations : ($a, $b) = ($c, $d); # Équivaut à $a=$c; $b=$d; ($a, $b) # $a et $b ont pour valeurs respectives # les deux premiers éléments # $b est vide n'a qu'un élément # $a est le premier élément est la liste des éléments restants. Taille d'un tableau $#tab ou en forçant un tableau à être converti en nombre dans un contexte numérique + 0 = (1, "deux", "trois"); # 3: la taille en contexte scalaire print # 1 deux trois: la concaténation avec des séparateurs # 1deuxtrois: les éléments soudés

46 Ouverture, fermeture et lecture PERL: FICHIERS 1/2 Ouverture d'un fichier, stockage dans un tableau, puis affichage. Attention : dans le cas de gros fichiers, cette commande peut saturer la mémoire car elle fait stocker l'ensemble du fichier dans un tableau. #!/usr/local/bin/perl $NomFic = 'doc/doc.txt'; # Nom du fichier open(info, $NomFic); # Ouverture du = <INFO>; # Stockage dans un tableau close(info); # Fermeture du fichier # Impression du fichier sur la sortie standard Différents modes d'ouverture open(info, $file); # Ouverture pour lecture open(info, "<$file"); # Alternative explicite pour lecture open(info, ">$file"); # Ouverture pour écriture open(info, ">>$file"); # Ouverture pour écriture en fin

47 PERL: FICHIERS 2/2 Propriétés L'instruction $ligne = <INFO> ne stocke que la première ligne du fichier. Si elle est réitérée, on lit le fichier ligne à ligne. Les filehandles STDIN, STDERR, et STDOUT représentent les entrée, sortie et erreur standard. Pour écrire dans un fichier faire print FILE $chaine;. En conséquence print $chaine; équivaut à print STDOUT $chaine; Pour sélectionner une sortie par défaut faire select FILE.

48 PERL: TEST BOOLÉENS Tests sur scalaires Les tests sur les valeurs scalaires : $a == $b # $a numériquement égal à $b # Attention: ne pas utiliser l'opérateur = $a!= $b # $a numériquement distinct de $b $a < $b # $a inférieur strict à $b $a <= $b # $a inférieur ou égal à $b $a > $b # $a supérieur strict à $b $a >= $b # $a supérieur ou égal à $b L'identité des chaînes est traitée séparément : $a eq $b # la chaîne de $a égale à celle de $b $a ne $b # la chaîne de $a distincte de celle de $b Opérations logiques sur les valeurs booléennes ($a && $b) # $a ET $b ($a $b) # $a OU $b!($a) # NON $a

49 PERL: EXÉCUTION CONDITIONNELLE Test if/else Une instruction conditionnelle peut se faire sur le test de toute valeur booléenne ou scalaire. Les valeurs faux sont soit 0, soit la chaîne vide, soit un tableau vide : #!/usr/bin/perl print "Entrée:"; $chaine = <STDIN>; # Saisie en entrée standard chop $chaine; # Supprime la fin de ligne de l'entrée if ($chaine) { printf "La chaîne a pour longueur %d\n", length($chaine); } else { print "La chaîne est vide ou le nombre est nul.\n"; } En exécution, on obtient alors : Entrée: La chaîne est vide ou le scalaire est nul. Entrée:0 La chaîne est vide ou le scalaire est nul. Entrée:perl La chaîne a pour longueur 4

50 PERL: CONTRÔLES 1/2 Parcours des éléments d'un tableau : foreach On parcourt un à un tous les éléments du : $ind = 1; foreach $element { # parcours des éléments print "Item numéro $ind : $element\n"; # imprime l'élément $ind++; } Boucle for for (initialise; test; inc) { } action_1; action_2; etc L'instruction initialise est effectuée en début de boucle. Tant que test est vrai le corps de l'instruction est effectué. Après chaque exécution du bloc inc est effectué. Exemple d'impression des nombres de 1 à 9 : for ($i = 1; $i < 10; ++$i) { # Commence avec $i = 1 # Poursuit tant que $i < 10 # Incrémente $i avant de répéter print "$i\n"; }

51 PERL: CONTRÔLES 2/2 Boucles while et until Les boucles while et until peuvent se faire en test initial ou en test final. L'exemple suivant illustre la saisie d'un mot de passe au clavier par une boucle while à test initial : #!/usr/bin/perl print "Password:"; # Invite $a = <STDIN>; # Saisie en entrée standard chop $a; # Supprime la fin de ligne de l'entrée while ($a ne "perl") { # Tant que la saisie est fausse print "Incorrect!\nPassword:"; # Re-invite $a = <STDIN>; # Re-saisit chop $a; # Re-supprime la fin de ligne } On aurait pu utiliser une boucle until à test initial en remplaçant le test de boucle par : until ($a eq "perl") Formulation alternative de la saisie du password par une boucle à test final : #!/usr/bin/perl do { print "Password:"; # Invite $a = <STDIN>; # Saisie chop $a; # Supprime la fin de ligne } until($a eq "perl");

52 PERL: EXPRESSIONS RÉGULIÈRES 1/6 Recherche d'une expression régulière dans une chaîne L'opérateur =~ m/regexp/ ou =~ /RegExp/ permet de rechercher une expression régulière dans une chaîne : $chaine = "Perl est interprété. Perl est optimisé pour scanner des fichiers."; if( $chaine =~ /Perl est ([a-zà-ü]+)/ ) { printf "Perl est bien %s.\n", $1; } La variable $n permet de récupérer la chaîne s'appariant avec la nième expression régulière entre parenthèses. En exécution, on obtient alors : Perl est bien interprété. Vous remarquerez que la première sous-chaîne (celle la plus à gauche) à s'apparier avec l'expression régulière est retenue. C'est pour cela que l'on n'obtient pas optimisé.

53 La chaîne par défaut $_ PERL: EXPRESSIONS RÉGULIÈRES 2/6 L'identificateur $_ désigne la chaîne par défaut. Elle est utile en analyse de fichier : while(<stdin>) { # équivaut à while( $_ = <STDIN> ) if( /Perl/ ) { # équivaut à if( $_ =~ /Perl/ ) print; # équivaut à print STDOUT $_; } } Ce programme imprime toutes les lignes de l'entrée standard qui contiennent la chaîne Perl. Le langage Perl Le langage Perl Introduction Perl fait la difference Perl fait la difference

54 Caractères spéciaux Caractères joker ou répétition de Kleene : PERL: EXPRESSIONS RÉGULIÈRES 3/6. # Tout caractère sauf le retour à la ligne ^ # Le début d'une ligne ou d'une chaîne $ # La fin d'une ligne (\n non compris) ou d'une chaîne * # Une occurrence ou plus du caractère ou de l'expr. précédente + # Zéro ou plusieurs occurrences du caractère ou de l'expr. précédente? # Zéro ou une occurrence du caractère ou de l'expr. précédente Exemples d'appariements (à mettre entre /.../) : t.i # t puis tout caractère puis i: # toi ou tri, pas ti ou teli ^f # f au début d'une ligne ^ftp # ftp au début d'une ligne e$ # e à la fin d'une ligne com$ # com à la fin d'une ligne mot * # mot suivi de 0 ou plusieurs espaces.* # une chaîne de taille quelconque sans \n ^$ # Une ligne vide (attention à supprimer \n par chop)

55 PERL: EXPRESSIONS RÉGULIÈRES 4/6 Ensembles Les ensembles se notent entre crochets droits : [qjk] # Soit q, soit j, soit k [^qjk] # Ni q, ni j, ni k [a-z] # Tout caractère dont le code est compris entre a et z [^a-z] # Aucun caractère dont le code est compris entre a et z [a-za-z] # Tous les caractères alphabétiques sans diacritiques [a-z]+ # Toute chaîne de caractères alphabétiques non vide Disjonctions et parenthésage Une barre verticale représente un "OU" et les parenthèses (...) servent à construire des expressions plus complexes : fromage dessert # Soit fromage, soit dessert from(age ent) # Soit fromage, soit froment (le )+ # Soit le, soit le le... Les caractères spéciaux, pour qu'ils ne soient pas considérés comme des caractères de commande, doivent être précédés d'un antislash s'ils sont utilisés dans une chaîne. Par exemple : \, \[, \), \*, \^, \/, \\.

56 Caractères spéciaux PERL: EXPRESSIONS RÉGULIÈRES 5/6 Les caractères suivants sont des raccourcis pour des caractères hexadécimaux ou des ensembles de caractères : \n # Nouvelle ligne \t # Tabulation \w # Tout caractère alphanumérique (sauf diacritiques) # équivaut à [a-za-z0-9_] (w=word) \W # Tout caractère non alphanumérique # équivaut à [^a-za-z0-9_] \d # Tout chiffre, équivaut à [0-9] \D # Tout non chiffre. équivaut à [^0-9] \s # Tout caractère séparateur : espace, # tabulation, nouvelle ligne. \S # Tout caractère sauf les séparateurs

57 Exemples d'expressions régulières Quelques exemples simples : PERL: EXPRESSIONS RÉGULIÈRES 6/6 [01] # "0" ou "1" \/0 # Une division par zéro: "/0" \/ 0 # Une division par zéro avec un espace: "/ 0" \/\s0 # Une division par zéro avec un séparateur: # "/ 0" où le blanc est un espace, une tabulation... \/ *0 # Une division par zéro avec des espaces # éventuels : "/0" ou "/ 0" ou "/ 0" etc. \/\s*0 # Une division par zéro avec des séparateurs # éventuels. \/\s*0\.0* # Comme le précédent, mais avec une partie décimale # optionnelle nulle ou vide. Par exemple, # "/0." ou "/0.0" ou "/0.00" etc # ou "/ 0." ou "/ 0.0" ou "/ 0.00" etc.

58 Opérateur de substitution dans une chaîne PERL: SUBSTITUTION 1/3 L'opérateur s/exprreg/chaîne/ permet de remplacer une expression régulière par une chaîne : $chaine = "Perl est interprété. Perl est optimisé pour scanner des fichiers."; $chaine =~ s/scanner/analyser/; printf "$chaine\n"; $chaine =~ s/perl est ([a-zà-ü]+)/perl est compilé/; printf "$chaine\n"; donne Perl est interprété. Perl est optimisé pour analyser des fichiers. Perl est compilé. Perl est optimisé pour analyser des fichiers. Modifieurs de la substitution Le modifieur i indique que l'appariement dans l'expression régulière se fera sans tenir compte de la casse des caractères. Le modifieur g indique que l'on effectue autant de substitutions que d'occurrences de l'expression régulière. $chaine = "un browser pour voir une page donnée sur un serveur."; $chaine =~ s/(\bun\b)/le/gi; # \b: frontière de mots (boundary) printf "$chaine\n"; donne le browser pour voir une page donnée sur le serveur.

59 PERL: SUBSTITUTION 2/3 Mémorisation de sous-chaînes dans un appariement Les chaînes appariées avec des sous-expressions régulières entre parenthèses sont mémorisées : dans les chaînes par $i (une variable non modifiable et volatile par définition), dans les expressions régulières par \i. $chaine = "Le langage Perl est interprété. Perl est optimisé."; if ( $chaine =~ /(.+).*\1/ ) { print "La séquence \"$1\" est répétée!\n"; } if ( $chaine =~ /(\b[^\s]+\b).*\1/ ) { print "Le mot \"$1\" est répété!\n"; } donne La séquence "e " est répétée! Le mot "Perl" est répété!

60 PERL: SUBSTITUTION 3/3 Mémorisations liées à l'appariement complet Après un appariement, les variables suivantes sont accessibles en lecture seule : $` : ce qui était avant l'appariement, $& : ce qui s'est apparié, $' : ce qui était après l'appariement. Ainsi, après l'appariement suivant : $_ = "Le langage Perl est interprété."; /Perl/; les égalités suivantes sont vraies : $` eq "Le langage Perl "; $& eq "Perl"; $' eq " est interprété.";

61 Translation caractère à caractère PERL: TRANSLATION L'opérateur tr/listecarini/listecarfin/ permet de substituer tous les caractères de ListeCarIni par les caractères en même position dans ListeCarFin : $chaine = "interpréteurs PERL pour à peu près toutes les plates-formes"; $chaine =~ tr/éèêà\-a-z/eeea a-z/; printf "$chaine\n"; désaccentue les e et les a, remplace les tirets par des blancs et transforme les majuscules en minuscules : interpreteurs perl pour a peu pres toutes les plates formes

62 PERL: split ET join Éclatement d'une chaîne dans un tableau : split L'opérateur split(exprreg,chaine) place dans un tableau les sous-chaînes séparées par ExprReg. Concaténation des éléments d'un tableau : join L'opérateur join(chaine,tableau) transforme un tableau en une concaténation de ses composantes en intercalant Chaine. Exemple : $chaine = "Bonheur intégral. Légère, la poudre - en vol - tournoie! Tout y = split( /[\.\-!\?\, ]+/, $chaine ); print join( ' ), "\n"; donne : Bonheur intégral Légère la poudre en vol tournoie Tout y est Cas d'une expression régulière vide : $chaine = = split( //, $chaine ); print join( ' ), "\n"; donne : B o n h e u r.

63 PERL: SOUS-CHAÎNE Extraction de sous-chaînes La commande substr permet d'extraire une sous-chaîne à partir d'un indice de départ et pour une taille donnée : substr("once upon a time", 3, 4); # retourne "e up" substr("once upon a time", 7); # retourne "on a time" substr("once upon a time", -6, 5); # retourne "a tim"

64 Saisie et lecture des tableaux associatifs PERL: TABLEAUX ASSOCIATIFS 1/2 Un tableau associatif indexe des éléments sur une clé unique. Il peut se garnir de deux façons : %naissance = ("Mick Jagger", " ", "Agatha Christie", " "); ou $naissance{"marilyn Monroe"} = " "; Les égalités suivantes sont vraies : $naissance{"mick Jagger"} eq " " $naissance{"marilyn Monroe"} eq " " Affectation On peut affecter un tableau dans un tableau associatif et l'inverse. Le tableau contient aux rangs pairs les clés et aux rangs impairs les valeurs.

65 PERL: TABLEAUX ASSOCIATIFS 2/2 Énumération des éléments d'un tableau associatif Un tableau associatif s'énumère de deux façons. Avec foreach pour parcourir les clés ou les valeurs : foreach $celebrite (keys %naissance) { print "$celebrite est né(e) le $naissance{$celebrite}\n"; } foreach $date (values %naissance) { print "Une célébrité est née le $date\n"; } ou avec each pour parcourir les couples while (($celebrite, $date) = each(%naissance)) { print "$celebrite est né(e) le $date\n"; } On obtient : Mick Jagger est né(e) le Marilyn Monroe est né(e) le Agatha Christie est né(e) le Les éléments d'un tableau associatifs ne sont pas ordonnés. On y accède rapidement par une technique de hashcode.

66 Déclaration et appel d'un sous-programme PERL: SOUS-PROGRAMMES 1/3 Déclaration - Le contient les paramètres passés lors de l'appel : sub moyenne2 { local($a, ($a + $b) / 2; } sub moyennen { local($somme, $valeur); $somme = 0; foreach $valeur { $somme += $valeur; } $somme } Appel - On fait précéder le nom du sous-programme de & : print "Moyenne : ", &moyennen( 14, 12, 19 ), "\n"; affiche : Moyenne : 15

Recherche d information textuelle

Recherche d information textuelle Recherche d information textuelle Pré-traitements & indexation B. Piwowarski CNRS / LIP6 Université Paris 6 benjamin@bpiwowar.net http://www.bpiwowar.net Master IP - 2014-15 Cours et travaux pratiques

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Marie-Claude L Homme Université de Montréal

Marie-Claude L Homme Université de Montréal Évaluation de logiciels d extraction de terminologie : examen de quelques critères Plan Marie-Claude L Homme Université de Montréal Unités recherchées et problèmes de base Catégories de critères Critères

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-onventions Initiation à la programmation en Python Une commande Python sera écrite en caractère gras. Exemples : print("bonjour") max=input("nombre maximum autorisé :") Le résultat de l'exécution d'un

Plus en détail

CHAPITRE 5 : ANALYSE LEXICALE

CHAPITRE 5 : ANALYSE LEXICALE CHAPITRE 5 : ANALYSE LEXICALE L analyse lexicale est un autre domaine fondamental d application des automates finis. Dans la plupart des langages de programmation, les unités lexicales (identificateurs,

Plus en détail

INGÉNIERIE DES CONNAISSANCES CONSTRUCTION D ONTOLOGIES À PARTIR DE TEXTES (1)

INGÉNIERIE DES CONNAISSANCES CONSTRUCTION D ONTOLOGIES À PARTIR DE TEXTES (1) 09.02.2002 INGÉNIERIE DES CONNAISSANCES CONSTRUCTION D ONTOLOGIES À PARTIR DE TEXTES (1) Outils de traitement automatique des langues pour la construction d ontologies à partir de textes Didier BOURIGAULT

Plus en détail

Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2

Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101. Travail pratique #2 Université Laval Faculté des sciences et de génie Département d'informatique et de génie logiciel IFT-3101 Danny Dubé Hiver 2014 Version : 11 avril Questions Travail pratique #2 Traduction orientée-syntaxe

Plus en détail

Logiciel QDA Miner. Deuxième partie Gestion du livre des codes et codage manuel

Logiciel QDA Miner. Deuxième partie Gestion du livre des codes et codage manuel PLAN DE COURS «ANALYSE DE DONNEES TEXTUELLES» Trois approches pour l analyse de textes Analyse qualitative Analyse quantitative Fouille de textes Introduction au logiciel QDA Miner Introduction et gestion

Plus en détail

Informatique. Programmation en Python.

Informatique. Programmation en Python. BCPST 1 B 13 septembre 2015 Informatique. Programmation en Python. Ce document est un support de cours, il vous permet d avoir sa structure et ses éléments les plus importants. Au cours des séances en

Plus en détail

Des traitements aux ressources linguistiques : le rôle d une architecture linguistique

Des traitements aux ressources linguistiques : le rôle d une architecture linguistique Des traitements aux ressources : le rôle d une architecture Frederik Cailliau Villetaneuse, le 9 décembre 2010 Sous la direction d Adeline Nazarenko 1. 2. 3. 4. 5. 6. 2 Sinequa Cifre à Sinequa Recherche

Plus en détail

TP : commande awk. D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html

TP : commande awk. D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html TP : commande awk D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html Nous reprenons dans ce TP une grande partie du cours de Isabelle Vollant en simplifiant quelques informations.

Plus en détail

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

Plus en détail

TP Compilation Analyse lexicale

TP Compilation Analyse lexicale TP Compilation Analyse lexicale Eric Ramat ramat@lisic.univ-littoral.fr 9 mai 2014 Durée : 6 heures 1 Introduction Le but de cet TP est de vous donner les bases nécessaires afin de pouvoir écrire votre

Plus en détail

Algorithmique (M1 LTTAC UE3 du S1 & M2 LCE) Univ. Lille 3 2015-2016 15/09/15 ; page 1 N. Gasiglia

Algorithmique (M1 LTTAC UE3 du S1 & M2 LCE) Univ. Lille 3 2015-2016 15/09/15 ; page 1 N. Gasiglia 15/09/15 ; page 1 N. Gasiglia Quelques instructions de base Préambule Quand un programme a besoin d échanger des informations avec l utilisateur qui l exécute, ou avec un fichier qui en contient ou dans

Plus en détail

Évaluer les liens entre codage et les données structurées (variables) Introduction au gestionnaire de rapport et au journal de commandes

Évaluer les liens entre codage et les données structurées (variables) Introduction au gestionnaire de rapport et au journal de commandes Trois approches en analyse de texte L'Analyse Qualitative L'analyse de Contenu Quantitative (par dictionnaires) Le forage de texte ("Text Mining") Introduction aux logiciels de Provalis Research QDA Miner

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

Systèmes d'informations

Systèmes d'informations Systèmes d'informations C'est un ensemble d'outils pour stocker / gérer / diffuser des informations / des données Le stockage : Bases de données + SGDBR La gestion : Saisie, Mise à jour, Contrôle La diffusion

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

CHAPITRE 3 : Types de base, Opérateurs et Expressions

CHAPITRE 3 : Types de base, Opérateurs et Expressions CHAPITRE 3 : Types de base, Opérateurs et Expressions 1. Types simples Un type définit l'ensemble des valeurs que peut prendre une variable, le nombre d'octets à réserver en mémoire et les opérateurs que

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Laboratoires de système d exploitation. Introduction à PERL. par Louis SWINNEN

Laboratoires de système d exploitation. Introduction à PERL. par Louis SWINNEN Département Informatique Laboratoires de système d exploitation Introduction à PERL par Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il peut être reproduit, distribué

Plus en détail

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali

C.P.G.E - Meknès Langage Python 3 Haouati Abdelali 3. Langage Python 3 2 a. Introduction Présentation du langage Python : Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l imposer) une approche modulaire et orientée objet

Plus en détail

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel

I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel I.2: Le test fonctionnel I.2.2 : Le test fonctionnel de logiciel Introduction Notre contexte : pas possible d exprimer toutes les combinaisons de DT. Le test fonctionnel est basé sur la spécification/interface

Plus en détail

Norme de programmation pour le cours et les travaux pratiques

Norme de programmation pour le cours et les travaux pratiques Université du Québec École de technologie supérieure Service des enseignements généraux www.seg.etsmtl.ca INF130 Ordinateurs et programmation Norme de programmation pour le cours et les travaux pratiques

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages AntLR - Générateur d analyseurs Claude Moulin Université de Technologie de Compiègne Printemps 2015 Sommaire 1 Introduction 2 AntLR ANTLR : ANother Tool for Language Recognition URL

Plus en détail

Apprendre à développer un site web avec PHP et MySQL Exercices pratiques et corrigés (2ième édition)

Apprendre à développer un site web avec PHP et MySQL Exercices pratiques et corrigés (2ième édition) Introduction 1. Objectif de l'ouvrage 13 2. Fonctionnement d un site web 13 Installation 1. Introduction 17 2. Installation d'easyphp 13.1 18 Les bases du langage PHP 1. Les balises 23 1.1 Syntaxe de base

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

Le système SMART 1. Indexation

Le système SMART 1. Indexation Le système SMART Le système SMART (System for the Mechanical Analysis and Retrieval of Text) (aussi appelé Salton's Magic Automatic Retrieval Technique:-) est un système de RI expérimental. Il utilise

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Initiation à la programmation. L'essentiel de la programmation en shell, perl, php et C++

Initiation à la programmation. L'essentiel de la programmation en shell, perl, php et C++ Initiation à la programmation L'essentiel de la programmation en shell, perl, php et C++ Communiquer avec sa machine Les langages de programmation sont d'abord destinés aux humains et non aux machines.

Plus en détail

Formation Python. Sandra Dèrozier & Franck Samson 29 Mars 2013

Formation Python. Sandra Dèrozier & Franck Samson 29 Mars 2013 Formation Python Sandra Dèrozier & Franck Samson 29 Mars 2013 Programme Présentation de Python Présentation d Eclipse Caractéristiques d un programme Python Variables Python Structures de contrôle et Boucles

Plus en détail

Exercices Perl. Master de Bioinformatique Université de Rouen

Exercices Perl. Master de Bioinformatique Université de Rouen Exercices Perl Master de Bioinformatique Université de Rouen 1 Exercice Écrire un programme Perl qui affiche les lignes de plus de 80 caractères lues sur l entrée standard. 2 Exercice Écrire un programme

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Présentation de la plateforme d analyse linguistique médiévale

Présentation de la plateforme d analyse linguistique médiévale Présentation de la plateforme d analyse linguistique médiévale 1. Introduction Tout au long de ce document, notre projet sera présenté à travers la méthodologie suivie pour développer la plateforme d analyse

Plus en détail

Les types utilisateurs (VBA) Corrigé

Les types utilisateurs (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 2 avril mai 2013 Corrigé Résumé Ce document décrit comment traduire en VBA les types utilisateur du langage algorithmique. Table des matières

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Programmation VBA. Identificateurs. Types de base. Déclaration d une variable. Commentaires. Activer l onglet Développeur (Excel)

Programmation VBA. Identificateurs. Types de base. Déclaration d une variable. Commentaires. Activer l onglet Développeur (Excel) Activer l onglet Développeur (Excel) Programmation VBA Michel Reid Cliquez sur le bouton Office (coin supérieur gauche) Cliquez sur le bouton Options Excel Dans la section Standard, cochez la case Afficher

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Recherche d information et repérage de termes et de leurs variantes

Recherche d information et repérage de termes et de leurs variantes Recherche d information et repérage de termes et de leurs variantes Cours de Dialogue et Analyse de Texte Aurélien Max Master Recherche en Informatique Université Paris-Sud 11 Année 2006-07 Plan du cours

Plus en détail

Série 2 Premiers programmes

Série 2 Premiers programmes Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend

Plus en détail

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative

Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative Algorithmique et Programmation 2 LMI 1 Semestre 2 Cours 2 La séquence et l alternative 2 janvier 2009 1 Les structures de contrôle En Scheme, le programmation se fait par composition de fonctions, et même

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Programmation shell sous Unix/Linux sh, ksh, bash (avec exercices corrigés) (4ième édition)

Programmation shell sous Unix/Linux sh, ksh, bash (avec exercices corrigés) (4ième édition) Introduction 1. Définition du shell 19 2. Caractéristiques d'un interpréteur de commandes 19 3. Interpréteurs de commandes (shells) 20 3.1 Historique 20 3.2 Avec quel shell faut-il programmer? 21 3.2.1

Plus en détail

MS-DOS UTILISATION DES POSSIBILITÉS DE PROGRAMMATION POUR LA CRÉATION DE PROCÉDURES BAT

MS-DOS UTILISATION DES POSSIBILITÉS DE PROGRAMMATION POUR LA CRÉATION DE PROCÉDURES BAT 202 MS-DOS UTILISATION DES POSSIBILITÉS DE PROGRAMMATION POUR LA CRÉATION DE PROCÉDURES BAT I. INSTRUCTIONS SPÉCIFIQUES 1) Instructions COMMAND EXIT Permet d'appeler depuis une procédure BAT une autre

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

II. EXCEL/QUERY ET SQL

II. EXCEL/QUERY ET SQL I. AU TRAVAIL, SQL! 1. Qu est-ce que SQL?... 19 2. SQL est un indépendant... 19 3. Comment est structuré le SQL?... 20 4. Base, table et champ... 21 5. Quelle est la syntaxe générale des instructions SQL?...

Plus en détail

TD : Petits exercices pour la reprise

TD : Petits exercices pour la reprise TD : Petits exercices pour la reprise 1) Environnement de travail a) Qu est-ce qu un IDE? Lorsqu on fait de la programmation, il est agréable d avoir à sa disposition différents outils qui permettent de

Plus en détail

Épreuve d informatique 2011

Épreuve d informatique 2011 A 2011 INFO. MP ÉCOLE NATIONALE DES PONTS ET CHAUSSÉES, ÉCOLES NATIONALES SUPÉRIEURES DE L AÉRONAUTIQUE ET DE L ESPACE, DE TECHNIQUES AVANCÉES, DES TÉLÉCOMMUNICATIONS, DES MINES DE PARIS, DES MINES DE

Plus en détail

Parcours FOAD Formation ACCESS 2010

Parcours FOAD Formation ACCESS 2010 Parcours FOAD Formation ACCESS 2010 PLATE-FORME E-LEARNING DELTA ANNEE SCOLAIRE 2013/2014 Pôle national de compétences FOAD Formation Ouverte et A Distance https://foad.orion.education.fr Livret de formation

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

Algorithmique avancée en Python TDs

Algorithmique avancée en Python TDs Algorithmique avancée en Python TDs Denis Robilliard sept. 2014 1 TD 1 Révisions 1. Ecrire un programme qui saisit un entier, et détermine puis affiche si l entier est pair où impair. 2. Ecrire un programme

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année UFR Sciences et Techniques Licence S&T 1ère année Informatique UE 102 Architecture des ordinateurs et Algorithmique de base Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ UFR Sciences et Techniques

Plus en détail

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

Introduction 2 Environnement de travail... 2 Groupement de commandes... 2 Caractères spéciaux... 2

Introduction 2 Environnement de travail... 2 Groupement de commandes... 2 Caractères spéciaux... 2 TP OS n 5 2012 tv - v.1.0 Sommaire Introduction 2 Environnement de travail....................................... 2 Groupement de commandes..................................... 2 Caractères

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 8 juillet 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un

Plus en détail

Expressions rationnelles, automates, analyse lexicale

Expressions rationnelles, automates, analyse lexicale Chapitre 2 Expressions rationnelles, automates, analyse lexicale L analyse lexicale est la première phase d un compilateur ou d un interprète : elle consiste à identifier et à catégoriser les différents

Plus en détail

Programmer avec Xcas : version 0.8.6 et 0.9

Programmer avec Xcas : version 0.8.6 et 0.9 Programmer avec Xcas : version 0.8.6 et 0.9 I. L environnement de travail de Xcas Xcas permet d écrire des programmes, comme n importe quel langage de programmation. C est un langage fonctionnel. L argument

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

1/ VARIABLES DE TYPE TABLEAU

1/ VARIABLES DE TYPE TABLEAU DEUXIEME PARTIE 1/ Les variables de type tableau 2/ Les opérateurs split and join 3/ Manipulation des expressions régulières pour le filtrage des motifs 4/ Ouverture de fichiers en lecture/écriture...

Plus en détail

Ch. 1 : Bases de programmation en Visual Basic

Ch. 1 : Bases de programmation en Visual Basic Ch. 1 : Bases de programmation en Visual Basic 1 1 Variables 1.1 Définition Les variables permettent de stocker en mémoire des données. Elles sont représentées par des lettres ou des groupements de lettres

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

PERL POUR LA MANIPULATION DE TEXTES Une Introduction par l'exemple

PERL POUR LA MANIPULATION DE TEXTES Une Introduction par l'exemple PERL POUR LA MANIPULATION DE TEXTES Une Introduction par l'exemple Sous linux, on peut exécuter un script perl en tapant dans un terminal la ligne de commande $ perl nom_du_programme.pl Les exemples suivants,

Plus en détail

4. La commande grep (ne demandez pas pourquoi grep!)

4. La commande grep (ne demandez pas pourquoi grep!) 4. La commande grep (ne demandez pas pourquoi grep!) 4.1. Ou alors si. Grep de la commande d'édition g/re/p 'globally search for RE and print it' ou RE est un raccourci pour RegularExpression. La commande

Plus en détail

Ligne de commande Linux avancée et scriptage bash (Linux 201)

Ligne de commande Linux avancée et scriptage bash (Linux 201) Ligne de commande Linux avancée et scriptage bash (Linux 201) laurent.duchesne@calculquebec.ca maxime.boissonneault@calculquebec.ca Université Laval - Septembre 2014 1 2 Se connecter à Colosse ssh colosse.calculquebec.ca

Plus en détail

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Olivier BOEBION Mars 2004 1 Les expressions conditionnelles et les structures de contrôle 1.1 La commande test La commande interne

Plus en détail

Avant-propos. Introduction Chapitre 1. Mécanismes essentiels du shell Chapitre 2. A. Définition du shell... 18

Avant-propos. Introduction Chapitre 1. Mécanismes essentiels du shell Chapitre 2. A. Définition du shell... 18 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence ENI de l'ouvrage RI3PRO dans la zone de recherche et validez.

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages Automates Claude Moulin Université de Technologie de Compiègne Printemps 2013 Sommaire 1 Automate fini 2 Automate et langages réguliers 3 Automate à pile Automate fini déterministe

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

Principes généraux de codage entropique d'une source. Cours : Compression d'images Master II: IASIG Dr. Mvogo Ngono Joseph

Principes généraux de codage entropique d'une source. Cours : Compression d'images Master II: IASIG Dr. Mvogo Ngono Joseph Principes généraux de codage entropique d'une source Cours : Compression d'images Master II: IASIG Dr. Mvogo Ngono Joseph Table des matières Objectifs 5 Introduction 7 I - Entropie d'une source 9 II -

Plus en détail

TEPZZ 74 84 A_T EP 2 743 843 A1 (19) (11) EP 2 743 843 A1 (12) DEMANDE DE BREVET EUROPEEN. (51) Int Cl.: G06F 17/30 (2006.01)

TEPZZ 74 84 A_T EP 2 743 843 A1 (19) (11) EP 2 743 843 A1 (12) DEMANDE DE BREVET EUROPEEN. (51) Int Cl.: G06F 17/30 (2006.01) (19) TEPZZ 74 84 A_T (11) EP 2 743 843 A1 (12) DEMANDE DE BREVET EUROPEEN (43) Date de publication: 18.06.14 Bulletin 14/2 (1) Int Cl.: G06F 17/ (06.01) (21) Numéro de dépôt: 1319246.7 (22) Date de dépôt:

Plus en détail

2012/2013 Le codage en informatique

2012/2013 Le codage en informatique 2012/2013 Le codage en informatique Stéphane Fossé/ Marc Gyr Lycée Felix Faure Beauvais 2012/2013 INTRODUCTION Les appareils numériques que nous utilisons tous les jours ont tous un point commun : 2 chiffres

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Sémantique des Langages de Programmation

Sémantique des Langages de Programmation Sémantique des Langages de Programmation Introduction Stefano Guerrini stefano.guerrini@univ-paris13.fr LIPN - Institut Galilée, Université Paris Nord 13 Sup Galillée Informatique, 1ère année 2009 2010

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

Plus en détail

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N.

Abstraction: introduction. Abstraction et liaison dans les langages de programmation. Abstraction: principe. Abstraction: terminologie. N. Abstraction et liaison dans les langages de programmation LIN2: Paradigmes de programmation N. Hameurlain Abstraction: introduction L'importance de l abstraction découle de sa capacité de cacher les détails

Plus en détail

P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S

P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S P R O G R A M M E E T I N S T R U C T I O N S O F F I C I E L L E S POUR L ENSEIGNEMENT DE L INFORMATIQUE MPSI première année I. Objectifs de la formation II-1 Développement de compétences et d aptitudes

Plus en détail

InitProg par l exemple

InitProg par l exemple InitProg par l exemple Martin Monperrus 16 décembre 2011 Ce cument illustre avec des programmes Ocamlcartes et Ocaml le polycopié du cours Initiation à la programmation (InitProg) de l Université Lille

Plus en détail

LE BINAIRE ET LE CODAGE DES INFORMATIONS

LE BINAIRE ET LE CODAGE DES INFORMATIONS LE BINAIRE ET LE CODAGE DES INFORMATIONS Objectifs : Connaître le système binaire, le bit et l'octet. Comprendre le codage des informations en informatique I LE SYSTEME BINAIRE ) Le binaire L informatique

Plus en détail

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Optimisation de requêtes. I3009 Licence d informatique 2015/2016. Traitement des requêtes

Optimisation de requêtes. I3009 Licence d informatique 2015/2016. Traitement des requêtes Optimisation de requêtes I3009 Licence d informatique 2015/2016 Cours 5 - Optimisation de requêtes Stéphane.Gançarski Stephane.Gancarski@lip6.fr Traitement et exécution de requêtes Implémentation des opérateurs

Plus en détail

RECOGNITION ProductInfo

RECOGNITION ProductInfo RECOGNITION Product Info Indexation automatique à l aide de la reconnaissance de texte et de codes barres RECOGNITION vous permet de classer les documents encore plus rapidement dans DocuWare en capturant

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

Plus en détail