You are on page 1of 2

IUT d'Orsay, Département Informatique Programmation, 1ère année, 2010-2011

Mini-Projet n° 2
Un peu de traitement automatique des langues
(à rendre au plus tard le mardi 16 novembre 2010 à midi)

On peut aborder le traitement automatique des langues, sujet vaste de recherche, par de petits
programmes simples qui donnent néanmoins des résultats intéressants. L’idée du mini-projet est
la suivante : on souhaite écrire un programme qui soit capable d’identifier automatiquement la
langue dans laquelle un texte est écrit. Pour cela, on commence par étudier des textes dans les
différentes langues possibles (ici, vous disposez d’un même texte issu des transcriptions des
débats du parlement européen en 4 langues : allemand, anglais, espagnol, français). Cette étude
(qui consiste à effectuer différents comptages sur les textes) permet ensuite de déterminer des
critères distinctifs entre ces langues. Il ne reste plus qu’à écrire un programme capable
d’identifier automatiquement les critères sur un texte de langue inconnue pour en déduire la
langue dans laquelle il est écrit.
________________________________
Travail demandé

1. Avant toutes choses, il faut prétraiter le texte pour qu’il soit facile à manipuler. Dans la
première partie du mini-projet, vous devez donc écrire un programme qui lit un texte à partir
de l’entrée standard jusqu'au caractère STOP='$', place les caractères dans un tableau, et qui,
dans ce tableau :
– remplace tous les caractères de ponctuation par un espace.
– remplace les fins de ligne par un espace.
– remplace toute suite de plusieurs espaces par un seul.
NB : pour lire une suite de caractères à partir de l’entrée standard, utiliser une lecture
caractère par caractère avec cin.get(c).
2. Ensuite vous devrez effectuer les comptages suivant :
– nombre total de caractères du texte,
– nombre de caractères majuscules,
– nombre de mots,
– longueur moyenne et maximale des mots du texte.
3. Par la suite, le programme devra indiquer le nombre d’occurrences de chaque lettre non
accentuée de l’alphabet (ie. pour les lettres de ’a’ à ’z’ - majuscules et minuscules
confondues), suivi de :
– la lettre la plus fréquente.
– la lettre la moins fréquente.

4. Modifier le programme afin que les données puissent être lues à partir d’un fichier à la place
du clavier. Pour cela vous utiliserez la fonction cin.eof()pour savoir quand arrêter la
lecture. La fonction cin.eof() retourne vrai quand on atteint la fin de fichier. Le reste du
programme est identique.

Pour lire des données à partir d’un fichier nommé fic.txt au lieu de les lire à partir du clavier,
vous avez deux options :
• sous CodeBlocks, on ajoute le fichier fic.txt à l’environnement de programmation de
la façon suivante :
o Menu Project → Set program arguments
o Ajouter ''<fic.txt ''
Puis compiler/exécuter le programme comme d’habitude.
• sous unix : exécuter le programme avec la commande suivante
o ./prog.exe < fic.txt
IUT d'Orsay, Département Informatique Programmation, 1ère année, 2010-2011

Exécuter le programme en utilisant les quatre textes, de différentes langues, qui sont disponibles
sur la page web de Mme Maynard
http://www.iut-orsay.fr/~maynard/C++/etudiants

5. Vous devrez ensuite conclure dans le dossier en faisant figurer un tableau comparatif des
résultats pour chaque langue et en le commentant pour mettre en évidence les critères qui sont
distinctifs d’une langue à l’autre.
6. Question subsidiaire (non obligatoire)
Ecrire un programme d’identification de la langue d’un texte selon les critères déterminés
dans la question précédente.

________________________________
Travail à rendre :

Vous devrez, dans le cadre de ce mini-projet, écrire un seul programme et constituer un dossier
qui contiendra :
1) une page de titre (nom des binômes, numéro de TP, sujet du mini-projet, date).
2) une page contenant une table des matières.
3) une introduction rappelant brièvement le sujet
4) les hypothèses de travail et les choix de programmation que vous avez du faire.
5) en cas de difficultés rencontrées ou de problème(s) non résolu(s), fournir les messages
d'erreurs produits et expliquez les tests effectués pour essayer de trouver votre erreur.
Signalez toute partie de votre programme que vous jugez défectueuse.
6) un jeu d'essais, complet et commenté, respectant les principes décrits dans l’annexe du
TD2, et permettant de convaincre votre lecteur que votre programmation est correcte.
Plusieurs remarques quant à l’écriture des jeux d’essais, peuvent être consultées sur le
document disponible à l’adresse suivante : http://www.iut-orsay.fr/~balkansk
(en particulier le lien intitulé "Pour les étudiants" puis celui intitulé "Comment constituer
un bon jeu d'essais").
7) une conclusion, indiquant l'avancement plus ou moins complet du travail, les difficultés
rencontrées, les améliorations et les extensions éventuelles apportées, ainsi que ce que le
projet vous a apporté.
8) Annexe 1 : le code source du programme dûment et pertinemment commenté.
9) Annexe 2 : une trace d'exécution du programme portant sur toutes les valeurs du jeu
d'essais, éventuellement commentée à la main, et montrant que le programme s’est
comporté de façon attendue, c'est-à-dire que les résultats obtenus sont identiques aux
résultats attendus décrits dans le jeu d’essai.

Ce dossier devra être remis, en fonction de ce qui vous sera précisé par votre chargé de TP, soit
sous forme électronique à l'adresse email de votre chargé de TP, soit sous forme papier dans son
casier, le tout au plus tard le Mardi 16 novembre à midi (aucun délai supplémentaire ne sera
accordé, une pénalité de 1 point sera appliquée par jour de retard).

You might also like