LevenshteinDist – função de script e gráfico
LevenShteInst() retorna a distância Levenshtein entre duas strings. Ela é definida como o número mínimo de edições de caractere único (inserções, exclusões ou substituições) necessárias para transformar uma string na outra. Essa função é útil para comparações de strings difusas.
Sintaxe:
LevenshteinDist(text1, text2)
Tipo de dados de retorno: inteiro
Exemplo | Resultado |
---|---|
LevenshteinDist('Kitten','Sitting') | Retorna "3" |
Visão geral
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
-
Um campo na tabela de dados chamado InputText.
Script de carregamento
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:
-
InputText
-
=LevenshteinDist('Silver', InputText), para calcular o número mínimo de edições de caractere único necessárias para alterar os valores da string de InputText para a palavra 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
A saída da função LevenshteinDist retorna o número de alterações necessárias para alterar o InputText para o texto esperado, 'Silver'. Por exemplo, a primeira linha requer duas alterações para modificar a palavra 'Sliver' para 'Silver'. A segunda linha requer 3 alterações: 1) Exclua o caractere extra 'S'. 2) Exclua o caractere extra 'e'. 3) Insira um novo caractere 'l'.
Visão geral
Este exemplo consolida nomes de produtos de diferentes sistemas. Os nomes dos produtos nem sempre usam a mesma grafia devido a erros de digitação, abreviações, espaçamento ou outras variações. Usando a função LevenshteinDist, você pode medir a similaridade entre dois nomes de produtos e identificar quais provavelmente se referem ao mesmo produto, mesmo que os nomes não sejam idênticos.
Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.
O script de carregamento contém:
-
-
-
ProductA
-
ProductB
-
Script de carregamento
Example:
Load * inline [
ProductA, ProductB
Coca Cola 330ml, CocaCola 330 ml
Pepsi 500 ml, Pepsi 500ml
Sprite Zero 600 ml, SpriteZero600ml
Red Bull 250ml, Redbull 250ml
];
Resultados
Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:
-
ProductA
-
ProductB
-
=LevenshteinDist(ProductA, ProductB), para calcular o número mínimo de edições de caracteres individuais necessárias para alterar os valores da string para ProductB para corresponder a ProductA.
ProductA | ProductB | LevenshteinDist(ProductA, ProductB) |
---|---|---|
Coca Cola 330ml | CocaCola 330 ml | 2 |
Pepsi 500 ml | Pepsi 500ml | 1 |
Red Bull 250ml | Redbull 250ml | 2 |
Sprite Zero 600 ml | SpriteZero600ml | 3 |
A distância de Levenshtein é um tipo de correspondência difusa amplamente usada como parte de verificadores ortográficos, reconhecimento óptico de caracteres e sistemas de correção em áreas como gerenciamento de dados de clientes, sistemas de inventário e processamento de documentos, onde pequenas variações no texto ocorrem com frequência.
Script de carregamento
T1:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];
T1:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];
T1:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];
T1:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];
set nullinterpret = '<NULL>';
T1:
Load *, recno()+12 as ID;
Load 'X' as String_1,* inline [
String_2
''
<NULL>
1 ];
R1:
Load
ID,
String_1,
String_2,
LevenshteinDist(String_1, String_2) as LevenshteinDistance
resident T1;
Drop table T1;
Resultado
ID | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold | Negrito | 1 |
5 | Gold | Bool | 3 |
6 | Gold | Bond | 2 |
7 | Ove | Ove | 0 |
8 | Ove | Uve | 1 |
9 | Ove | Üve | 1 |
10 | ABC | DEFG | 4 |
11 | ABC | abc | 3 |
12 | ABC | ビビビ | 3 |
13 | X | 1 | |
14 | X | - | 1 |
15 | X | 1 | 1 |