FUZZYDUP コマンド

Concept Information

あいまい重複の検査

文字フィールドでほぼ同一の値(あいまい重複)を検出します。

メモ

曖昧一致を使用して、2 つの Analytics テーブルのフィールドを組み合わせて 1 つの新しい Analytics テーブルにする手順については、FUZZYJOIN コマンドを参照してください。

構文

FUZZYDUP ON キー フィールド <OTHER フィールド <...n>|OTHER ALL <EXCLUDE フィールド名 <...n>>> LEVDISTANCE  <DIFFPCT 割合> <RESULTSIZE 割合> <EXACT> <IF テスト> TO テーブル名 <LOCAL> <OPEN>

パラメーター

名前 説明
ON キーフィールド あいまい重複をテストする文字フィールドまたは式。
OTHER フィールド <...n> | OTHER ALL

省略可能

出力に含める 1 つ以上の追加フィールド。

  • OTHER フィールド<...n> 指定されたフィールドが含まれます

    フィールドはリストする順序で含まれます。

  • OTHER ALL キー フィールドとして指定しなかった、テーブル内のすべてのフィールドが含まれます。

    フィールドは、テーブル レイアウトに現れる順序と同じ並びで含まれます。

EXCLUDE フィールド名

省略可能

OTHER ALL を使用するときにのみ有効です。

コマンドから除外するフィールド。EXCLUDE では、指定したフィールドを除外して、OTHER ALL を微調整できます。

EXCLUDE は OTHER ALL の直後に置く必要があります。例:

OTHER ALL EXCLUDE field_1 field_2
LEVDISTANCE

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

LEVDISTANCE の値は 1 未満にすることや、10 を超えることはできません。LEVDISTANCE の値を大きくすると、あいまい度が高い値(相互の関連性が低い値)が含まれるため、結果の件数が多くなります。

詳細については、FUZZYDUP 動作を参照してください。

DIFFPCT 割合

省略可能

「相違のパーセント」、つまり、文字列のうち異なっていてもよい割合を制限するしきい値。

あいまい重複の可能性のあるペアが結果に含まれるためには、そのペアに対して実行される Analytics 内部での計算によって出力されるパーセントは、DIFFPCT の値以下である必要があります。DIFFPCT の値は 1 未満にすることや、99 を超えることはできません。

DIFFPCT が省略された場合、しきい値はオフになり、FUZZYDUP コマンドの処理時に相違のパーセントは考慮されません。

詳細については、FUZZYDUP 動作を参照してください。

RESULTSIZE 割合

省略可能

キー フィールドのレコード数の割合として、出力結果のセットの最大サイズ。

たとえば、50,000 個の値を持つキー フィールドの場合、RESULTSIZE に 3 を設定すると、結果のあいまい重複数が 1500 を超えた場合(50,000 x 0.03)に処理が終了します。処理が終了した場合、出力テーブルは作成されません。

RESULTSIZE の値は 1 未満にすることや、1000 パーセントを超えることはできません。1000% の上限は多対多一致の本質に対応するためのものです。多対多一致では、元の検査データ セットより大きい結果が生成されるかもしれません。

RESULTSIZE が省略された場合、しきい値はオフになり、FUZZYDUP コマンドの処理時に結果のサイズは考慮されません。

注意

RESULTSIZE を省略すると、過度に大きな結果のセットが生成され、処理時間が非常に長くなったり、使用可能なメモリの超過を引き起こして、処理が終了したりする可能性があります。結果が管理可能なサイズになると確信している場合にのみ、RESULTSIZE を省略してください。

EXACT

省略可能

あいまい重複だけでなく完全な重複も結果に含まれます。

IF テスト

省略可能

各レコードを処理するために真である必要がある条件式。コマンドは、その条件を満たすレコードに対してのみ実行されます。

メモ

IF パラメーターは、任意の範囲パラメーター(WHILE、FIRST、NEXT)が適用された後に、テーブルに残るレコードに対してのみ評価されます。

TO テーブル名

コマンドの結果を送信する場所:

  • テーブル名は、結果の保存先となる Analytics テーブルのことです。

    テーブル名には、ファイル拡張子 .FIL を付けた文字列を引用符で囲んで指定する必要があります。例:TO "Output.FIL"

    デフォルトでは、テーブル データ ファイル(.fil)は、Analytics プロジェクトが入っているフォルダーに保存されます。

    既存の異なるフォルダーにデータ ファイルを保存するには、絶対または相対ファイル パスを指定します。

    • TO "C:\Output.FIL"
    • TO "Results\Output.FIL"

    メモ

    テーブル名は 64 文字の英数字(.FIL 拡張子を含まない)に制限されています。名前にはアンダースコア文字(_)を使用できますが、他の特殊文字やスペースは使用できません。名前の先頭を数字にすることはできません。

LOCAL

省略可能

Analytics プロジェクトと同じ場所に出力ファイルを保存します。

メモ

Analytics テーブルである出力ファイルを含むサーバー テーブルに対してコマンドを実行するときにのみ適用されます。

LOCAL パラメーターは TO パラメーターの直後に置く必要があります。

OPEN

省略可能

コマンドを実行した後、コマンドによって作成されたテーブルを開きます。コマンドが出力テーブルを作成する場合にのみ有効です。

Analytics の出力変数

名前 含む
GAPDUPn

コマンドによって確認されたギャップ、重複、またはあいまい重複グループの合計数。

あいまい重複の姓フィールドのテスト

姓フィールドであいまい重複を検査(Last_Name フィールドは、ACL DATA\Sample Data Files\Metaphor_Employee_Data.ACLEmployee_List テーブルにあります)します。結果は新しい Analytics テーブルに出力されます。

  • 検査フィールドに加え、他のフィールドも結果に含まれます。
  • 許容される最大のレーベンシュタイン距離は 1 です。
  • 異なってもよい文字列の割合は 50% に制限されています。
  • 結果のサイズは、検査フィールドのサイズの 20% に制限されています。
  • あいまい重複に加え、完全な重複も含まれます。
OPEN Employee_List
FUZZYDUP ON Last_Name OTHER First_Name EmpNo LEVDISTANCE 1 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Fuzzy_Last_Name" OPEN

備考

機能の仕組み

FUZZYDUP コマンドは、ほぼ同一の値(あいまい重複)の検出や、手作業で入力されたデータで一貫性のないつづりを見つけます。

ISFUZZYDUP( ) 関数は、単一の文字値に対するあいまい重複の完全な一覧を識別します。それとは異なり、FUZZYDUP コマンドでは、フィールド内のすべてのあいまい重複を識別し、それらを完全でないグループにまとめて、結果を出力します。

このコマンドの動作の詳細については、あいまい重複分析を参照してください。

「網羅的でない」とは

「完全でない」とは、結果のあいまい重複の個々のグループには、そのグループ所有者の指定された相違の度合いの範囲内にある、検査フィールドのすべてのあいまい重複が含まれない可能性があることを意味します。ただし、グループ所有者が検査フィールド内の別の値のあいまい重複である場合は、2 つの値が結果のどこかのグループに一緒に現れます。このため、グループは完全ではない可能性がありますが、全体の結果は完全です。

分析において、検査フィールド内の特定の値に対するあいまい重複の、単一かつ完全な一覧を生成することが重要な場合は、この目的のために ISFUZZYDUP( ) 関数を使用することができます。

FUZZYDUP 動作

FUZZYDUP コマンドには、2 つのパラメーターがあります。これらを指定して、あいまい重複間の相違の度合いや結果のサイズを制御することができます。

  • LEVDISTANCE
  • DIFFPCT

これらの 2 つのパラメーターの設定の組み合わせをいろいろ試してみて、特定のデータ セットでどれが最も良い状態で機能するかを調べる必要があるかもしれません。

LEVDISTANCE (レーベンシュタイン距離)

データの処理中に、FUZZYDUP コマンドは、検査フィールドで評価される文字列のペアごとにレーベンシュタイン距離を計算し、相違のパーセントを求めます。レーベンシュタイン距離は、ある文字列を別の文字列にするために必要な、1 文字の編集の最小回数を示す値です。詳細については、LEVDIST( ) 関数を参照してください。

DIFFPCT (相違のパーセント)

相違のパーセントは、評価される 2 つの文字列の長さが異なるとき、それらのうち短い方に対する割合であり、2 つの文字列間のレーベンシュタイン距離を使用する、次のような Analytics 内部での計算の結果です。

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

詳しい情報

あいまい重複のさまざまな設定、結果サイズの制御、およびあいまい重複のグループに関する詳細については、あいまい重複分析を参照してください。

大文字と小文字の区別

FUZZYDUPコマンドでは大文字と小文字が区別されないため、"SMITH" は "smith" と同じであると判断されます。

最後の空白は自動的に削除されます

FUZZYDUP コマンドは、キーフィールド内の末尾にあるスペースを自動的に除去するため、キー フィールドの単一フィールドを指定するときに TRIM( ) または ALLTRIM( ) 関数を使う必要はありません。

キー フィールドのフィールドを連結する場合は、以下のように、ALLTRIM() を使用してください。

FUZZYDUP の効果の改善

次の 3 つの手法は FUZZYDUP コマンドの効果を大幅に高めることができます。

  • テスト フィールド値の個別の要素を並べ替える
  • テスト フィールド値から汎用要素を削除する
  • テスト フィールドを連結する

これらの手法では、誤検出が少なく、真の検出が多い、より絞り込まれた結果セットを生成します。これらの手法は別々に使用するか組み合わせて使用できます。

テスト フィールド値の個別の要素を並べ替える

SORTWORDS( ) 関数は、テスト フィールド値の個別の要素を連続する順序に並べ替えることで、FUZZYDUP コマンドの効果を高めることができます。

アドレスの構成要素などの要素を並べ替えると、同じ情報を含む、形式が異なり、相互により密接に類似した 2 つの文字列を作成できます。より密接な類似性により、文字列の組み合わせが相互のあいまい重複として選択される確率が上がります。

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

SORTWORDS( ) の概要を説明する動画については、「Fuzzy Matching Using SORTWORDS()」(英語のみ)をご覧ください。

テスト フィールド値から汎用要素を削除する

OMIT( ) 関数は、テスト フィールド値から "Corporation" や "Inc."、カンマ、ピリオド、アンパサンド(&)文字などの一般的要素を除去することによって、 FUZZYDUP コマンドの効果を高めることができます。

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

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

テスト フィールドを連結する

2 つ以上の検査フィールドを連結すると、検査値の一意性の度合いが増すことによって、FUZZYDUP コマンドの有効性を高めることができます。

たとえば、住所フィールドと市区郡フィールドを連結することで、別の市の住所との曖昧一致を回避できます。

FUZZYDUP ON ALLTRIM(Address)+ALLTRIM(City) OTHER Address City Vendor_Name LEVDISTANCE 4 DIFFPCT 50 RESULTSIZE 20 EXACT TO "Vendor_Name_Fuzzy_Dupes" OPEN

その他の文字列比較方法

  • DICECOEFFICIENT( ) 関数は、文字または文字ブロックの相対位置を重視しない、または完全に無視して文字列を比較するための方法を提供します。
  • SOUNDSLIKE( ) 関数および SOUNDEX( ) 関数は、正字法の比較(綴り)ではなく、発音記号の比較(発音)に基づいて文字列を比較するための方法を提供します。