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
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '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.
Load script
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;
Result
ID | String_1 | String_2 | LevenshteinDistance |
---|---|---|---|
1 | Silver | Sliver | 2 |
2 | Silver | SSiver | 2 |
3 | Silver | SSiveer | 3 |
4 | Gold | Bold | 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 |