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
Voorbeeld | Resultaat |
---|---|
LevenshteinDist('Kitten','Sitting') | retourneert 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;
Resultaat
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 |