1

レコードリンクのファジーマッチアルゴリズムを使用して2つのデータ要素またはフィールドを比較することを検討していますが、それぞれの比較に最適なアルゴリズムを決定したいと考えています。私は比較することで探していますファジーマッチアルゴリズムを使用してデータ要素を比較する最良の方法

フィールドは、次のとおりです。

  • 性別
  • 出生年
  • 誕生月
  • 誕生日
  • SSN
  • 会員番号
  • MRN
  • ストリートナンバー
  • ストリート名
  • ストリートタイプ
  • ストリート方向性
  • ジップ
  • 電話
私は現在、利用しています0

近似文字列マッチングアルゴリズム(のASM)は、次のとおりです。

  • レーベンシュタイン距離
  • ハミング距離
  • ジャカードの距離
  • JAROの距離
  • JARO-ウィンクラー距離
  • 最長共通部分配列
  • 最長共通サブ配列グラム
  • オーバーラップ係数
  • ラトクリフ-Obershelpの類似性
  • ソレンセンダイスの距離
  • 谷本係数
  • Damerau-レーベンシュタイン距離
  • ワグナー・フィッシャーの距離
  • のSoundex
  • Metaphoneの3
  • NYSIIS

まず、FirstName1FirstName2のような2つのフィールドを比較し、完全に一致するかどうかを確認します。

たとえば、FirstName1 = "Bob"FirstName2 = "Bob"は完全一致であるため、ファジーマッチングに移行しません。

一方、FirstName1 = "Jill"FirstName2 = "Bob"は、2つのフィールドのファジー比較に移行します。

ファジィマッチアルゴリズムが特定のフィールド比較で使用する方が良いとわかっていれば知りたいのですが、その逆もあります。

+0

この質問は、文字列比較アルゴリズムの素敵なリストとして役立ちます! –

答えて

0

エンティティ解決のための類似のコードを書きました。しかし、キーはで、すべてのフィールドがであるとは限りません。たとえば、ではなくはASMをSSNで使用する必要があります。数字/文字が異なる場合でも、全く異なるSSNと人です。

ファジー一致のアドレスコンポーネントの代わりに、まずアドレスを解決してから完全に一致させようとします。例えば、優れたアドレス解決サービスを扱います:

Second Street NWNW 2nd St

同じ通りとして、彼らはすべてのそれらのメトリックによって、非常に悪いの類似性を持っているにもかかわらず。

同様に、Googleの電話番号解析ライブラリ(C#、Javaなどで利用可能)を使用して、標準の方法ですべての電話番号を書式設定し、直接比較することができます。

私はJaro-Winklerを使用して名前のコンポーネントを比較しましたが、リストしたメトリックのいくつかを調査しませんでした。

要するに

正規化し、代わりにファジーマッチの

を比較します。

関連する問題