LevenshteinDist - script- en diagramfunctie
LevenshteinDist() retourneert de afstand van Levenshtein tussen twee tekenreeksen. Het wordt gedefinieerd als het aantal bewerkingen van één teken (invoegingen, verwijderingen of vervangingen) dat is vereist om een tekenreeks te wijzigen. De functie kan worden gebruikt om fuzzy tekenreeksen te vergelijken.
Syntaxis:
LevenshteinDist(text1, text2)
Retourgegevenstypen: geheel getal
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '3' |
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Eén veld in de gegevenstabel met de naam InputText.
Load-script
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
InputText
=LevenshteinDist('Silver', InputText) om het minimum aantal bewerkingen van één teken te berekenen dat nodig is om de rekenreekswaarden voor InputText te wijzigen in het woord 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
De uitvoer van de functie LevenshteinDist geeft het aantal vereiste wijzigingen om de InputText te wijzigen in de verwachte tekst, 'Silver'. Voor de eerste rij zijn bijvoorbeeld twee wijzigingen nodig om het woord 'Sliver' te wijzigen in 'Silver'. De tweede rij vereist 3 wijzigingen: 1) Verwijderen van het extra teken 'S'. 2) Verwijderen van het extra teken 'e'. 3) Invoegen van een nieuw teken in 'l'.
Overzicht
In dit voorbeeld worden productnamen uit verschillende systemen samengevoegd. De productnamen gebruiken niet altijd dezelfde schrijfwijze vanwege typefouten, afkortingen, spaties of andere variaties. Met behulp van de functie LevenshteinDist kunt u de gelijkenis tussen twee productnamen meten en vaststellen welke waarschijnlijk naar hetzelfde product verwijzen, zelfs als de namen niet identiek zijn.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
ProductA
ProductB
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
ProductA
ProductB
=LevenshteinDist(ProductA, ProductB) om het minimum aantal bewerkingen van één teken te berekenen dat nodig is om de rekenreekswaarden voor ProductB te wijzigen zodat het overeenkomt met 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 |
De Levenshtein-afstand is een type fuzzy matching dat veel wordt gebruikt als onderdeel van spellingscontroles, optische tekenherkenning en correctiesystemen in gebieden zoals klantgegevensbeheer, inventarisatiesystemen en documentverwerking, waar kleine variaties in tekst vaak voorkomen.
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 |