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 |