ForHosting KIT · Texto e IA

Distancia Damerau–Levenshtein

form y from están a 1 edición, porque intercambiar dos letras vecinas cuenta como un solo paso, mientras que kitten y sitting necesitan 3. También obtiene una similitud de 0 a 1, útil para detectar erratas y nombres casi duplicados. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Texto a
kitten
Texto b
sitting
Obtiene
Distancia
3
Len a
6
Len b
7
Longitud máxima
7

La distancia de Damerau–Levenshtein es una métrica clásica de edición que cuenta cuántas operaciones de un solo carácter transforman una cadena en otra cuando las operaciones permitidas son inserción, borrado, sustitución y transposición de dos caracteres adyacentes. Esa última operación es lo que la distingue de la distancia de Levenshtein simple y la hace especialmente útil ante typos reales: las personas suelen intercambiar dos teclas vecinas (form frente a from, teh frente a the) y eso debe costar un paso, no dos sustituciones. Esta capacidad implementa la forma Optimal String Alignment de la distancia con una tabla pura de programación dinámica, de modo que cada par de entradas produce el mismo entero en cualquier runtime. Usted envía dos textos y un indicador opcional de sensibilidad a mayúsculas; recibe la distancia, ambas longitudes, una similitud normalizada entre cero y uno, y un booleano identical.

Qué mide Damerau–Levenshtein y cómo difiere de Levenshtein simple

La distancia de edición pregunta cuántos cambios unitarios hacen falta para reescribir una cadena origen como una cadena destino. La Levenshtein clásica permite tres operaciones unitarias: insertar un carácter, borrar un carácter o sustituir un carácter por otro. Cada una cuesta uno.

La extensión de Damerau añade una cuarta operación: intercambiar dos caracteres adyacentes por un solo coste unitario. Esa extensión encaja con cómo se escriben mal las palabras en un teclado. Por ejemplo, las cadenas ab y ba difieren en una transposición adyacente bajo Damerau–Levenshtein y en dos sustituciones bajo Levenshtein simple.

Kitten frente a sitting sigue costando tres (como en el ejemplo de libro de texto de Levenshtein) porque el camino más barato usa sustituciones y una inserción, no un solo intercambio. OSA es la forma que la mayoría de bibliotecas etiquetan como Damerau–Levenshtein para corrección de typos; prohíbe aplicar dos transposiciones solapadas sobre la misma subcadena, lo que mantiene la métrica simple y O(n·m) en tiempo y espacio.

Las cadenas vacías son válidas: la distancia desde la cadena vacía a cualquier cadena es la longitud de esa cadena, y la distancia entre dos vacías es cero. Las cadenas idénticas siempre dan distancia cero y similitud uno, también tras el plegado opcional de mayúsculas.

Dónde resulta útil esta distancia

Las herramientas de búsqueda de producto e inventario usan la distancia de edición con transposiciones para ordenar SKU y marcas casi coincidentes antes de recurrir a modelos semánticos más lentos. Las tuberías de CRM y deduplicación marcan filas candidatas a duplicado cuando la distancia es como máximo uno o dos y la similitud supera un umbral fijo, captando letras intercambiadas que la igualdad simple o incluso Levenshtein pura infravalorarían.

Las demos de corrector ortográfico y los ejercicios de aula necesitan un oráculo determinista que marque form frente a from como distancia uno y cobre una tarifa fija transparente en lugar de coste por tokens. La entrada inválida no consume saldo.

Combine la distancia entera con su propia política de umbral—acepte distancia cero solo para claves exactas, distancia uno para corrección agresiva de typos, similitud por encima de 0.8 para pistas de fusión suave—y obtendrá un bloque auditable de coincidencia difusa sin montar un motor de búsqueda completo ni un stack de PLN propio.

Emparejado de productos y SKU tolerante a typos

Ordene candidatos del catálogo cuando la cadena del comprador o proveedor esté a un intercambio o una edición del SKU real, sin llamar a un modelo de embeddings.

Deduplicación de CRM y registros

Marque nombres y direcciones casi duplicados donde son habituales los intercambios de letras adyacentes, con un umbral fijo de distancia o similitud.

Deberes y demos de algoritmos

Muestre al alumnado el programa dinámico OSA con kitten/sitting y ab/ba para que el coste de transposición quede visible junto a Levenshtein simple.

¿Qué es la distancia de Damerau–Levenshtein?

Es el número mínimo de inserciones, borrados, sustituciones y transposiciones de caracteres adyacentes necesarias para convertir una cadena en otra.

¿En qué se diferencia de la distancia de Levenshtein ordinaria?

La Levenshtein simple no tiene operación de transposición, así que vecinos intercambiados cuestan dos sustituciones. Damerau–Levenshtein (OSA) cuenta un intercambio adyacente como una edición, lo que se ajusta mejor a los typos reales de teclado.

¿Se permiten cadenas vacías?

Sí. La distancia de vacía a no vacía es la longitud de esa cadena; dos vacías tienen distancia cero y similitud uno.

¿Qué significa la puntuación de similitud?

Es 1 menos la distancia dividida entre la longitud del texto más largo. Kitten y sitting están a 3 ediciones y la palabra más larga tiene 7 letras, así que la similitud ronda 0,571428571429. Dos textos idénticos dan 1.

¿Distingue mayúsculas y minúsculas?

Sí, por defecto Kitten y kitten están a una edición. Si desactiva esa distinción, ambos textos pasan a minúsculas antes del cálculo y las diferencias de mayúsculas dejan de sumar.

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.

POSThttps://api.kit.forhosting.com/str/damerau-levenshtein

¿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, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/str/damerau-levenshtein \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text_a":"kitten","text_b":"sitting"}'
{
  "text_a": "kitten",
  "text_b": "sitting"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "str.damerau_levenshtein",
  "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.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

La ruta gratuita del navegador y la API prepago comparten el mismo módulo, así que las comprobaciones de deberes, los umbrales de coincidencia difusa y las tuberías de producción no divergen sobre si dos etiquetas están lo bastante cerca para fusionarse.

Qué mide Damerau–Levenshtein y cómo difiere de Levenshtein simple

Este endpoint usa la recurrencia Optimal String Alignment (OSA): una matriz de programación dinámica donde la celda (i, j) es el mínimo de borrar, insertar, sustituir o coincidir y—cuando los dos últimos caracteres de cada prefijo forman un par cruzado—transponer desde la celda (i−2, j−2).

Contrato de entrada, campos de respuesta y reglas de validación

Cada cadena se limita a cinco mil caracteres para que la tabla cuadrática quede acotada en la ruta gratuita del borde. Una cadena formula breve documenta la recurrencia OSA para mostrarla junto a la respuesta. La validación fallida no se factura. Mantenga entradas lo bastante cortas para uso interactivo, fije la distancia entera y la similitud redondeada en las pruebas, y obtendrá puntuaciones difusas reproducibles sin modelo de lenguaje ni diccionario externo. Envíe un cuerpo JSON con dos campos de cadena obligatorios: text_a (alias a, string1, s1, left, first, source) y text_b (alias b, string2, s2, right, second, target). Ambos pueden estar vacíos; los valores ausentes o que no sean cadena fallan con invalid_input nombrando el campo. El opcional case_sensitive vale true por defecto para que Kitten y kitten puedan diferir; póngalo en false para pasar ambos lados a minúsculas antes de rellenar la tabla. En éxito el cuerpo repite text_a, text_b y case_sensitive; informa distance como entero no negativo; informa len_a, len_b y max_len de las cadenas normalizadas; informa similarity como (max_len − distance) / max_len redondeado a doce decimales (o uno cuando ambas longitudes son cero); y pone identical en true exactamente cuando distance es cero. Ejemplo: text_a kitten y text_b sitting dan distance tres, longitudes seis y siete, max_len siete, similarity cerca de 0.571 y identical false. Ejemplo: text_a ab y text_b ba dan distance uno por el intercambio adyacente.

Dónde una API Damerau–Levenshtein aporta valor real

Como la implementación es parse pura de nivel A, cada llamada correcta cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente.

¿La comparación distingue mayúsculas y minúsculas?

Por defecto sí (case_sensitive true). Ponga case_sensitive en false para pasar ambas cadenas a minúsculas antes de calcular la distancia y que Kitten y kitten coincidan.

¿Cuánto cuesta la calculadora Damerau–Levenshtein?

La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada correcta; la entrada inválida no se factura.

Ver la documentación completa del KIT →