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).