Soundex

From Wikipedia, the free encyclopedia

Soundex est un algorithme phonétique d'indexation de noms par leur prononciation en anglais britannique. 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 est le plus largement connu des algorithmes phonétiques et est souvent utilisé incorrectement comme synonyme de « algorithme phonétique ».

Soundex a été conçu par Robert C. Russell et Margaret King-Odell et breveté en 1918 et 1922 (US patent 1,261,167 et 1,435,663). Une variante nommée American Soundex a été utilisée dans les années 1930 pour une analyse rétrospective des recensements américains entre 1890 et 1920[1].

Le code soundex s'est fait connaître dans les années 1960 lorsqu'il est devenu le sujet de nombreux articles dans les communiqués et le journal de l'Association for Computing Machinery, et tout spécialement décrit par Donald Knuth dans son magnum opus, The Art of Computer Programming.

Description

Le code soundex consiste pour chaque nom en une association d'une lettre suivie de trois chiffres : la lettre correspond à la 1re du nom, et les chiffres encodent les consonnes restantes[2]. Les consonnes à prononciation similaire ont le même code, donc, par exemple, les lettres B, F, P et V 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 :

  1. Supprimer les éventuelles 'espaces' initiales
  2. Mettre le mot en majuscule
  3. Conserver la première lettre de la chaîne
  4. 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)
  5. Attribuer une valeur numérique aux lettres restantes de la manière suivante :
    • Version pour l'anglais :
      • 1 = B, F, P, V
      • 2 = C, G, J, K, Q, S, X, Z
      • 3 = D, T
      • 4 = L
      • 5 = M, N
      • 6 = R
    • Version pour le français :
      • 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
  6. 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.
  7. 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".

Variantes et améliorations

Application

Liens externes

Related Articles

Wikiwand AI