Aussi disponible en : English · Español · Português · العربية
Calculateur Soundex : chaque lettre, et la règle qui l’a décidée
Codez un nom de famille, voyez pourquoi chaque lettre a été retenue ou écartée, et repérez les graphies classées ensemble.
Qu’est-ce qu’un code Soundex ?
Un code Soundex est une clé d’index de quatre caractères pour un nom de famille : la première lettre, puis trois chiffres représentant les consonnes qui suivent. Washington donne W-252 et Lee donne L-000. L’intérêt est que des noms qui se prononcent pareil mais s’écrivent différemment tombent sur le même code et se retrouvaient donc classés ensemble, ce qui permet de retrouver un ancêtre dont un agent recenseur a noté le nom à l’oreille il y a un siècle.
Le codage lui-même tient en peu de règles. Six chiffres couvrent les consonnes — 1 pour B, F, P et V ; 2 pour C, G, J, K, Q, S, X et Z ; 3 pour D et T ; 4 pour L ; 5 pour M et N ; 6 pour R — et les lettres A, E, I, O, U, H, W et Y sont ignorées. Des zéros complètent un code trop court jusqu’à trois chiffres, et tout ce qui dépasse le troisième est jeté.
Ce que ce résumé masque, c’est que quatre autres règles décident quand une consonne n’est pas codée du tout, et c’est là que les implémentations divergent. Cette page affiche la règle qui s’est appliquée à chaque lettre, si bien qu’un code contestable peut être discuté plutôt que simplement mis en doute.
Comment l’utiliser
- Saisissez le nom. Le code apparaît aussitôt, avec le trait d’union après la lettre comme l’écrivent les archives. Chaque bouton d’exemple illustre une règle différente, dont les deux cas que les implémentations naïves ratent.
- Parcourez le tableau des lettres. Chaque caractère a sa ligne : codé par un chiffre, ignoré parce que c’est une voyelle, ou écarté avec le nom de la règle qui l’a écarté. Quand une lettre entre en collision avec une précédente, le tableau indique laquelle.
- Passez au mode comparaison. Collez une liste de graphies, une par ligne, et voyez lesquelles sont classées ensemble. C’est à cela que sert l’index, et les regroupements sont rarement ceux qu’on imagine.
La règle que presque tous ignorent
Il n’existe pas de norme Soundex. Pas de numéro ISO, pas de RFC, pas de comité : l’algorithme a circulé comme convention de classement bien avant que quiconque tente de le coucher par écrit, et ce qui subsiste comme référence est la page des Archives nationales américaines décrivant les règles du Soundex du recensement, la variante que tout le monde entend par Soundex américain. C’est une page web gouvernementale et non une spécification, et la précision compte, car elle change ce sur quoi on peut s’appuyer.
Ce qui la rend malgré tout utilisable, c’est qu’elle publie neuf exemples résolus et que, sur le plus difficile, elle fait ce que les spécifications ne font presque jamais : elle nomme la réponse qu’elle rejette. Si un H ou un W sépare deux consonnes de même code, la seconde n’est pas codée. Ashcraft se code A-261, et la page affirme sans détour que ce n’est pas A-226. Qu’on vous dise à quoi ressemble la mauvaise réponse est bien plus utile qu’on vous donne la bonne, puisque vous pouvez vous y confronter.
Ce test vaut la peine d’être mené. Trois implémentations publiées ont été confrontées aux neuf exemples pour cette page : deux les reproduisent toutes, et la troisième renvoie exactement A-226 pour Ashcraft, la valeur que les archives épellent précisément pour l’écarter. L’affirmation répandue selon laquelle tout le monde se trompe sur Soundex est donc fausse, et la version exacte est plus étroite et plus intéressante : la seule règle pour laquelle une autorité a jugé nécessaire de publier un démenti est celle qu’on continue d’omettre.
Cela pèse moins qu’on ne pourrait le craindre. Sur une liste anglaise de 168 551 mots, les deux lectures divergent sur 211 d’entre eux, environ un sur huit cents, car 293 seulement contiennent le motif. Mais la divergence n’a rien d’aléatoire : il faut un H ou un W entre deux consonnes de même classe, ce qui est exactement le cas d’Ashcraft, et de dishcloths, beachcombs ou highchairs. Quand la règle s’applique, elle change presque toujours le résultat.
La deuxième règle qui piège est plus subtile encore. La première lettre est conservée comme lettre, mais son numéro reste actif, de sorte qu’une consonne suivante partageant ce numéro est écartée. Pfister donne P-236 et non P-123, car le F est muet exactement au sens qui intéresse le codage : il partage le numéro du P. Une version qui ne commence à coder qu’à partir de la deuxième lettre échoue ici à tous les coups.
Ce qu’un code Soundex ne dit pas
Il ne dit pas que deux noms sont apparentés, seulement qu’ils entrent en collision. Schmidt et Smith donnent tous deux S-530, ce qui est le système fonctionnant exactement comme prévu sur les variantes de noms d’immigrants pour lesquelles il a été conçu : le C, le H et le D disparaissent en chemin. Mais Sanders, Saunders, Schneider et Snyder donnent tous S-536, et ce ne sont pas le même nom. Un code partagé est une raison de regarder, jamais une preuve.
Il laisse aussi filer des noms qu’on croirait qu’il devrait attraper. Ajoutez une syllabe et le code bouge : Smithers donne S-536, classé loin de Smith. Tout ce qui dépasse le troisième chiffre est jeté, si bien que les noms longs ne sont comparés que par leur début, et deux patronymes entièrement différents partageant quatre consonnes initiales deviennent indiscernables.
La règle des particules est une convention de classement plutôt qu’un algorithme, et l’appliquer mécaniquement échoue sur les propres exemples des archives. Un nom commençant par Van, Con, De, Di, La ou Le devrait être codé des deux façons, puisqu’il a pu être classé sous l’une ou l’autre ; mais Deusen, qui est l’exemple publié d’un nom dont la particule a déjà été retirée, commence lui-même par De, et Lee commence par Le. Aucune table de correspondance ne distingue une particule d’une première syllabe. Cette page propose le second code comme un second endroit où chercher et dit ce qu’il est, au lieu de l’appliquer en silence.
Une règle reste véritablement indéfinie. Le Y figure parmi les lettres à ignorer, mais les deux règles portant sur ce qui sépare deux consonnes de même numéro ne citent que les voyelles A, E, I, O et U d’un côté, et que le H et le W de l’autre. Le Y n’est dans aucune des deux listes : les règles publiées ne disent donc pas comment il se comporte, et cela change des réponses. Pyfer donne P-160 si le Y sépare et P-600 sinon. Toutes les implémentations examinées le traitent en séparateur, et cette page aussi, mais c’est une convention établie par l’usage et non une affirmation des archives.
Enfin, tout le schéma présuppose des structures consonantiques anglaises et un alphabet latin. Il n’a rien à dire du ton, des écritures qu’il ne sait pas lire, ni des nombreuses façons de mal entendre un nom qui ne mettent pas en jeu les classes de consonnes qu’il connaît. Si vous cherchez combien de modifications séparent deux chaînes plutôt que si elles se prononcent pareil, c’est une autre question avec une autre réponse, et l’outil de similarité de textes de ce site la mesure.
Pourquoi est-ce gratuit ?
Coder un nom de famille tient en quelques dizaines de lignes d’arithmétique, exécutées dans votre navigateur. Aucun serveur n’intervient, il n’y a donc rien à facturer ni de compte à créer.
Rien n’est envoyé. Les noms que vous saisissez ne quittent pas l’onglet, ce qui compte davantage qu’ailleurs ici, car on utilise presque toujours un outil Soundex parce qu’on fait des recherches sur une famille réelle.