Secteur TAL Informatique
ILPGA Université Paris 3
Parcours TAL : step 3
TP3 : Programmation avec Perl (1)
Les réponses aux questions du TP doivent être enregistrées dans un fichier au format WORD ou TXT. Le texte des programmes construits seront insérés dans ce fichier. L'intégralité du fichier sera imprimé ou mis sur disquette.
Les réponses et les programmes fournis devront être commentés.
Série d'exercices PERL n°1
Exercice 1 :
Copiez le texte du programme suivant dans un fichier (par copier-coller) et exécutez le :
#!/usr/local/bin/perl
# ce programme affiche "bonjour tout le monde"
print "bonjour tout le monde\n";
Exercice 2 :
Ecrire un programme qui crée trois variables $var1, $var2 et $var3 auxquelles vous affecterez les valeurs 33, 44 et 55 respectivement.
- affichez les valeurs de chaque variable en sortie.
- créez une variable $somme dans laquelle vous mettrez la somme des valeurs de chaque variable : $var1 + $ var2, $var1 + $var3... Affichez la valeur de $somme et des variables utilisées pour produire cette somme.
- créez une variable $produit dans laquelle vous mettrez le produit des valeurs de chaque variable : même remarque que ci-dessus
- Permutez les valeurs de $var1, $var2 et $var3. C'est à dire que $var1 vaudra ce que valait $var2, $var2 ce que valait $var3, et $var3 ce que valait $var1. Pour cela vous créerez une variable temporaire $tmp..
Exercice 3 :
La mort des amants
Nous aurons des lits pleins d'odeurs légères,
Des divans profonds comme des tombeaux,
Et d'étranges fleurs sur des étagères,
Ecloses pour nous sous des cieux plus beaux.
Usant à l'envi leurs chaleurs dernières,
Nos deux coeurs seront deux vastes flambeaux,
Qui réfléchiront leurs doubles lumières
Dans nos deux esprits, ces miroirs jumeaux.
Un soir fait de rose et de bleu mystique,
Nous échangerons un éclair unique,
Comme un long sanglot, tout chargé d'adieux;
Et plus tard un Ange, entr'ouvrant les portes,
Viendra ranimer,
fidèle et joyeux,
Les miroirs ternis et les flammes mortes.
Charles Baudelaire
1. Sauvegardez le poème ci-dessus dans un fichier poeme.txt.
Ecrire un programme qui ouvre le fichier poeme.txt et qui écrit
dans un deuxième fichier moteneau.txt les seules lignes qui contiennent
la séquence de caractères "eau".
2. Vous réecrirez le programme pour numéroter toutes
les lignes qui contiennent la même séquence
3. Créez un nouveau programme pour produire dans un nouveau
fichier contenant le premier mot de chaque vers.
4. Idem avec le dernier mot.
Exercice 4 :
A partir du fichier poeme.txt, construire un programme qui produit
en sortie le poème précédent dans lequel vous remplacerez
la forme graphique "les" par "des".
Modifiez ce programme pour modifier les séquences "un", "deux"...
par "1", "2"...
Exercice 5:
A partir des différentes versions du corpus prématurés,
construire un programme pour réaliser une extraction de la forme
"contact".
L'examen de toutes les occurrences de la forme contact doit permettre
de dégager son emploi dans le corpus :
- nombre de bébés concernés ;
- nombre d'infirmières employant ce mot ;
- emploi avec un verbe ou non ;
emploi singulier ou pluriel ;
Se reporter au TP1.
Exercice 6 :
Dans le corpus des bébés prématurés (prem96.bal), vous extrairez le champ texte (balise <TXT>) pour toutes les fiches concernant le bébé 2.
Exercice 7 :
Ce programme perl fournit sur la sortie standard l'ossature d'une page HTML : les balises de l'entête et celles du corps. Modifiez-le de façon à ce qu'il crée, dans le corps de la page, une liste numérotée. Les éléments de cette liste seront les lignes lues sur l'entrée standard (on lira toutes les lignes jusqu'a l'arrivée de fin de fichier sur l'entrée standard, et pour chaque ligne on créera un nouvel item de la liste en sortie). Le programme utilisera la première ligne aussi comme le titre de la page HTML. Appliquez le programme à ce poème, pour obtenir ce résultat.
Exercice 8:
Construire un programme qui compte le nombre de mots contenus dans fichier. Appliquez ce programme au poème de Baudelaire.
Exercice 9 :
En utilisant le programme perl qui fournit l'ossature d'une page HTML, vous ferez en sorte qu'il lise deux fichiers (que vous ouvrirez à l'intérieur de votre programme). Vous créerez un tableau qui contiendra autant de lignes qu'il y a de lignes dans les fichiers lus. Chaque ligne du tableau contiendra deux cellules (colonnes) : dans la première cellule de la ligne n du tableau il y aura la ligne n du premier fichier, et dans la deuxième cellule la ligne n du deuxieme fichier. Vous modifierez le programme pour que le tableau contienne une colonne de plus qui sera le numéro de ligne. Vous appliquerez le programme aux versions en francais et en anglais de Therèse Desqueyroux (de Francois Mauriac) pour obtenir ce résultat
Manipulation, Constitution de dictionnaires et de nouveaux corpus
- Construire un programme qui lit un état quelconque du corpus et compte le nombre de ligne du fichier lu.
- Construire un programme qui lit un état quelconque du corpus et compte le nombre de mot du fichier lu : pour obtenir le nombre de mots d'une phrase, il suffit de compter le nombre d'espaces et d'ajouter 1.
Partie 1 : Construction de dictionnaires
Cette partie vise à la construction de dictionnaire à partir de différents états du corpus.
- Construire un (ou plusieurs) programme(s) qui doit lire les corpus bébés et infirmières et construire pour chacun de ces corpus un dictionnaire contenant toutes les formes graphiques de ces corpus.
Partie 2 : Constitution des corpus
Cette partie vise à la construction de nouveaux états du corpus à partir de données textuelles diverses. Il s'agira en particulier de voir comment a été construit la version HTML du corpus : i.e. comment passer des fichiers au format TXT vers des fichiers au format HTML.
- Construire un programme qui prend en entrée le fichier p96.bal et produit une version HTML de ce fichier.
- Construire un programme qui prend en entrée le fichier p96.bal et produit une version HTML de ce fichier. Les noms des champs devront apparaître dans la version HTML produite.
Partie 3 : Constitution d'un index au format HTML
Cette partie vise à la construction d'un index de fichiers. Un index étant la suite des mots d'un texte classés par ordre alphabétique. Cet index doit permettre de retrouver le mot en contexte. Il s'agit donc de construire cet index au format HTML. On doit pouvoir naviguer entre l'index et le texte associé : lecture du mot en contexte et inversement. Le fichier-index contiendra un mot par ligne et pour chaque mot la liste des fiches où ce mot apparaît. Appliquer ce programme aux versions textuelles du corpus prématurés décrites infra.
On présente ci-dessous les résultats produits par Rincon Rolland (Etudiant en Maîtrise 1999-2000) sur 2 versions du corpus PREM96 :
Récupération des versions textuelles
Plusieurs versions sont utilisables :
- la première, brute (p96.tab), est issue d'un tableur (un tableur manipule des cellules organisées en lignes et colonnes, et permet de faire calculer la valeur d'une cellule à partir du contenu d'une ou de plusieurs autres cellules). C'est la version qui a été constitué dans le service de réanimation néonatale à partir des fiches papier remplies par les infirmières. Dans ce fichier, le nombre débutant la ligne concatène le numéro de bébé, celui du jour de l'observation et celui de l'observation dans la journée.
- la seconde (p96.bal) nomme les différentes informations contenues dans une fiche sur un bébé un jour donné à un moment déterminé.
- On dispose aussi de (p96.fic) qui regroupe toutes les fiches.
- Enfin, on dispose de (p96.tag) qui correspond à une version étiquetée du corpus bébé
La première version (p96.tab)
est disponible (au format HTML) : visualisation p96tab.htm.
La seconde version (p96.bal)
est disponible (au format HTML) : visualisation p96bal.htm.
La première version (p96.tab)
est disponible (au format TXT) : visualisation p96.tab.
La seconde version (p96.bal)
est disponible (au format TXT) : visualisation p96.bal.
La version (p96.fic)
est disponible (au format TXT) : visualisation p96.fic.
La version (p96.tag)
est disponible (au format TXT) : visualisation p96.tag.
Pour la visualisation des versions textuelles brutes, une étape de téléchargement est parfois nécessaire. Si tel est le cas placer le fichier cherché dans votre environnement de travail avant de le manipuler.