ISFUZZYDUP( ) 関数

文字列が、比較文字列のあいまい重複であるかどうかを示す論理値を返します。

構文

ISFUZZYDUP(文字列1, 文字列2, レーベンシュタイン距離 <,相違のパーセント>)

パラメーター

名前 種類 説明
文字列1 文字 比較の最初の文字列。
文字列2 文字 比較の 2 番目の文字列。
レーベンシュタイン距離 数値

2 つの文字列があいまい重複と認定されるために、それらの文字列間で許容される最大のレーベンシュタイン距離。

レーベンシュタイン距離の値は 1 未満にすることや、10 を超えることはできません。

レーベンシュタイン距離の値を大きくすると、あいまい度が高い値(相互の関連性が低い値)が含まれるため、結果の件数が多くなります。

相違のパーセント

省略可能

数値

'相違のパーセント' (相違度)の上限。

相違のパーセントについては、機能の仕組みを参照してください。

相違のパーセントの値は 1 未満にすることや、99 を超えることはできません。

相違のパーセントの値を大きくすると、長さに比べて相違の割合が高い値が含まれるようになるため、結果の件数が多くなります。

このパラメーターを省略した場合は、ISFUZZYDUP( ) 関数の処理時に相違のパーセントが考慮されません。

 

出力

論理。文字列の値があいまい重複である場合は T(true)、そうでない場合は F(false)が返されます。

基本的な例

"Smith" を "Smythe" に変えるには 2 回の編集が必要ですが、レーベンシュタイン距離値が 1 にすぎないため、F が返されます。

ISFUZZYDUP("Smith","Smythe", 1, 99)

"Smith" を "Smythe" に変えるには 2 回の編集が必要ですが、レーベンシュタイン距離値が 2 のため、T が返されます。

ISFUZZYDUP("Smith","Smythe", 2, 99)

"SMITH" を "smith" に変えるには編集が不要(ISFUZZYDUP( ) では大文字と小文字が区別されない)であり、レーベンシュタイン距離値が 1 のため、T が返されます。

ISFUZZYDUP("SMITH","smith", 1, 99)

Last_name フィールド内の個々の値が、文字列 "Smith" のあいまい重複であるかどうかを示す論理値(T または F)が返されます。

ISFUZZYDUP(Last_Name,"Smith", 3, 99)

高度な例

相違のパーセントの使用方法

相違のパーセントは、ISFUZZYDUP( ) で返される誤検出の数を減らすための手段になります。

相違のパーセントを指定しなかった場合

"abc" を "Smith" に変えるには 5 回の編集が必要ですが、レーベンシュタイン距離値が 5 のため、T が返されます。

ISFUZZYDUP("abc", "Smith", 5)

相違のパーセントを指定した場合

"abc" が "Smith" から指定したレーベンシュタイン距離内にあっても、長さ 3 の文字列に対して 5 回の編集を行うと相違のパーセントが 167% になり、指定した相違のパーセントである 99% を超えるため、F が返されます。

ISFUZZYDUP("abc", "Smith", 5, 99)

相違のパーセントの詳細については、機能の仕組みを参照してください。

"Smith" に対するあいまい重複の抽出

Last_name フィールド内から "Smith" に対するあいまい重複であるすべての値を抽出するフィルターを作成するには、次のように指定します。

SET FILTER TO ISFUZZYDUP(Last_Name, "Smith", 3, 99)

レーベンシュタイン距離または相違のパーセントを変更すると、フィルターされる値の相違の量を調整することができます。

備考

ISFUZZYDUP( ) の使用に適する場面

ISFUZZYDUP( ) 関数は、ほぼ同一の値(あいまい重複)の検出や、手作業で入力されたデータで一貫性のないつづりを見つける場合に使用できます。

機能の仕組み

ISFUZZYDUP( ) 関数は、2 つの文字列間のレーベンシュタイン距離を計算し、相違のパーセントを求めます。

ISFUZZYDUP( ) は次の場合に T(true)と評価されます。

  • 実際のレーベンシュタイン距離が、指定したレーベンシュタイン距離の値以下の場合
  • 実際の相違のパーセントが、相違のパーセントの値(指定されている場合)以下の場合

レーベンシュタイン距離

レーベンシュタイン距離は、ある文字列を別の文字列にするために必要な、1 文字の編集の最小回数を示す値です。

詳細については、LEVDIST( ) 関数を参照してください。

相違のパーセント

相違のパーセントは、異なる 2 つの評価対象文字列のうちの短い方の文字列に対する長い方の文字列のパーセントです。

相違のパーセントは、2 つの文字列間のレーベンシュタイン距離を使用する、次のような Analytics での内部計算の結果です。

レーベンシュタイン距離 / 短い文字列内の文字数 × 100 = 相違のパーセント

任意である相違のパーセントを使用することで、ISFUZZYDUP( ) で返される誤検出の数を減らすことができます。

  • 相違のパーセントの上限は 99% です。99% では、文字列の置き換えがすべて禁止されるため、文字列が同一になります。
  • 長さに比べて多数回の編集が必要な文字列は除外されます。

使用上のヒント

  • 大文字と小文字の区別 この関数では大文字と小文字が区別されないため、"SMITH" は "smith" と同じであると判断されます。
  • 末尾にあるスペース フィールド内の末尾にあるスペースはこの関数により自動的に除去されるため、パラメーターとしてフィールドを指定するときに TRIM( ) 関数を使う必要はありません。
  • 一般要素の削除OMIT( ) 関数は、フィールド値から "Corporation" や "Inc." などの総称要素を除去することによって、ISFUZZYDUP( ) 関数の有効性を高めることができます。

    一般的要素の除去により、ISFUZZYDUP( ) の文字列比較は、意味のある違いが発生する可能性のある文字列の部分だけに集中されます。

FUZZYDUP コマンドと ISFUZZYDUP( ) 関数の相違点

FUZZYDUP コマンドでは、フィールド内のすべてのあいまい重複を特定し、それらをグループにまとめて、完全重複を除外した非網羅的な結果セットを出力します。

これに対し、ISFUZZYDUP( ) 関数は、単一の文字値に対するあいまい重複と完全重複を含む網羅的な一覧を特定します。

FUZZYDUP コマンドと ISFUZZYDUP( ) 関数はともに完全重複を特定します。しかし、ISFUZZYDUP( ) 関数を使用する場合には、FUZZYDUP コマンドとは違って完全重複を除外することができません。

「網羅的」とは

「網羅的」とは、検査値から指定された相違の度合いの範囲内であれば、検査値に関連する検査フィールド内の位置に関係なく、すべての値が返されることを意味します。

ISFUZZYDUP( ) 関数は、FUZZYDUP コマンドによって生成された非網羅的な結果では分析目的として十分でない場合や、特定の文字値のあらゆるあいまい重複について直接綿密に調べる必要がある場合に役に立ちます。

関連する関数

  • LEVDIST( ) は、レーベンシュタイン距離に基づいて文字列を比較するためのもう 1 つの手段です。

    ISFUZZYDUP( ) とは異なり、LEVDIST( ) では既定で大文字と小文字が区別されます。

  • DICECOEFFICIENT( ) は、文字列を比較するときに、文字または文字ブロックの相対位置を重視しないか、または完全に無視します。
  • SOUNDSLIKE( ) および SOUNDEX( ) は、正字法の比較(綴り)ではなく、発音記号の比較(発音)に基づいて文字列を比較します。
ACL のスクリプト作成ガイド 14.1