← Todos los artículos

Fuzzy Matching en direcciones: cómo detectar duplicados pese a errores

También disponible en:DeutschEnglishFrançais
La comparación aproximada de direcciones encuentra duplicados a pesar de las diferentes grafías

Dos registros, la misma persona, pero el ordenador no lo reconoce. «Juan García, C/ Principal 12» y «J. García, Calle Principal 12» son obviamente idénticos para cualquier persona. Para una comparación carácter a carácter, son dos entradas completamente distintas.

Aquí es exactamente donde entra en juego el fuzzy matching. En lugar de exigir una coincidencia exacta, calcula el grado de similitud entre dos cadenas de caracteres. El resultado no es un simple sí o no, sino un porcentaje: 95 % de similitud, 72 %, 41 %. Por encima de un umbral definido, un par se clasifica como duplicado.

Para las empresas que procesan datos de direcciones regularmente, el fuzzy matching no es un lujo. Es la diferencia entre una tasa de detección de duplicados del 20 % (comparación exacta) y del 85 % o más.

Qué diferencia al fuzzy matching de la comparación exacta

Una comparación exacta funciona de forma binaria: dos cadenas son idénticas o no lo son. Esto funciona mientras los datos estén perfectamente mantenidos, algo que en la práctica nunca ocurre.

Comparación exacta:
"Juan García"     vs. "Juan García"      → Coincidencia ✓
"Juan García"     vs. "Juan Garcia"      → Sin coincidencia ✗
"Juan García"     vs. "juan garcía"      → Sin coincidencia ✗
"Juan García"     vs. "Juan  García"     → Sin coincidencia ✗ (doble espacio)

El fuzzy matching calcula una puntuación de similitud:

Fuzzy matching:
"Juan García"     vs. "Juan Garcia"      → 93 % de similitud → Duplicado
"Juan García"     vs. "juan garcía"      → 100 % (tras normalización)
"Juan García"     vs. "Juan  García"     → 95 % → Duplicado
"Juan García"     vs. "María López"      → 30 % → No es duplicado

La ventaja decisiva: el fuzzy matching detecta errores tipográficos, variantes ortográficas, abreviaturas y diferencias de formato – exactamente los errores que aparecen masivamente en las bases de datos de direcciones reales.

Los cinco algoritmos más importantes

Detrás del término fuzzy matching hay varios algoritmos que calculan la similitud de diferentes maneras.

Distancia de Levenshtein

El algoritmo más conocido cuenta el número mínimo de operaciones elementales (inserción, eliminación, sustitución) necesarias para transformar una cadena en otra.

"García" → "Garcia"
Paso 1: í → i  (Sustitución)
Distancia: 1

"Calle Principal" → "C/ Principal"
Paso 1: a → / (Sustitución)
Paso 2: l → (Eliminación)
Paso 3: l → (Eliminación)
Paso 4: e → (Eliminación)
Paso 5: _ → (Eliminación del espacio)
Distancia: 5

La distancia se convierte en un valor de similitud: 1 - (distancia / longitud de la cadena más larga). Para «García» (6 caracteres) y «Garcia» (6 caracteres), el resultado es 1 - 1/6 = 83 %.

Fortaleza: Intuitivo, detecta errores tipográficos de forma fiable. Debilidad: Trata todas las posiciones de la cadena de igual manera.

Similitud de Jaro-Winkler

Este algoritmo fue diseñado específicamente para comparar nombres de personas. Tiene en cuenta el número de caracteres coincidentes y su orden. La extensión Winkler añade una bonificación cuando los primeros caracteres coinciden.

Ejemplos de Jaro-Winkler:
"González" vs. "Gonzalez"  → 95 % de similitud
"Rodríguez" vs. "Rodriguez" → 94 % de similitud
"Stefan"   vs. "Esteban"   → 62 % de similitud
"Pedro"    vs. "Pablo"     → 53 % de similitud

Fortaleza: Especialmente preciso para cadenas cortas como nombres y apellidos. Debilidad: Menos adecuado que Levenshtein para cadenas largas como direcciones completas.

Comparación por N-Gramas

Este enfoque divide ambas cadenas en fragmentos de longitud fija (N-gramas) y compara la superposición.

Bi-gramas (N=2) de "García":
{Ga, ar, rc, cí, ía}

Bi-gramas de "Garcia":
{Ga, ar, rc, ci, ia}

Bi-gramas comunes: {Ga, ar, rc} = 3
Unión: {Ga, ar, rc, cí, ía, ci, ia} = 7
Similitud de Jaccard: 3/7 = 43 %

Fortaleza: Robusto frente a transposiciones y reordenamientos. Escala bien para grandes volúmenes de datos. Debilidad: Poco significativo para cadenas muy cortas.

Algoritmos fonéticos (Soundex y fonética de Colonia)

Los algoritmos fonéticos convierten las cadenas en códigos sonoros. Los nombres que suenan igual reciben el mismo código, independientemente de la ortografía.

Soundex:
"Smith"   → S530
"Smyth"   → S530
→ Mismo código pese a diferente ortografía

Fonética de Colonia (optimizada para el alemán):
"Mueller" → 657
"Müller"  → 657
→ Tratados como idénticos

Fortaleza: Detecta variantes que los algoritmos basados en texto no captan. Debilidad: Solo proporciona un resultado sí/no, no una puntuación de similitud.

Comparación ponderada TF-IDF

Este enfoque otorga más peso a los componentes raros de una dirección. Una coincidencia en un apellido poco frecuente es una señal más fuerte que una coincidencia en «García» o «López».

ComponenteFrecuenciaPeso
«García» (apellido)Muy frecuenteBajo
«Zbigniew» (nombre)RaroAlto
«Calle de los Castaños»MedioMedio
«12a» (número)Estándar

Fortaleza: Reduce drásticamente los falsos positivos en apellidos frecuentes. Debilidad: Requiere una base de referencia para el cálculo de frecuencias.

Cómo funciona el fuzzy matching en direcciones en la práctica

En la práctica, el fuzzy matching no se aplica a la dirección completa como una sola cadena. Cada campo se compara por separado y los resultados individuales se combinan en una puntuación global.

Registro A: Juan García | C/ Principal 12 | 28001 Madrid
Registro B: J. Garcia | Calle Principal 12 | 28001 Madrid

Comparación por campos:
Nombre:        "Juan" vs. "J."              → Jaro-Winkler: 68 %
Apellido:      "García" vs. "Garcia"        → Levenshtein: 83 %
Calle:         "C/ Principal" vs. "Calle Principal" → Normalizado: 100 %
Número:        "12" vs. "12"               → Exacto: 100 %
Código postal: "28001" vs. "28001"          → Exacto: 100 %
Ciudad:        "Madrid" vs. "Madrid"        → Exacto: 100 %

Puntuación global ponderada:
(68 % × 0,15) + (83 % × 0,30) + (100 % × 0,20) + (100 % × 0,15) + (100 % × 0,15) + (100 % × 0,05)
= 10,20 + 24,90 + 20,00 + 15,00 + 15,00 + 5,00
= 90,10 % → Por encima del umbral (80 %) → Duplicado detectado

Tipos de errores frecuentes y cómo los gestiona el fuzzy matching

Tipo de errorEjemploAlgoritmo adecuado
AbreviaturasC/ vs. Calle, Av. vs. AvenidaNormalización (diccionario)
Errores tipográficos«Schmdit» en lugar de «Schmidt»Levenshtein
Variantes de nombres«Juan» vs. «Juan Carlos»Jaro-Winkler + lista de apodos
Orden de campos«García, Juan» vs. «Juan García»N-Grama + parsing
Campos faltantesCódigo postal presente, ciudad ausenteComparación ponderada
Variantes fonéticas«Meyer» vs. «Meier» vs. «Maier»Algoritmos fonéticos
Acentos«García» vs. «Garcia»Normalización

Los sistemas profesionales combinan varios de estos algoritmos: primero normalizan los datos, luego aplican fuzzy matching campo a campo y calculan una puntuación global ponderada.

Elegir el umbral correcto

El umbral determina a partir de qué grado de similitud dos registros se consideran duplicados.

Demasiado bajo (ej. 60 %): Encuentra muchos duplicados, pero también muchos falsos positivos.

Demasiado alto (ej. 95 %): Solo detecta duplicados evidentes, las variantes sutiles se escapan.

Recomendación práctica: Comience con el 80 % y revise manualmente entre 50 y 100 resultados. Ajuste según la relación entre tasa de detección y falsos positivos.

Impacto del umbral en 10.000 registros:

Umbral   | Duplicados encontrados | Falsos positivos | Duplicados no detectados
95 %     | 120                    | ~2 %             | ~40 %
85 %     | 280                    | ~5 %             | ~15 %
80 %     | 350                    | ~8 %             | ~8 %
70 %     | 520                    | ~20 %            | ~3 %

Un umbral cercano al 80 % ofrece el mejor equilibrio para la mayoría de los casos de uso.

Por qué las hojas de cálculo no son suficientes para el fuzzy matching

Excel ofrece funciones como COINCIDIR y CONTAR.SI para búsquedas exactas de duplicados. El fuzzy matching solo es posible a través de soluciones indirectas como macros VBA.

Las limitaciones de las hojas de cálculo:

Para listas de menos de 500 entradas, un enfoque manual en Excel puede funcionar. A partir de 1.000 registros se vuelve impracticable. Para más información, consulte nuestro artículo Eliminar direcciones duplicadas en Excel.

Herramientas especializadas como ListenFix implementan todos los algoritmos de fuzzy matching habituales y los combinan automáticamente. El procesamiento se ejecuta localmente en su ordenador, sin transmitir datos de direcciones a servidores externos. Conforme con el RGPD, con validación de códigos postales para 29 países y detección de hogares que va más allá de la simple deduplicación.

El fuzzy matching en la práctica: tres escenarios

Escenario 1: Limpieza anual del CRM

Una empresa mediana con 25.000 direcciones de clientes realiza una limpieza anual. Tasa típica de duplicados: 8 a 12 %.

Ejemplo de cálculo: Con un 10 % de duplicados y un correo postal directo a 0,28 EUR por envío, la deduplicación ahorra 2.500 × 0,28 EUR = 700 EUR por campaña. Con cuatro campañas al año, eso suma 2.800 EUR, sin contar las devoluciones y la irritación de los clientes.

Escenario 2: Fusión de dos bases de datos

Tras una fusión empresarial, dos sistemas CRM deben consolidarse. Sin fuzzy matching, surgen miles de duplicados fantasma que obstaculizan las ventas y el marketing durante años.

Escenario 3: Verificación en tiempo real durante la captura de datos

Cada nueva dirección se compara con la base existente en tiempo real. Esto evita que los duplicados se creen desde el principio – el enfoque más efectivo, aunque técnicamente el más exigente.

Para más información sobre qué métodos se adaptan a cada caso de uso, consulte nuestro resumen Detección de duplicados: 7 métodos para datos limpios.

Cómo empezar con el fuzzy matching

El fuzzy matching no requiere conocimientos especializados, pero sí las herramientas adecuadas. Los pasos clave para comenzar:

  1. Normalice sus datos: Antes de aplicar fuzzy matching, unifique el formato de sus datos. Desarrolle abreviaturas, estandarice caracteres especiales, limpie espacios.

  2. Elija el algoritmo adecuado: Para nombres de personas, Jaro-Winkler funciona mejor. Para nombres de calles y cadenas largas, Levenshtein es la mejor opción. Lo ideal es combinar varios algoritmos.

  3. Calibre el umbral: Comience con el 80 % y revise manualmente entre 50 y 100 resultados. Ajuste hasta encontrar el equilibrio entre tasa de detección y falsos positivos.

  4. Revise los resultados: Ningún algoritmo es perfecto. Planifique tiempo para un control por muestreo, especialmente en la primera ejecución.

  5. Repita regularmente: La calidad de datos no es un proyecto puntual. Planifique al menos una limpieza anual, idealmente complementada con verificaciones en tiempo real durante la captura.

El esfuerzo merece la pena. Datos de direcciones limpios significan menos devoluciones, análisis más precisos y una comunicación con el cliente más profesional – en cada envío.

Limpia tus direcciones — pruébalo ahora

ListenFix detecta significativamente más duplicados que Excel gracias al fuzzy matching. 100% sin conexión, compatible con RGPD.

Probar gratis