Entonces, ¿hay algún tipo de algoritmo de que puede dar un porcentaje de cómo similares es una entrada a otro?
Algoritmos como Soundex y distancias de edición (como se sugirió en una publicación anterior) pueden resolver algunos de sus problemas. Sin embargo, si realmente quiere limpiar sus datos, esto no será suficiente. Como otros han declarado "Bill", no suena como "William".
La mejor solución que he encontrado es usar un algoritmo de reducción y una tabla para reducir los nombres a su nombre de raíz.
Para la tabla de dirección regular, agregar-Raíces versiones de los nombres, por ejemplo Persona (Nombre, RootFirstName, Apellido, Rootsurname ....)
Ahora, cree una tabla de asignación. FirstNameMappings (clave principal Nombre, RootName)
pueblan su tabla de asignación por: INSERT IGNORE (SELECT Nombre, "indefinido" de la persona) en FirstNameMappings
Esto agregará todos firstnames que tiene en su mesa persona junto con el RootName de "indefinido"
Ahora, por desgracia, tendrá que pasar por todos los primeros nombres únicos y asignarlos a un RootName. Por ejemplo, "Bill", "Billl" y "Will" deberían traducirse a "William" Esto lleva mucho tiempo, pero si la calidad de los datos es realmente importante para usted, creo que es una de las mejores maneras.
Ahora use la tabla de asignación recién creada para actualizar el campo "Rootfirstname" en su tabla Person. Repita para el apellido y la dirección. Una vez hecho esto, debería poder detectar duplicados sin sufrir errores ortográficos.
¿Cómo detectaría esto a Bill = William? Su problema es duplicados, no errores ortográficos en duplicados exactos. –