Fonction LEVDIST( )

Renvoie la distance Levenshtein entre deux chaînes données. Il s'agit d'une mesure du niveau de différence entre les deux chaînes.

Syntaxe

LEVDIST(chaîne_de_caractères1; chaîne_de_caractères2 <;sensible_casse>)

Paramètres

Nom Type Description
chaîne_de_caractères1 caractère Première chaîne de la comparaison.
chaîne_de_caractères2 caractère Deuxième chaîne de la comparaison.

sensible_casse

optionnel

logique

Indiquez T pour obtenir une comparaison de chaînes sensible à la casse, ou F pour ignorer la casse.

Si vous ignorez ce paramètre, c'est la valeur par défaut de T qui est utilisée.

Sortie

Numérique. La valeur est la distance Levenshtein entre deux chaînes.

Exemples

Exemples basiques

Renvoie 3, car deux substitutions et une insertion sont requises pour transformer « smith » en « Smythe » :

LEVDIST("smith";"Smythe")

Renvoie 2, car la casse étant ignorée, seules deux substitutions sont nécessaires pour transformer « smith's » en « Smythes » :

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

Renvoie la distance Levenshtein entre chaque valeur dans le champ Nom et la chaîne « Smith » :

LEVDIST(TRIM(Nom);"Smith")

Exemples avancés

Classement des valeurs vis-à-vis de « Smith »

Créez le champ calculé dist_Lev pour afficher la distance Levenshtein entre « Smith » et chaque valeur du champ Nom :

DEFINE FIELD dist_Lev COMPUTED LEVDIST(TRIM(Nom);"Smith"; F)

Ajoutez le champ calculé dist_Lev à la vue, puis effectuez un tri express dans l'ordre croissant pour classer toutes les valeurs du champ Nom en fonction du nombre de différences qu'elles présentent par rapport à « Smith ».

Isoler les doublons approximatifs de « Smith »

Créez un filtre isolant toutes les valeurs du champ Nom se trouvant dans la distance Levenshtein spécifiée par rapport à « Smith » :

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

Modifier le nombre dans l'expression vous permet de régler l'importance de la distance Levenshtein dans les valeurs filtrées.

Remarques

Quand utiliser la fonction LEVDIST( )

Utilisez la fonction LEVDIST( ) pour rechercher des valeurs presque identiques (des doublons approximatifs) ou pour repérer les incohérences orthographiques dans les données saisies manuellement. LEVDIST( ) identifie également les doublons exacts.

Fonctionnement

La fonction LEVDIST( ) renvoie la distance Levenshtein entre les deux chaînes évaluées. Cela correspond à une valeur représentant le nombre minimal de modifications de caractères simples requises pour rendre une chaîne identique à une autre.

Chaque modification requise incrémente la valeur de la distance Levenshtein de 1. Plus la distance Levenshtein est grande, plus la différence entre les deux chaînes est importante. Une distance égale à zéro (0) signifie que les chaînes sont identiques.

Types de modifications

Il existe trois types de modifications :

  • insertion
  • suppression
  • substitution

Les transpositions (deux lettres adjacentes inversées) ne sont pas reconnues par l'algorithme Levenshtein, et comptent comme deux modifications – en particulier, deux substitutions.

Caractères non alphanumériques

Les signes de ponctuation, les caractères spéciaux et les espaces vides sont considérés comme des caractères simples, à l'instar des lettres et des chiffres.

Casse des caractères

Modifier la casse d'un caractère est considéré comme étant une substitution, à moins que vous ne désactiviez la sensibilité à la casse à l'aide du paramètre sensible_casse.

Position des caractères

La distance Levenshtein tient compte de la position des caractères. Les mêmes caractères ordonnés différemment peuvent engendrer une distance Levenshtein différente.

Renvoie 2 :

LEVDIST("abc"; "dec")

Renvoie 3 :

LEVDIST("abc"; "cde")

Utilisation de TRIM( ) avec LEVDIST( )

Pour obtenir des résultats exacts lors de la comparaison d'une chaîne littérale (par ex., « Smith ») et d'un champ caractère à l'aide la fonction LEVDIST( ), vous devez d'abord utiliser TRIM( ) pour supprimer les espaces de fin du champ.

Si vous comparez deux champs, vous devez utiliser la fonction TRIM( ) avec chaque champ.

L'algorithme Levenshtein comptabilise les espaces en tant que caractères. De ce fait, les espaces de fin sont inclus dans le calcul du nombre de modifications requises pour rendre deux chaînes identiques.

Utilisation de OMIT( ) avec LEVDIST( )

La fonction OMIT( ) peut améliorer l'efficacité de la fonction LEVDIST( ) en supprimant des éléments génériques tels que « Corporation » ou « Inc. » des valeurs de champ. La suppression d'éléments génériques recentre la comparaison de chaînes LEVDIST( ) uniquement sur la portion des chaînes dans lesquelles une différence significative peut se produire.

Fonctions associées

  • La fonction ISFUZZYDUP( ) fournit une méthode alternative pour comparer des chaînes en fonction de la distance Levenshtein.

    Contrairement au comportement par défaut de la fonction LEVDIST( ), la fonction ISFUZZYDUP( ) n'est pas sensible à la casse.

  • La fonction DICECOEFFICIENT( ) ne met pas l'accent sur la position des caractères ou des blocs de caractères voire les ignore complètement lors de la comparaison de chaînes de caractères.
  • Les fonctions SOUNDSLIKE( ) et SOUNDEX( ) comparent des chaînes de façon phonétique (son) plutôt qu'orthographique.