LevenshteinDist - skript- och diagramfunktion
LevenshteinDist() returnerar Levenshtein-avståndet mellan två strängar. Det definieras som det minsta antalet enkelteckensredigeringar (infogningar, borttagningar eller ersättningar) som krävs för att förvandla en sträng till en annan. Funktionen är användbar vid ungefärliga strängjämförelser.
Syntax:
LevenshteinDist(text1, text2)
Returnerad datatyp: heltal
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '3' |
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Ett fält i datatabellen heter InputText.
Laddningsskript
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:
InputText
=LevenshteinDist('Silver', InputText), för att beräkna det minsta antalet redigeringar av enstaka tecken som krävs för att förändra strängvärdena för InputText till ordet 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
Utdata från funktionen LevenshteinDist ger det antal ändringar som krävs för att förändra InputText till den förväntade texten, 'Silver'. Första raden kräver till exempel två ändringar för att ändra ordet 'Sliver' till 'Silver'. Den andra raden kräver tre ändringar: 1) Ta bort det extra tecknet 'S'. 2) Ta bort det extra tecknet 'e'. 3) Infoga ett nytt tecken 'l'.
Översikt
I detta exempel konsolideras produktnamn från olika system. Produktnamnen har inte alltid samma stavning på grund av skrivfel, förkortningar, utrymme eller andra variationer. Med funktionen LevenshteinDist kan du mäta likheten mellan två produktnamn och identifiera vilka som sannolikt hänvisar till samma produkt, även om namnen inte är identiska.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
ProductA
ProductB
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
ProductA
ProductB
=LevenshteinDist(ProductA, ProductB), för att beräkna det minsta antalet redigeringar av enstaka tecken som krävs för att förändra strängvärdena för ProductB till ordet 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 |
Levenshtein-avstånd är en typ av fuzzy matchning som ofta används som en del av stavningskontroller, optisk teckenigenkänning och korrigeringssystem inom områden som kunddatahantering, lagersystem och behandling av dokument, där små variationer i text ofta förekommer.
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 |