Soundex
La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la
versión revisada el 1 de marzo de 2021; las comprobaciones requieren
2 ediciones .
Soundex : uno de los algoritmos para comparar cuerdas por su sonido; establece el mismo índice para las cadenas que suenan de forma similar en inglés .
Desarrollado por Robert C. Russel y Margaret King Odell y patentado en 1918 y 1922 [1] [2] , es históricamente el primer algoritmo fonético . Se hizo popular en la década de 1960 después de que se le dedicaran varios artículos en Communications of the ACM y Journal of the ACM ; se hizo aún más famoso después de aparecer en El arte de la programación [3] de Knuth . Se ha utilizado como característica estándar en muchos RDBMS desde la década de 1980 .
Centrado inicialmente en la fonética del inglés americano, mediante modificaciones se puede aplicar a otras variantes e idiomas, pero en algunos casos se requieren cambios significativos (como, por ejemplo, en el algoritmo Deutsch-Mokotoff , que admite nombres propios en Idiomas yiddish y eslavo ). Posteriormente, también aparecieron alternativas que se centraban más en las palabras ordinarias del inglés que en los nombres propios (como Metaphone , Caverphone ).
Pasos del algoritmo
- Recuerda la primera letra de la palabra.
- Se eliminan todas las apariciones de h y w (excepto la primera letra de la palabra).
- Las consonantes se reemplazan por números del 1 al 6, y las letras de sonido similar corresponden a los mismos números:
- segundo, f, pag, v → 1
- c, gramo, j, k, q, s, x, z → 2
- re, t → 3
- l → 4
- metro, norte → 5
- r → 6
- Cualquier secuencia de dígitos idénticos se reduce a uno de esos dígitos.
- Todas las a , e , i , o , u , y se eliminan (excepto la primera letra de la palabra).
- Reemplaza el primer carácter con la letra memorizada en el paso 1, convirtiéndola en mayúscula.
- La cadena resultante se trunca a los primeros cuatro caracteres. Si la cadena es menor que la longitud requerida, los caracteres que faltan se reemplazan con un 0.
Ejemplos:
- amonio → a55o5iu5 → a5o5iu5 → a555 → A555
- implementación → i514e5e53a3io5 → i51455335 → i514 → I514
- Roberto = Rupert → R163 , Rubin → R150
- Ashcraft = Ashcroft → A261 (pero no A226 : las letras s y c en palabras darán un solo dígito 2 , no 22 , ya que están separadas por h ).
- Tymczak → T522 , no T520 (las letras z y k se reemplazan por 22 porque están separadas por una vocal).
Notas
- ↑ Patente de EE. UU. 1.261.167
- ↑ Patente de EE. UU. 1.435.663
- ↑ Donald Knuth . Parte 6. Buscar // El arte de la programación = El arte de la programación informática. - 2012. - V. 3. Clasificación y búsqueda. - art. 249.