マッチ ルールの作成

マッチ ルールを Interflow Match、Intraflow Match、および Transactional Match で使用して、1 つのレコードが別のレコードとマッチするかどうかを判断する基準を定義します。マッチ ルールでは、比較するフィールド、フィールドの比較方法、および複雑なマッチング ルール向けの比較の階層を指定します。

マッチ ルールは、Interflow Match、Intraflow Match、および Transactional Match で作成できます。Enterprise Designer のマッチ ルール管理ツールでもマッチ ルールを作成できます。マッチ ルール管理ツールでルールを作成すると、あらゆるデータフローで、そして他のユーザがそのルールを使用できるようになります。マッチャー ステージのいずれかでマッチ ルールを作成すると、そのルールはそのステージでのみ使用可能になります。ただし、[保存] ボタンをクリックしてルールを保存すれば、他のステージおよびユーザがそのルールを使用できるようになります。

  1. Enterprise Designer を開きます。
  2. 以下のいずれかの方法を実行します。
    • Interflow Match、Intraflow Match、または Transactional Match でマッチ ルールを定義する場合は、マッチ ルールを定義するマッチ ステージをダブルクリックします。[ロードするマッチ ルール] フィールドで、定義済みのマッチ ルールを作成の出発点として選択します。空のマッチ ルールで開始する場合は、[新規] をクリックします。
    • マッチ ルール管理ツールでマッチ ルールを定義する場合は、 [ツール] > [マッチ ルール管理] の順に選択します。既存のルールを独自ルールの作成の出発点として使用する場合は、[コピー元] ボックスをオンにして、出発点として使用するルールを選択します。
  3. マッチ ルールで使用するデータフロー フィールドと、マッチ ルール階層を指定します。
    1. [親の追加] をクリックします。
    2. 親の名前を入力します。名前は一意であり、フィールドであってはなりません。階層の最初の親は、[ロードするマッチ ルール] フィールドのマッチ ルール名として使用されます。作成したすべてのカスタム マッチ ルールと変更した定義済みルールは、名前の前に "Custom" という語が付加されて保存されます。
    3. [子の追加] をクリックします。ルール階層内にドロップダウン メニューが表示されます。親に追加するフィールドを選択します。
      注: 親の下のすべての子は、同じ論理演算子を使用する必要があります。フィールド間で異なる論理演算子を使用する場合は、まず中間の親を作成する必要があります。
    4. この操作を繰り返してマッチング階層を完成させます。
  4. 親オプションを定義します。親ノードを選択すると、ルール階層の右側に親オプションが表示されます。
    1. [真でない場合に一致] をクリックして、親の論理演算子を AND から AND NOT に変更します。このオプションをオンにすると、この親で定義されているロジックに一致しないレコードのみがマッチします。
      注: [真でない場合に一致] オプションをオンにすると、 [マッチング方法] オプションが無効になります。詳細については、「否定のマッチ条件」を参照してください。
    2. [マッチング方法] フィールドで、親がマッチするかどうかを判断する方法を指定します。次のいずれかです。
      すべて真
      すべての子がマッチすると確認された場合にマッチすると見なします。この方法を選択すると、子の間に "AND" コネクタが作成されます。
      いずれかが真
      少なくとも 1 つの子がマッチすると確認された場合にマッチすると見なします。この方法を選択すると、子の間に "OR" コネクタが作成されます。
      しきい値で判断
      親のスコアがそのしきい値に等しいか、それよりも大きい場合にマッチすると見なします。このオプションを選択すると、[しきい値] スライダーが表示されます。このスライダーを使ってしきい値を指定します。スコアリング方法によって、使用する論理コネクタが決定されます。親のしきい値を子のしきい値より高くすることはできません。
      注: ここで設定したしきい値は、実行時に [データフロー オプション] ダイアログ ボックスを使って変更できます。[編集] > [データフロー オプション] に移動し、[追加]をクリックします。ステージを展開し、[最上位しきい値] をクリックして、[デフォルト値] フィールドにしきい値を入力します。
    3. [欠落データ] フィールドで、フィールド内の空白データのスコアの計算方法を指定します。次のいずれかです。
      空白を無視
      フィールドに空白データが入っている場合、そのフィールドを無視します。
      0 としてカウント
      フィールドに空白データが入っている場合、そのフィールドのスコアを 0 とします。
      100 としてカウント
      フィールドに空白データが入っている場合、そのフィールドのスコアを 100 とします。
      空白を比較

      サスペクトと候補のフィールドのスコアを、両方のフィールドに空白データが含まれる場合は 100、それ以外の場合は 0 とします。

    4. [スコアリング方法] フィールドで、マッチング スコアの決定に使用する方法を選択します。次のいずれかです。
      加重平均
      各子の重みを使用して、平均マッチ スコアを決定します。
      平均
      各子の平均スコアを使用して、親のスコアを決定します。
      最大値
      子の最も高いスコアを使用して、親のスコアを決定します。
      最小値
      子の最も低いスコアを使用して、親のスコアを決定します。
      ベクトル和
      それぞれの子のベクトル和を使用して、親のスコアを決定します。計算式は次のとおりです。

      sqrt(a^2 + b^2 + c^2) / sqrt(n)。ここで、a、b、および c は 3 つの子のスコアであり、n は子の数です。

      次の表に、マッチング方法とスコアリング方法の論理的な関係、およびそれぞれの組み合わせによってマッチング処理時に使用されるロジックがどのように変わるかを示します。

      表 1. マッチング方法とスコアリング方法の表
      スコアリング方法 マッチング方法 コメント
      いずれかが真 すべて真 しきい値で判断
      加重平均 不可 AND AND マッチング方法として [すべて真] または [しきい値で判断] が選択されている場合にのみ使用可能です。
      平均 不可 AND AND
      ベクトル和 不可 AND AND
      最大値 または 不可 または マッチング方法として [いずれかが真] または [しきい値で判断] が選択されている場合にのみ使用可能です。
      最小値 または 不可 または
  5. 子オプションを定義します。子を選択すると、ルール階層の右側に子オプションが表示されます。
    1. 選択された子レコード フィールドを入力ファイル内のフィールドにマッピングするには、[候補フィールド] オプションをオンにします。
    2. 2 つのレコードの間で異なるフィールドを互いにマッチングするには、 [クロスマッチ対象] オプションをオンにして、ドロップダウン リストから 1 つ以上の項目を選択します。マッチ ルール管理ツールを使用してマッチ ルールを作成または編集する場合は、ドロップダウン リストはなく、各フィールド名をカンマで区切って入力する必要があります。
    3. [真でない場合に一致] をクリックして、論理演算子を AND から NOT に変更します。このオプションをオンにすると、レコードがこの子で定義されているロジックに一致しない場合のみ、マッチ ルールが真として評価されます。

      例えば、複数のアカウントに関連付けられている個人を特定したい場合、名前は一致するがアカウント番号は一致しないマッチ ルールを作成することができます。アカウント番号をマッチングする子に対して [真でない場合に一致] オプションを使用します。

    4. [欠落データ] フィールドで、フィールド内の空白データのスコアの計算方法を指定します。次のいずれかです。
      空白を無視
      フィールドに空白データが入っている場合、そのフィールドを無視します。
      0 としてカウント
      フィールドに空白データが入っている場合、そのフィールドのスコアを 0 とします。
      100 としてカウント
      フィールドに空白データが入っている場合、そのフィールドのスコアを 100 とします。
      空白を比較

      サスペクトと候補のフィールドのスコアを、両方のフィールドに空白データが含まれる場合は 100、それ以外の場合は 0 とします。

    5. [しきい値] フィールドで、マッチと判断されるために個々のフィールド レベルで満たす必要があるしきい値を指定します。
    6. [スコアリング方法] フィールドで、マッチング スコアの決定に使用する方法を選択します。次のいずれかです。
      加重平均
      各アルゴリズムの重みを使用して、平均マッチ スコアを決定します。
      平均
      各アルゴリズムの平均スコアを使用して、マッチ スコアを決定します。
      最大値
      最も高いアルゴリズムのスコアを使用して、マッチ スコアを決定します。
      最小値
      最も低いアルゴリズムのスコアを使用して、マッチ スコアを決定します。
      ベクトル和
      各アルゴリズムのスコアのベクトル和を使用して、マッチ スコアを決定します。このスコアリング方法は、最終的なマッチ スコアで比例的に表される 1 つ以上のアルゴリズムでより高いマッチ スコアが求められる場合に便利です。最終的なスコアの計算に使用される式は、次のとおりです。

      sqrt(a^2 + b^2 + c^2) / sqrt(n)。ここで、a、b、および c は 3 つの異なるアルゴリズムのスコアであり、n は使用するアルゴリズムの数です。

    7. フィールドの値がマッチするかどうかを確認するために使用する 1 つ以上のアルゴリズムを選択します。次のいずれかを選択します。
      Acronym (頭字語)
      頭字語データを探し、企業名がその頭字語にマッチするかどうかを判定します。あるいは、各単語の最初の文字を使用して頭字語を作成します。例: Internal Revenue Service とその頭字語 IRS はマッチすると判断され、マッチ スコア 100 が返されます。
      Character Frequency (文字出現回数)
      文字列に含まれるすべての文字の出現回数を個別に確認し、2 つの文字列における全体的な出現回数を比較します。
      Daitch-Mokotoff Soundex
      発音が同じでも綴りが異なるスラブ語およびイディッシュ語の姓をより正確にマッチングできるようにする音声アルゴリズム。コード化された名前の長さは 6 桁で、1 つの名前に対して可能性のある複数のエンコーディングを返すことができます。このオプションは、ドイツ系またはスラブ系の姓を処理する際の Soundex の制限に対応するために作成されました。
      Date
      日付のフォーマットにかかわらず、入力レコードに含まれる日付を比較します。[オプション] 列の [編集] をクリックして、次のオプションを指定します。
      • 月を必須とする: 年のみで構成される日付のマッチングを防ぎます。
      • 日を必須とする: 月と年のみで構成される日付のマッチングを防ぎます。
      • MM/DD という転置形式もマッチとみなす: 月と日が数値形式で指定されている場合に、サスペクトの月と候補の月、サスペクトの日と候補の日という標準的な比較に加えて、サスペクトの月と候補の日、サスペクトの日と候補の月の比較を行います。
      • MM/DD/YYYY ではなく DD/MM/YYYY 形式を優先する: 月と日がともに数値形式で指定されており、両者が文脈からは識別できない場合の日付のパーシングに使用します。例えば、数字が 5 と 13 の場合、パーサーは自動的に 5 を月に、13 を日に割り当てます。1 年に 12 カ月しかないためです。しかし、数字が 5 と 12 (または、ともに 12 以下の任意の 2 つの数字) の場合、パーサーは最初の数字が月であるとみなします。このオプションを選択することにより、パーサーが最初の数字を月ではなく日として読むように指定することができます。
      • 範囲オプション — 全体: マッチング日付間の最大日数を設定できます。例えば、全体範囲として 35 日と入力し、候補日付が 2000/12/31 の場合、サスペクト日付 2001/02/05 はマッチですが、サスペクト日付 2001/02/06 はマッチではありません。全体範囲として 1 日と入力し、候補日付が 2000/01 の場合、サスペクト日付 1999 はマッチですが (1999/12/31 と比較します)、サスペクト日付 2001/01 はマッチではありません。
      • 範囲オプション — 年: 月、日とは別に、マッチング日付間の年数を設定できます。例えば、年の範囲として 3 年と入力し、候補日付が 2000/01/31 の場合、サスペクト日付 2003/01/31 はマッチですが、サスペクト日付 2003/02 はマッチではありません。同様に、候補日付が 2000 の場合、サスペクト日付 2003/03 は月の不整合がなく、3 年の範囲内にあるので、マッチとなります。
      • 範囲オプション — 月: 年、日とは別に、マッチング日付間の月数を設定できます。例えば、月の範囲として 4 と入力し、候補日付が 2000/01/01 の場合、サスペクト日付 2000/05 は日の不整合がなく、4 カ月の範囲内にあるのでマッチですが、サスペクト日付 2000/05/02 は日の不整合があるためマッチではありません。
      • 範囲オプション — 日: 年、月とは別に、マッチング日付間の日数を設定できます。例えば、日の範囲として 5 と入力し、候補日付が 2000/01/01 の場合、サスペクト日付 2000/01 は日の不整合がないのでマッチですが、サスペクト日付 1999/12/27 は月の不整合があるためマッチではありません。
      Double Metaphone
      文字の発音表記に基づいて、2 つの文字列間の類似性を判断します。Double Metaphone は Metaphone アルゴリズムの改良版で、さまざまな言語に多数存在する不規則性を考慮しています。
      Edit Distance (編集距離)
      1 つの文字列をもう 1 つの文字列に変換するために必要な削除、挿入、または置換の数に基づいて、2 つの文字列間の類似性を判断します。
      Euclidean Distance
      結合された語のベクトル空間を次元として使用して、2 つの文字列間の類似性の尺度を提供します。2 つの整数の最大公約数も判断します。1 組の正の整数から、小さい方の数と 2 つの数の差で構成される新しい 1 組の数字を形成します。2 つの数字が等しくなるまでこのプロセスを繰り返します。その数字が元のペアの最大公約数となります。例えば、21 は 252 と 105 の最大公約数です (252 = 12 × 21、105 = 5 × 21)。したがって、252 − 105 = (12 − 5) × 21 = 147 なので、147 と 105 の最大公約数も 21 です。
      Exact Match (完全一致)
      2 つの文字列が同じであるかどうかを判断します。
      Initials (頭文字)
      パースした個人名の頭文字のマッチングに使用します。
      Jaro-Winkler Distance (Jaro-Winker 距離)
      1 つの文字列をもう 1 つの文字列に変換するために要する文字の置換の数に基づいて、2 つの文字列間の類似性を判断します。このオプションは、個人名などの短い文字列用に開発されました。
      Keyboard Distance (キーボード距離)
      キーボード上のキーの位置によって重みを付け、1 つの文字列をもう一方の文字列に変換するために必要な削除、挿入、または置換の数に基づいて、2 つの文字列間の類似性を判断します。[オプション] 列の [編集] をクリックして、使用しているキーボードのタイプを QWERTY (米国)、QWERTZ (オーストリアおよびドイツ)、または AZERTY (フランス) の中から指定します。
      Koeln
      ドイツ語で発音される名前に、音声によってインデックスを付けます。同じ発音を持つ名前を同じ表現にエンコードできるので、綴りに小さな相違があっても、マッチさせることができます。結果は常に一連の数字です。特殊文字および空白は無視されます。このオプションは、Soundex の制限に対応するために作成されました。
      Kullback-Liebler Distance
      2 つの文字列内の単語の分散の相違に基づいて、2 つの文字列間の類似性を判断します。
      Metaphone
      文字の発音表記に基づいて、2 つの英語の文字列間の類似性を判断します。このオプションは、Soundex の制限に対応するために作成されました。
      Metaphone (スペイン語)
      文字の発音表記に基づいて、2 つの文字列間の類似性を判断します。このオプションは、Soundex の制限に対応するために作成されました。
      Metaphone 3
      Metaphone アルゴリズムおよび Double Metaphone アルゴリズムを、より正確な子音および内部母音の設定で改良したもので、単語または名前の一致性を高く、または低くして、音声ベースで語を検索できるようにします。Metaphone 3 では、音声エンコーディングの精度が 98% に向上しています。このオプションは、Soundex の制限に対応するために作成されました。
      Name Variant (名前の派生形)
      2 つの名前が互いの派生形であるかどうかを判断します。このアルゴリズムは、2 つの名前が互いの派生形である場合はマッチ スコア 100 を返し、互いの派生形でない場合はマッチ スコア 0 を返します。例えば、JOHN は JAKE の派生形なので、マッチ スコア 100 が返されます。JOHN は HENRY の派生形ではないので、マッチ スコア 0 が返されます。[オプション] 列の [編集] をクリックして、[Name Variant (名前の派生形)] オプションを選択します。詳細については、「Name Variant Finder」を参照してください。
      NGram Distance

      後続の語の蓋然性を前の n 個の語に基づいて計算します。この語には、音素、シラブル、文字、単語、基本対、または任意の組み合わせの文字が含まれます。このアルゴリズムには NGram のサイズを入力するオプションがあります。サイズのデフォルト値は 2 です。

      NGram Similarity

      2 つの文字列の類似度を、音素、シラブル、文字、単語、または基本対の最長の共通部分系列の長さに基づいて求めます。

      このアルゴリズムには、以下のオプションが含まれています。

      • Ngram サイズ: NGram のサイズを入力します。デフォルト値は 2 です。
      • ノイズ文字の除去: 句読文字を空白で置き換える場合はこのチェック ボックスをオンにします。
      • 空白の除去: 単語をマージする場合はこのチェック ボックスをオンにします。
      Numeric String (数値文字列)
      住所行の数値属性を文字から分離して、住所行を比較します。例えば、住所文字列 1234 Main Street Apt 567 では、文字列の数値属性 (1234567) がパースされ、残りの文字列値 (Main Street Apt) とは異なる処理が行われます。このアルゴリズムでは、まず数値アルゴリズムを使用して、文字列の中の数値データが照合されます。数値データのマッチが 100 の場合、Edit Distance と Character Frequency を使用して、英字データが照合されます。最終的なマッチ スコアは次のように計算されます。

      (numericScore + (EditDistanceScore + CharacterFrequencyScore) / 2) / 2

      例えば、以下の 2 つの住所は次のように計算され、マッチ スコアは 95.5 になります。

      123 Main St Apt 567
      123 Maon St Apt 567

      数値スコア = 100
      Edit Distance (編集距離) = 91
      Character Frequency (文字出現回数) = 91

      91 + 91 = 182
      182/2 = 91
      100 + 91 = 191
      191/2 = 95.5

      Nysiis
      近似の発音と正確な綴りをマッチさせ、同じように発音される単語にインデックスを付ける、音声コード アルゴリズム。New York State Identification and Intelligence System の一部です。例えば、住民のデータベースで誰かの情報を探しているとします。その人物の名前は "John Smith" のように聞こえますが、実際の綴りは "Jon Smath" です。"John Smith" の完全一致を探す検索を実行した場合、返される結果はありません。しかし、NYSIIS アルゴリズムを使用してデータベースにインデックスを作成し、再度 NYSIIS アルゴリズムを使用して検索した場合は、正しいマッチが返されます。なぜなら、"John Smith" と "Jon Smath" は、このアルゴリズムによってどちらも "JANSNATH" というインデックスが付けられているからです。このオプションは、Soundex の制限に対応するために作成されました。Soundex と異なり、いくつかのマルチキャラクタ N グラムを処理し、相対母音位置を維持します。
      注: このアルゴリズムは、英字以外の文字を処理しません。英字以外の文字を含むレコードの処理は失敗します。
      Phonix
      100 を越える変換ルールを適用することによって、名前文字列を単一の文字またはいくつかの文字のシーケンスに前処理します。これらのルールのうち 19 個は文字がその文字列の先頭にある場合にのみ適用され、12 個はその文字列の中間にある場合にのみ適用され、28 個は文字列の終わりにある場合にのみ適用されます。変換された名前文字列は、開始文字とそれに続く 3 桁 (ゼロおよび重複する数字を削除) で構成されるコードにエンコードされます。このオプションは、Soundex の制限に対応するために作成されました。このオプションは複雑なため、Soundex より遅くなります。
      Sonnex
      このアルゴリズムは、文字の発音表記に基づいて、2 つのフランス語の文字列間の類似性を判断します。
      選択したフィールドを Sonnex コード化したキーを返します。
      Soundex
      文字の発音表記に基づいて、2 つの文字列間の類似性を判断します。
      SubString (部分文字列)
      1 つの文字列が別の文字列内に出現するかどうかを判断します。
      Syllable Alignment
      音声情報と編集距離ベースの計算を組み合わせます。比較される文字列を対応する音節シーケンスに変換し、1 つの音節シーケンスを他の音節シーケンスに変換するのに必要な編集の数を計算します。

      次の表に、選択した親のスコアリング方法と、使用できるアルゴリズム数との論理的関係を示します。

      表 2. マッチング アルゴリズムとスコアリング方法の表
      スコアリング方法 アルゴリズム
      単一 複数
      加重平均 不可 はい
      平均 不可 はい
      最大値 はい はい
      最小値 不可 はい
      ベクトル和 不可 はい
  6. Interflow Match、Intraflow Match、または Transactional Match でルールを定義し、そのルールを他のステージや他のユーザと共有する場合は、ウィンドウの上部にある [保存] ボタンをクリックします。