すべて展開 / 折りたたむ
LevenshteinDist - スクリプトおよびチャート関数このページ上
LevenshteinDist() は、2 つの文字列間の Levenshtein の距離を返します。これは、1 つの文字列を別の文字列に変更するために必要な 1 文字の編集 (挿入、削除、または置換) の最小数として定義されます。
この関数は、あいまい文字列の比較に役立ちます。
構文:
LevenshteinDist( text1, text2)
戻り値データ型: 整数
引数
text1
最初の文字列。
text2
1 文字編集の最小数を計算するために、最初の文字列と比較される 2 番目の文字列。
例: チャートの数式
LevenshteinDist( 'Kitten','Sitting' )
3 を返します
例 - LevenshteinDist の基本
チャートの数式
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
Example:
Load * inline [
InputText
Sliver
SSiver
SSiveer
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:
次のメジャーを作成します:
結果テーブル
入力テキスト LevenshteinDist('Silver', InputText) Sliver 2 SSiveer 3 SSiver 2
LevenshteinDist 関数の出力は、InputText を期待されるテキスト Silver に変更するために必要な変更の数を返します。たとえば、最初の行では、Sliver という単語を Silver に変更するために 2 つの変更が必要です。2 行目には 3 つの変更が必要です。1) 余分な文字 S を削除します。2) 余分な文字 e を削除します。3) 新しい文字 l を挿入します。
例 - LevenshteinDist のシナリオ
チャートの数式
概要
この例では、異なるシステムの製品名を統合します。誤字、略称、スペース、その他の理由により、製品名に必ずしも同じスペルが使用されるとは限りません。LevenshteinDist 関数を使用すると、2 つの製品名の類似性を測定し、名前が同一でなくても、同じ製品を指す可能性が高いものを特定できます。
データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。
ロード スクリプトには次が含まれています:
ロード スクリプト
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
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:
次のメジャーを作成します:
結果テーブル
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
レーベンシュタイン距離は、テキストのわずかな変化が頻繁に発生する顧客データ管理、在庫システム、文書処理などの分野で、スペル チェッカー、光学式文字認識、修正システムの一部として広く使用されているファジー マッチングの一種です。
ロード スクリプト
ロード スクリプト
Example:
Load *, recno() as ID;
Load 'Silver' as String_1,* inline [
String_2
Sliver
SSiver
SSiveer ];
Example:
Load *, recno()+3 as ID;
Load 'Gold' as String_1,* inline [
String_2
Bold
Bool
Bond ];
Example:
Load *, recno()+6 as ID;
Load 'Ove' as String_1,* inline [
String_2
Ove
Uve
Üve ];
Example:
Load *, recno()+9 as ID;
Load 'ABC' as String_1,* inline [
String_2
DEFG
abc
ビビビ ];
set nullinterpret = '<NULL>';
Example:
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 Example;
Drop table Example;
結果テーブル
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