Función LEVDIST( )

Devuelve la distancia de Levenshtein entre dos cadenas especificadas, que es una medida de cuánto difieren las dos cadenas.

Sintaxis

LEVDIST(cadena1; cadena2 <;coincidir_mayúsc./minúsc.>)

Parámetros

Nombre Tipo Descripción
cadena1 carácter La primera cadena de la comparación.
cadena2 carácter La segunda cadena de la comparación.

coincidir_mayúsc./minúsc.

opcional

lógico

Especifique T para una comparación de cadenas que distinga entre mayúsculas y minúsculas, o F para ignorar las mayúsculas y las minúsculas.

Si se omite, se utiliza el valor predeterminado T.

Salida

Numérico. El valor es la distancia de Levenshtein entre dos cadenas.

Ejemplos

Ejemplos básicos

Devuelve 3, porque se requieren dos sustituciones y una inserción para transformar "smith" en "Smythe":

LEVDIST("smith";"Smythe")

Devuelve 2, dado que se ignoran las mayúsculas o minúsculas; por lo tanto, solo se necesitan dos sustituciones para transformar "smith's" en "Smythes":

LEVDIST("smith's";"Smythes";F)

Devuelve la distancia de Levenshtein entre cada valor del campo Apellido y la cadena "Smith":

LEVDIST(TRIM(Apellido);"Smith")

Ejemplos avanzados

Calificación de los valores en comparación con "Smith"

Cree el campo calculado Dist_Lev para mostrar la distancia de Levenshtein entre "Smith" y cada valor del campo Apellido:

DEFINE FIELD Dist_Lev COMPUTED LEVDIST(TRIM(Apellido);"Smith"; F)

Agregue el campo calculado Dist_Lev a la vista y después haga un ordenamiento rápido ascendente para calificar todo los valores del campo Apellido por la cantidad de diferencia respecto de "Smith".

Aislamiento de duplicados inexactos para "Smith"

Cree un filtro que aísle todos los valores del campo Apellido que están dentro de una determinada distancia de Levenshtein de "Smith":

SET FILTER TO LEVDIST(TRIM(Apellido);"Smith"; F) < 3

Cambiar el número de la expresión le permite ajustar la cantidad de distancia de Levenshtein en los valores filtrados.

Observaciones

Cuándo usar LEVDIST( )

Utilice la función LEVDIST( ) para buscar valores casi idénticos (duplicados inexactos) o buscar ortografía incoherente en los datos introducidos de forma manual. LEVDIST( ) también identifica duplicados exactos.

Cómo funciona

La función LEVDIST( ) devuelve la distancia de Levenshtein entre las dos cadenas evaluadas, lo cual es un valor que representa el mínimo número de ediciones de caracteres individuales requerido para hacer que una cadena sea idéntica a la otra.

Cada edición necesaria incrementa el valor de la distancia de Levenshtein en 1. Cuanto mayor sea la distancia de Levenshtein, mayor será la diferencia entre las dos cadenas. Una distancia de cero (0) significa que las cadenas son idénticas.

Tipos de ediciones

Las ediciones pueden ser de tres tipos:

  • inserción
  • eliminación
  • sustitución

El algoritmo de Levenshtein no reconoce las trasposiciones (dos letras adyacentes invertidas) y las cuenta como dos ediciones; en concreto, dos sustituciones.

Caracteres no alfabéticos

Los signos de puntuación, los caracteres especiales y los espacios en blanco se tratan como caracteres individuales, al igual que las letras y los números.

Mayúscula y minúscula de los caracteres

Cambiar las mayúsculas o minúsculas de un carácter cuenta como una sustitución, a menos que desactive la coincidencia entre mayúsculas y minúsculas utilizando el ajuste coincidir_mayúsc./minúsc..

La posición de los caracteres

La distancia de Levenshtein tiene en cuenta la posición de los caracteres. Los mismos caracteres ordenados de manera diferente pueden resultar en una distancia de Levenshtein diferente.

Devuelve 2:

LEVDIST("abc"; "dec")

Devuelve 3:

LEVDIST("abc"; "cde")

Uso de TRIM( ) con LEVDIST( )

Para asegurar resultados precisos cuando utilice LEVDIST( ) para comparar una cadena literal como "Smith" con un campo de caracteres, debe utilizar la función TRIM( ) para eliminar los espacios en blanco al final del campo.

Si está comparando dos campos, debe utilizar la función TRIM ( ) con cada campo.

El algoritmo de Levenshtein cuenta los espacios en blanco como caracteres, por lo que cualquier espacio final se incluye en el cálculo del número de ediciones que se deben hacer para obtener dos cadenas idénticas.

Uso de OMIT( ) con LEVDIST( )

La función OMIT( ) puede mejorar la eficacia de la función LEVDIST( ) quitando elementos genéricos como "Corporación" o "Inc." de los valores del campo. La eliminación de los elementos genéricos enfoca la comparación de cadenas de LEVDIST( ) solo en la parte de las cadenas donde puede haber una diferencia significativa.

Funciones relacionadas

  • ISFUZZYDUP( ) proporciona un método alternativo para comparar cadenas sobre la base de la distancia de Levenshtein.

    A diferencia del comportamiento de forma predeterminada de LEVDIST( ), ISFUZZYDUP( ) no distingue entre mayúsculas y minúsculas.

  • DICECOEFFICIENT( ) le quita el énfasis o ignora completamente la posición relativa de los caracteres o de los bloques de caracteres al comparar cadenas.
  • SOUNDSLIKE( ) y SOUNDEX( ) comparan cadenas basándose en una comparación fonética (sonido) en lugar de una comparación ortográfica (escritura).
Guía de creación de scripts de ACL 14.1