Função LEVDIST( )

Retorna a distância de Levenshtein entre duas cadeias especificadas, que é uma medida de quanto as duas cadeias são diferentes.

Sintaxe

LEVDIST(cadeia1; cadeia2 <;diferenciam_maiúsculas_de_minúsculas>)

Parâmetros

Nome Tipo Descrição
cadeia1 caractere A primeira cadeia na comparação.
cadeia2 caractere A segunda cadeia na comparação.

diferenciam_maiúsculas_de_minúsculas

opcional

lógico

Especifique T para uma comparação de cadeias que diferencie entre letras maiúsculas e minúsculas, ou F para ignorá-las.

Se omitido, o valor padrão T é usado.

Saída

Numérico. O valor é a distância de Levenshtein entre duas cadeias.

Exemplos

Exemplos básicos

Retorna 3, pois são necessárias duas substituições e uma inserção para transformar "smith" em "Smythe":

LEVDIST("smith";"Smythe")

Retorna 2, pois maiúsculas e minúsculas são ignoradas, apenas duas substituições são necessárias para transformar "smith's" em "Smythes":

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

Retorna a distância de Levenshtein entre cada valor no campo Sobrenome e a cadeia "Smith":

LEVDIST(TRIM(Sobrenome);"Smith")

Exemplos avançados

Valores de classificação contra "Smith"

Crie o campo calculado Dist_Lev para exibir a distância de Levenshtein entre "Smith" e cada valor no campo Sobrenome:

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

Adicione o campo calculado Dist_Lev à exibição e ordene rapidamente em ordem crescente para ordenar todos os valores no campo Sobrenome por total de diferença de "Smit".

Isolamento de duplicidades parciais de "Smith"

Crie um filtro que isola todos os valores no campo Sobrenome que estão dentro de uma distância de Levenshtein especificada em relação a "Smith":

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

A alteração do número na expressão permite ajustar o valor da distância de Levenshtein nos valores filtrados.

Observações

Quando usar LEVDIST( )

Use a função LEVDIST( ) para encontrar os valores quase idênticos (duplicidades parciais) ou localizar ortografia inconsistente em dados inseridos manualmente. LEVDIST( ) também identifica duplicidades exatas.

Como funciona?

A função LEVDIST( ) retorna a distância de Levenshtein entre duas cadeias avaliadas, que é um valor que representa o número mínimo de edições de caractere individual necessário para tornar uma cadeia idêntica à outra.

Cada edição necessária aumenta o valor da distância de Levenshtein em 1. Quanto maior a distância de Levenshtein, maior a diferença entre duas cadeias. Uma distância igual a 0 (zero) significa que as cadeias são idênticas.

Tipos de edições

As edições podem ser de três tipos:

  • inserção
  • exclusão
  • substituição

As transposições (duas letras adjacentes invertidas) não são reconhecidas pelo algoritmo de Levenshtein e contam como duas edições, especificamente, duas substituições.

Caracteres não alfanuméricos

Sinais de pontuação, caracteres especiais e espaços em branco são tratados como caracteres individuais, bem como as letras e números.

Caracteres em maiúscula/minúscula

Alterar um caractere para maiúscula ou minúscula conta como uma substituição, a menos que você desligue a diferenciação entre maiúsculas e minúsculas utilizando a configuração diferencia_maiúsculas_de_minúsculas.

Posição dos caracteres

A distância de Levenshtein leva em conta a posição dos caracteres. Os mesmos caracteres ordenados de forma diferente podem resultar em uma distância de Levenshtein diferente.

Retorna 2:

LEVDIST("abc"; "dec")

Retorna 3:

LEVDIST("abc"; "cde")

Uso de TRIM( ) com LEVDIST( )

Para garantir resultados precisos ao utilizar LEVDIST( ) para comparar uma cadeia literal, como "Smith" com um campo de caracteres, você deve usar a função TRIM( ) para remover espaços à direita do campo.

Se estiver comparando dois campos, é necessário usar a função TRIM( ) em cada campo.

O algoritmo de Levenshtein conta espaços em branco como caracteres, então quaisquer espaços em branco finais são incluídos no cálculo do número de edições necessárias para fazer duas cadeias idênticas.

Uso de OMIT( ) com LEVDIST( )

A função OMIT( ) pode melhorar a eficácia da função LEVDIST( ) removendo elementos genéricos, como "Companhia" ou "Inc." de valores do campo. Remoção de elementos genéricos focaliza a comparação de cadeias LEVDIST( ) em apenas a parte das cadeias em que uma diferença significativa pode ocorrer.

Funções relacionadas

  • ISFUZZYDUP( ) fornece um método alternativo para a comparação de cadeias com base na distância de Levenshtein.

    Diferente do comportamento de LEVDIST( ), ISFUZZYDUP( ) não diferencia maiúsculas de minúsculas.

  • DICECOEFFICIENT( ) não prioriza ou ignora completamente a posição relativa de caracteres ou blocos de caracteres durante a comparação de cadeias.
  • SOUNDSLIKE( ) e SOUNDEX( ) comparam cadeias com base em uma comparação fonética (som), em vez de uma comparação ortográfica (ortografia).