LevenshteinDist - kod ve grafik fonksiyonu
LevenshteinDist() iki dize arasında Levenshtein mesafesi döndürür. Bu, bir dizeyi diğeriyle değiştirmek için gereken minimum tek karakterli düzenleme (ekleme, silme veya değiştirme) sayısı olarak tanımlanır. Fonksiyon, fuzzy dize karşılaştırmaları için kullanışlıdır.
Söz Dizimi:
LevenshteinDist(text1, text2)
Dönüş verileri türü: tamsayı
Example | Result |
---|---|
LevenshteinDist('Kitten','Sitting') | Returns '3' |
Genel bakış
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
Veri tablosunda InputText adında bir alan.
Komut dosyası
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanı boyut olarak ekleyin:
InputText
=LevenshteinDist('Silver', InputText)InputText için dize değerlerini kelimesine değiştirmek üzere gereken minimum tek karakter düzenleme sayısını hesaplamak amacıyla 'Silver'.
InputText | LevenshteinDist(‘Silver’, InputText) |
---|---|
Sliver | 2 |
SSiveer | 3 |
SSiver | 2 |
LevenshteinDist işlevinin çıktısı, InputText metnini beklenen metin olan 'Silver' metnine dönüştürmek için gereken değişiklik sayısını verir. Örneğin, ilk satırda 'Sliver' kelimesini 'Silver' olarak değiştirmek için iki değişiklik yapılması gerekmektedir. İkinci satır 3 değişiklik gerektirir: 1) Fazla 'S' karakterini silin. 2) Fazla 'e' karakterini silin. 3) Yeni bir 'l' karakteri ekleyin.
Genel bakış
Bu örnek, farklı sistemlerdeki ürün adlarını birleştirir. Yazım hataları, kısaltmalar, boşluklar veya diğer varyasyonlar nedeniyle ürün adları her zaman aynı şekilde yazılmaz. LevenshteinDist işlevini kullanarak, iki ürün adı arasındaki benzerliği ölçebilir ve adlar aynı olmasa bile hangilerinin muhtemelen aynı ürüne referans verdiğini belirleyebilirsiniz.
Veri yükleme düzenleyicisini açın ve aşağıdaki yükleme kodunu yeni bir sekmeye ekleyin.
Yükleme kodu şunları içerir:
ProductA
ProductB
Komut dosyası
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
];
Sonuçlar
Verileri yükleyin ve bir sayfa açın. Yeni bir tablo oluşturun ve şu alanları boyut olarak ekleyin:
ProductA
ProductB
ProductB için dize değerlerini ProductA ile eşleşecek şekilde değiştirmek üzere gereken minimum tek karakter düzenleme sayısını hesaplamak amacıyla =LevenshteinDist(ProductA, ProductB).
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 mesafesi, metinde küçük değişikliklerin sıklıkla meydana geldiği müşteri veri yönetimi, envanter sistemleri ve belge işleme gibi alanlarda yazım denetleyicileri, optik karakter tanıma ve düzeltme sistemlerinin bir parçası olarak yaygın şekilde kullanılan bir fuzzy eşleştirme türüdür.
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 |