Deduplicación difusa
Dos filas pueden describir al mismo cliente, producto o dirección sin compartir un solo carácter en cómo fueron escritas. Este endpoint compara registros por significado y forma en lugar de igualdad exacta de texto, y detecta que "Jon Pérez, Calle 4 Roble" y "Jonathan Pérez, C. 4 Roble" son la misma persona que cualquier revisor humano fusionaría a simple vista.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Por qué la coincidencia exacta falla en silencio
Un simple DISTINCT en SQL o una deduplicación basada en hash solo detecta filas idénticas byte por byte, lo cual suena estricto pero en realidad es la garantía más débil: se le escapa cada duplicado que nace de la variación humana. Alguien escribió "Av." en vez de "Avenida", un formulario capitalizó un nombre distinto en una segunda visita, un contacto se reingresó con una inicial que la primera vez no llevaba. Ninguno de estos casos es exactamente un error; es simplemente el ruido normal de datos capturados por personas distintas en momentos distintos, y la coincidencia exacta trata cada uno como un registro separado y sin relación.
Cómo funciona la comparación
Llame a POST /data/dedupe-semantic con sus filas y la tarea calcula un puntaje de similitud entre pares de registros a lo largo de los campos que designe, usando técnicas que toleran errores de tipeo, palabras en distinto orden, abreviaturas y coincidencias parciales en lugar de exigir texto idéntico. En vez de una respuesta binaria de sí o no, cada par candidato recibe una señal de similitud, y las filas que superan el umbral que defina se agrupan como duplicados en la respuesta, mientras el resto del archivo pasa intacto.
Decidir qué cuenta como duplicado
No existe una respuesta universal a qué tan parecido es suficientemente parecido: un CRM que fusiona contactos puede querer un umbral flexible que capture apodos y errores de tipeo, mientras que una lista de cumplimiento que revisa entidades sancionadas necesita uno estricto que evite falsos positivos. Usted controla qué campos alimentan la comparación y con qué peso se ponderan, así que una coincidencia por nombre y correo puede tratarse distinto de una coincidencia por nombre y fecha de nacimiento, y la tarea se adapta a lo que "duplicado" realmente significa para su conjunto de datos en vez de aplicar una regla fija.
El vacío que llena la comparación difusa
Las herramientas de deduplicación determinista existen desde las primeras bases de datos relacionales, construidas para un mundo donde la captura de datos seguía formularios estrictos. Los datos reales nunca han cumplido del todo esa suposición, y la brecha entre lo limpio en teoría y lo desordenado en la práctica es justo donde se acumulan en silencio, durante años, los registros de clientes duplicados, los tickets de soporte repetidos y los contactos redundantes. La comparación semántica cierra esa brecha al aproximar el criterio que aplicaría una persona cuidadosa, a una escala que ningún equipo podría revisar fila por fila.
Su lugar dentro de un flujo de datos
Como la tarea corre de forma asíncrona y devuelve un task_id de inmediato, encaja en trabajos nocturnos de higiene del CRM, validaciones previas a una fusión de bases, o una limpieza puntual de una hoja de cálculo heredada, sin bloquear el proceso que la disparó. Los resultados llegan por webhook firmado o por un enlace firmado válido por 24 horas, listos para alimentar una fusión automática, una cola de revisión, o simplemente un conteo de cuánta duplicación carga realmente su conjunto de datos.
Qué puede hacer con ella
Consolidación de contactos en el CRM
Detecte contactos ingresados dos veces con variaciones de escritura antes de que generen dos secuencias de contacto hacia la misma persona.
Limpieza de clientes tras una fusión
Concilie las listas de clientes de dos empresas cuando la misma cuenta aparece con formato, abreviaturas o errores de tipeo distintos.
Deduplicación de tickets de soporte
Identifique tickets que describen el mismo problema con palabras distintas para que los agentes dejen de duplicar el trabajo sobre un solo incidente.
Higiene de listas de correo
Reduzca los envíos duplicados a la misma persona u hogar antes de lanzar una campaña, bajando el costo y evitando una repetición que parezca spam.
Preguntas frecuentes
¿En qué se diferencia la deduplicación semántica de la coincidencia exacta?
La coincidencia exacta solo detecta cadenas idénticas; esta api de deduplicacion difusa compara significado y estructura, así que errores de tipeo, abreviaturas y campos en distinto orden se siguen reconociendo como duplicados.
¿Puedo elegir qué columnas se comparan?
Sí, usted especifica qué campos alimentan la comparación de similitud y con qué peso se ponderan, así que la coincidencia por nombre y correo se puede ajustar por separado de la coincidencia por dirección.
¿Puedo controlar qué tan estricta es la comparación?
Sí, define un umbral de similitud; uno más flexible detecta más casi duplicados pero arriesga falsos positivos, uno más estricto es más seguro pero puede dejar pasar algunos.
¿Hay un plan gratuito para probar dedupe-semantic?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Qué pasa con las filas que no son duplicadas?
Pasan por la respuesta sin cambios; solo las filas que superan su umbral de similitud se agrupan y se marcan como candidatas a duplicado.
¿Qué tan grande puede ser el archivo que envío para deduplicar?
Envíe los archivos como solicitudes asíncronas separadas, cada una con su propio task_id, para que los conjuntos de datos muy grandes se puedan dividir y procesar de forma independiente.
¿Cómo recibo los resultados de la deduplicación?
A través de un webhook firmado, recomendado para flujos automatizados, o un enlace firmado válido por 24 horas si prefiere obtenerlo manualmente.
¿Cuánto cuesta la API de deduplicación semántica?
$0.002 por solicitud más $0.002 por cada 1,000 filas procesadas, cobrado únicamente cuando la tarea se completa con éxito.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/dedupe-semantic \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/dedupe-semantic", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/dedupe-semantic",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/dedupe-semantic", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/dedupe-semantic", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.dedupe_semantic",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |