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 classifique rapidamente em ordem crescente para classificar 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).