·6 min de lectura

Fuzzy matching en listas de sanciones: cómo funciona y por qué importa

Entiende por qué la coincidencia exacta no es suficiente y cómo algoritmos como Jaro-Winkler y token sort ratio mejoran el screening de sanciones.

fuzzy matching sancionesJaro-Winklertoken sort ratiocoincidencia difusascreening nombres

¿Por qué la coincidencia exacta no es suficiente?

Cuando verificas un nombre contra una lista de sanciones, tu primer instinto podría ser buscar una coincidencia exacta. Pero en la práctica, esto falla constantemente:

Una búsqueda exacta no encuentra ninguna de estas coincidencias. Y no encontrar una coincidencia real es peor que un falso positivo— significa que estás haciendo negocios con una entidad sancionada sin saberlo.

¿Qué es fuzzy matching?

El fuzzy matching(coincidencia difusa) es un conjunto de técnicas algorítmicas que permiten encontrar cadenas de texto que son similares pero no idénticas. En lugar de un resultado binario (match/no match), retorna un score de similitud entre 0 y 1.

AmigoApi utiliza 6 métricas de fuzzy matching simultáneamente y las combina en un composite scoreponderado. Un enfoque multi-métrica reduce tanto falsos positivos como falsos negativos porque cada algoritmo es fuerte en diferentes tipos de variaciones.

1. Token Sort Ratio (35% del peso)

Este algoritmo normaliza el orden de las palabras antes de comparar. Es la métrica con mayor peso porque en listas de sanciones los nombres suelen estar en diferente orden:

Es especialmente útil para nombres hispanos, donde el orden nombre-apellido puede variar entre fuentes.

2. Token Set Ratio (20% del peso)

Similar al token sort, pero maneja subconjuntos y superconjuntos de palabras. Es crucial cuando un nombre tiene palabras adicionales:

Esto es común con nombres de empresas mexicanas que incluyen razón social (SA de CV, S de RL, etc.) en algunas fuentes pero no en otras.

3. Similitud por Trigramas (20% del peso)

Los trigramas son secuencias de 3 caracteres consecutivos. Este método compara cuántos trigramas comparten dos cadenas. AmigoApi usa la extensión pg_trgm de PostgreSQLpara calcular esto directamente en la base de datos durante la fase de recuperación de candidatos, lo que hace el proceso extremadamente rápido.

4. Ratio Simple (10% del peso)

Similitud básica carácter a carácter usando el algoritmo de secuencia común más larga. Funciona como baseline para nombres muy similares con diferencias menores.

5. Jaro-Winkler (10% del peso)

El algoritmo Jaro-Winkler mide la similitud entre dos cadenas considerando:

Es particularmente efectivo para detectar errores tipográficos: “GONZALEZ” vs “GONZALES” obtiene un score de ~0.96, mientras que nombres completamente diferentes obtienen scores bajos.

6. Búsqueda Fonética con Double Metaphone (5% bonus)

Esta es una característica distintiva de AmigoApi. El matching fonético compara cómo suenan los nombres, no cómo se escriben. Utilizamos el algoritmo Double Metaphone, que genera dos códigos fonéticos posibles por palabra para manejar ambigüedades de pronunciación.

Funciona así:

  1. Cada palabra del nombre se convierte a un código fonético Double Metaphone.
  2. Los códigos se precalculan y almacenan para cada entidad en la base de datos.
  3. Al buscar, se comparan los códigos fonéticos del query con los de cada candidato.
  4. Si los códigos del query son un subconjunto de los códigos de la entidad, hay match fonético.

Esto detecta coincidencias como:

Composite Score

Ningún algoritmo individual es perfecto para todos los casos. Por eso AmigoApi combina las 6 métricas en un composite score ponderado:

"scores": {
  "composite": 0.875,
  "token_sort_ratio": 0.901,   // 35%
  "token_set_ratio": 0.856,    // 20%
  "trigram": 0.890,             // 20%
  "ratio": 0.723,              // 10%
  "jaro_winkler": 0.876,       // 10%
  "phonetic_match": true        // 5% bonus
}

Además, para entidades mexicanas, la coincidencia exacta de RFCse evalúa por separado y retorna un score de 1.0, eliminando ambigüedades cuando el identificador fiscal coincide.

Configurando el threshold

El thresholdes el score mínimo para que una coincidencia sea reportada. AmigoApi te permite configurarlo por request (rango 0.0 a 1.0):

¿Quieres ver el fuzzy matching en acción? Prueba nuestra demo en vivo— haz click en las métricas de scoring para ver cómo funciona cada una.

Artículos relacionados

¿Listo para automatizar tu screening de sanciones?

AmigoApi es la única API self-service de listas negras en Latinoamérica. Un endpoint, todas las listas.