Devoir Python : Soundex

Présentation

Soundex est un algorithme phonétique d'indexation de noms par leur prononciation. L'objectif de base est que les noms ayant la même prononciation soient codés avec la même chaîne, de manière à pouvoir trouver une correspondance entre eux malgré des différences mineures d'écriture.

Soundex a été conçu par Robert Russell et Margaret King Odell et breveté en 1918 et 1922.

Le code soundex consiste pour chaque nom en une association d'une lettre suivie de trois chiffres : la lettre correspond à la 1ère du nom, et les chiffres encodent les consonnes restantes. Les consonnes à prononciation similaire ont le même code, donc, par exemple, les lettres B et P sont toutes codées « 1 ». Les voyelles peuvent influencer le code d'une consonne, mais ne sont jamais codées directement (sauf bien sûr si c'est la première lettre du nom).

L'algorithme exact procède comme suit :

  • Supprimer les éventuels 'espaces' et les tirets.
  • Mettre le mot en majuscule
  • Garder la première lettre
  • Conserver la première lettre de la chaîne
  • Supprimer toutes les occurrences des lettres : a, e, h, i, o, u, w, y (à moins que ce ne soit la première lettre du nom)
  • Attribuer une valeur numérique aux lettres restantes de la manière suivante :
    • 1 = B, P
    • 2 = C, K, Q
    • 3 = D, T
    • 4 = L
    • 5 = M, N
    • 6 = R
    • 7 = G, J
    • 8 = X, Z, S
    • 9 = F, V
  • Si deux lettres (ou plus) avec le même nombre sont adjacentes dans le nom d'origine, ou s'il n'y a qu'un h ou un w entre elles, alors on ne retient que la première de ces lettres.
  • Renvoyer les quatre premiers octets complétés par des zéros.

En effectuant cet algorithme, on obtient avec "Robert" et "Rupert" la même chaîne : "R163", tandis que "Rubin" donne "R150".

Travail demandé

Préparation

Voir le code

  • L'ouvrir avec Pyzo (ou l'IDE de votre choix)
  • Le sauvegarder aussitôt sous le nom : soundex_nom.py

Le devoir comporte 6 parties (à peu près) indépendantes.

Le fichier comporte du code à compléter, dans des zones repérées par des # commentaires .

En cas d’échec à répondre à une question :

  • commenter votre tentative (en ajoutant le caractère # devant) : ne pas l'effacer, elle peut valoir des points !
  • dé-commenter la solution alternative proposée (en supprimant le caractère # devant) : la suite peut alors être traitée normalement.

Il est ainsi possible de continuer le devoir ...

A la fin du devoir, le fichier devra être déposé par l'intermédiaire de l'espace de dépôt en bas de cette page.

Conversion en lettres majuscules

Compléter l'instruction de la ligne suivante de façon à obtenir soundex1 : une chaîne de caractères en lettres majuscules, en utilisant la méthode .upper() .

Documentation de la méthode .upper() :

 

Suppression des caractères indésirables

Compléter la partie de code suivante en remplaçant les ??? par "ce qu'il faut" pour que la fonctionnalité soit remplie.

 

Conversion des consonnes en chiffres

Compléter la partie de code suivante en remplaçant les ??? par "ce qu'il faut" pour que la fonctionnalité soit remplie.

 

Suppression des doublons consécutifs

Compléter la partie de code suivante en remplaçant les ??? par "ce qu'il faut" pour que la fonctionnalité soit remplie.

 

Rajout éventuel de "0" pour atteindre 4 caractères

Compléter la partie de code suivante en remplaçant les ??? par "ce qu'il faut" pour que la fonctionnalité soit remplie.

 

Renvoi des 4 premiers caractères

Écrire les instructions permettant à la fonction de retourner la chaîne de 4 caractères correspondant au code Soundex du nom passé en argument.
 

Dépôt de la copie

  • Déposer la copie en cliquant sur + Ajouter des fichiers
  • Cliquer sur Téléverser ...
  • puis actualiser la page pour vérifier le dépôt.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

code