[#2a00d4]Bonjour tout le monde,
Ma prof d'info nous a donné 2 exercices en cours mais j'ai quelques difficultés pour le faire. Je prends tous conseils, toute aide de ceux qui pourront m aider...
Merci d'avance Marine [/#b80046]
[#2a00d4]Voila mes exercices :[/#b80046]
Ex 1. Algorithme du SOUNDEX:
L’algorithme du Soundex est une méthode qui permet de traduire un nom en code phonétique et de regrouper les
noms qui ont de légères variantes orthographiques (étaient mal épellés), ex. Kup`s`c, Kup´sc, Kupsc, Kupcs, Kupesc,
Kupsec ont le même code (K120) pour la prononciation anglaise. Cette méthode est utilisé par les bureaux des
archives, des bibliothèques et en généalogie pour retrouver les noms qui auraient subi une transformation due à
une faute de recopie.
Ecrivez le script Python qui transforme les noms en code phonétique selon l’algorithme du Sundex (pour le
français):
-supprimer les éventuels espaces initiaux ou intérieurs
-remplacer tous les caractères accentués par leurs équivalents non accentués, par exemple, à, ä, â)a (attention
au codage!!!!)
-mettre le mot en majuscule
-garder la première lettre
-supprimer les lettres A, E, I, O, U, Y, H et W
-remplacer les lettres restantes par le chiffre associé:
* B, P=>1
* C, K, Q=>2
* D, T=>3
* L =>4
* M, N=>5
* R=>6
* G, J=>7
* X, Z, S=>8
* F, V=>9
-supprimer les chiffres répétés (garder une occurrence)
si le code obtenu contient moins de 4 éléments, compléter à droite par des zéros, e.g., K12;K120
si le code obtenu contient plus de 4 éléments, conserver les 4 éléments les plus `a gauche, e.g.: K13674 ;
K136
format du code final: Lettre Chiffre Chiffre Chiffre
Testez le script avec les mots suivants: Thibout, Thiebout, Tibout ; T130; Teullé, Teulle, Teulé, Tuelle ; T400.
Ajoutez d’autres mots à la liste dans le fichier names.txt (codage iso-8859-1) et testez le script avec les
noms introduits (lus) à partir du fichier.
Obtenez-vous toujours la bonne représentation? Avez-vous toujours le même code pour les noms qui ont la
prononciation identique? Proposez des modifications et essayez de les incorporer dans le script.
A RENDRE: le script Python qui marche, le fichier names.txt avec les noms ajoutés et les réponses aux questions.
[b]Ex 2. Troncation des mots en français (ang. stemming)
Développez un script Python qui supprime les suffixes de mots et donne comme le résultat la base morphologique
(un radical, un stem) du mot.
1. télécharger et installer la bibliothèque nltk de Python selon les instructions sur:
http://nltk.sourceforge.net/index.php/Installation
2. utilisez le module stem de la bibliothèque nltk et des expressions régulières pour développer un stemmer
de verbes franc¸ais:
lancez le script simple.py distribué avec le devoir
ajoutez d’autres suffixes verbaux au motif patterns:
patterns = "ais?$|ez$"
$ indique la fin de la chaïne (du mot), donc ez$ signifie la terminaison (suffixe) ez du mot
ATTENTION: la méthode stem supprime l’affixe (pas de remplacement!)
testez le script avec les formes du verbe parler: parler, parlai, parlais, parlait, parlez, parlions, parlons,
parlaient, parlent, . . .
modifiez le script pour appliquer la troncation aux mots les plus fréquents (>15) dans le fichier
french.txt ci-joint, codage iso-8859-1 (établissez automatiquement, i.e., en Python, la liste
de mots les plus fréquents ; cours 7, S1); pour couper le texte en mots (tokenisation), soit utilisez
votre m´ethode du devoir 6 (S1), soit la m´ethode WordTokenizer du module nltk.tokenize:
from nltk.tokenize import WordTokenizer # importer la methode
tokenizer = WordTokenizer() # variable pour tokenisation
line = "_Je vous dedie ce livre, qui est pour ainsi votre oeuvre. Il y a"
words = tokenizer.tokenize(line) # liste de mots
Analysez les résultats. Obtenez-vous toujours de bonnes formes? Quels problèmes avez-vous rencontré?
3. consultez l’algorithme de troncation basé sur des heuristiques (Porter stemmer), la version pour le franc¸ais,
disponible sur le site: http://snowball.tartarus.org/algor [...] emmer.html
(texte en anglais!)
Utilisez-le pour améliorer la troncation des verbes et/ou pour ajouter la troncation des autres formes. Pour
remplacer l’affixe avec un autre ou ajouter un, utilisez par exemple la méthode re.sub (du module re,
cours 2, S2) ou bien replace (la m´ethode de l’objet string, cours 6, S1).
A RENDRE: le script simple.py modifié (changer le nom du fichier pour qu’il contienne votre nom, e.g.,
stemmer-kupsc.py), les réponses par rapport à l’analyse des résultats et modifications proposées.