Função ISFUZZYDUP( )

Retorna um valor lógico que indica se uma cadeia é uma duplicata parcial de uma cadeia de comparação.

Sintaxe

ISFUZZYDUP(cadeia1; cadeia2; levdist <;diffpct>)

Parâmetros

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

A máxima distância de Levenshtein permitida entre duas cadeias para que elas sejam identificadas como duplicidades parciais.

O valor de levdist não pode ser menor que 1 ou maior que 10.

O aumento do valor de levdist aumenta o número de resultados, incluindo valores com um maior grau de parcialidade, ou seja, valores que são mais diferentes entre si.

diffpct

opcional

numérico

O limite superior para a 'porcentagem de diferença'.

A porcentagem de diferença é explicada em Como funciona?.

O valor de pctdif não pode ser menor que 1 ou maior que 99.

Aumentar o valor diffpct aumenta o número de resultados incluindo valores com uma proporção maior de diferença em relação ao seu comprimento.

Se omitida, a porcentagem de diferença não é considerada durante o processamento da função ISFUZZYDUP( ).

 

Saída

Lógico. Retorna T (verdadeiro) se os valores da cadeia forem duplicidades parciais e F (falso), caso contrário.

Exemplos

Exemplos básicos

Retorna F, pois são necessárias duas edições para transformar "Smith" em "Smythe", mas o valor de levdist é apenas 1:

ISFUZZYDUP("Smith";"Smythe"; 1; 99)

Retorna T, pois são necessárias duas edições para transformar "Smith" em "Smythe" e o valor do parâmetro levdist é 2:

ISFUZZYDUP("Smith";"Smythe"; 2; 99)

Retorna T porque nenhuma edição é necessária para transformar "SMITH" em "smith" e o valor levdist é 1 (a função ISFUZZYDUP( ) não diferencia maiúsculas e minúsculas):

ISFUZZYDUP("SMITH"; smith"; 1; 99)

Retorna um valor lógico (T ou F), indicando se os valores individuais no campo Sobrenome são duplicidades parciais da cadeia "Smith":

ISFUZZYDUP(Sobrenome;"Smith"; 3; 99)

Exemplos avançados

Trabalho com porcentagem de diferença

A porcentagem de diferença oferece uma ferramenta para reduzir o número de falsos positivos retornados por ISFUZZYDUP( ).

Nenhum diffpct especificado

Retorna T porque são necessárias cinco edições para transformar "abc" em "Smith" e o valor levdist é 5:

ISFUZZYDUP("abc"; "Smith"; 5)

diffpct especificado

Retorna F, mesmo que "abc" esteja dentro da distância de Levenshtein especificada de "Smith", pois 5 edições/cadeia com comprimento 3 resulta em uma porcentagem de diferença de 167%, que ultrapassa a diffpct de 99%:

ISFUZZYDUP("abc"; "Smith"; 5; 99)

A porcentagem de diferença é totalmente explicada em Como funciona?.

Isolamento de duplicidades parciais de "Smith"

Crie um filtro que isole todos os valores no campo Sobrenome que são duplicidades parciais de "Smith":

SET FILTER TO ISFUZZYDUP(Sobrenome; "Smith"; 3; 99)

A alteração de valores de levdist ou de pctdif permite ajustar o valor da diferença nos valores filtrados.

Observações

Quando usar ISFUZZYDUP( )

Use a função ISFUZZYDUP( ) para encontrar os valores quase idênticos (duplicidades parciais) ou localizar ortografia inconsistente em dados inseridos manualmente.

Como funciona?

A função ISFUZZYDUP( ) calcula a distância de Levenshtein entre as duas cadeias e calcula a porcentagem de diferença.

ISFUZZYDUP( ) avaliado como T (verdadeiro) se:

  • A distância de Levenshtein é menor ou igual ao valor levdist.
  • A porcentagem de diferença é menor ou igual ao valor diffpct (se especificado).

Distância de Levenshtein

A distância de Levenshtein é um valor que representa o número mínimo de edições de único caractere necessárias para tornar uma cadeia idêntica à outra.

Para obter mais informações, consulte Função LEVDIST( ).

Porcentagem de diferença

A porcentagem de diferença é a porcentagem da cadeia mais curta das duas avaliadas que é diferente.

A porcentagem de diferença é o resultado do seguinte cálculo interno do Analytics, que utiliza a distância de Levenshtein entre as duas cadeias:

Distância de Levenshtein / número de caracteres na cadeia mais curta × 100 = porcentagem de diferença

Usar a porcentagem de diferença opcional ajuda a diminuir o número de falsos positivos retornados por ISFUZZYDUP( ):

  • O limite superior para diffpct é 99%, o que evita a substituição completa de uma cadeia para torná-la idêntica.
  • As cadeias que precisam de um número maior de edições em relação ao seu comprimento são excluídas.

Dicas de uso

  • Diferenciação de maiúsculas e minúsculas A função não diferencia maiúsculas de minúsculas, portanto "SMITH" é equivalente a "smith."
  • Brancos à direita A função elimina automaticamente espaços em branco à direita em campos, portanto, não há necessidade de usar a função TRIM( ) ao especificar um campo como um parâmetro.
  • Remoção de caracteres genéricos A função OMIT( ) pode melhorar a eficácia da função ISFUZZYDUP( ) removendo elementos genéricos, como "Companhia" ou "Inc." de valores do campo.

    A remoção de elementos genéricos focaliza a comparação da cadeia ISFUZZYDUP( ) apenas na parte das cadeias onde uma diferença significativa pode ocorrer.

Como o comando FUZZYDUP e a função ISFUZZYDUP( ) diferem

O comando FUZZYDUP identifica todas as duplicidades parciais em um campo, organiza-as em grupos e produz um conjunto de resultados não exaustivo.

A função ISFUZZYDUP( ) identifica uma lista exaustiva de duplicidades parciais para um valor único de caractere.

O comando e a função identificam duplicidades exatas. Ao contrário do comando, você não pode excluir duplicidades exatas quando utilizar a função.

O que significa exaustivo

Exaustiva significa que todos os valores dentro do grau especificado de diferença do valor de teste são retornados, independentemente de sua posição no campo de teste relativo ao valor de teste.

A função ISFUZZYDUP( ) é útil se os resultados não exaustivos produzidos pelo comando FUZZYDUP não forem suficientes para a finalidade da sua análise e você precisar examinar cada duplicidade parcial diretamente procurando por um valor de caractere específico.

Funções relacionadas

  • LEVDIST( ) fornece um método alternativo para comparar cadeias com base na distância de Levenshtein.

    Diferente de ISFUZZYDUP( ), LEVDIST( ) diferencia maiúsculas e minúsculas por padrão.

  • 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).
Guia de scripting do ACL 14.1