ファジーリストマッチャー

CRMからのエクスポートデータを請求書の顧客情報が記録されたスプレッドシートと照合したり、異なる2つのERPシステムに登録された供給業者の名称を一致させたりする際には、ほとんど常にわずかな差異によって問題が発生します(例:「Acme Corp.」対「ACME Corporation」対「acme corp.」)。両リストを貼り付け、類似度の閾値を設定すると、ツールはリストAの各項目についてリストBから最適な候補を提案し、閾値未満の項目は手動で確認するようマークします。

2つの乱れたリストをどのようにマッチさせるか

  1. 1

    リストAを貼り付けます

    1行につき1件のエントリ、顧客名、製品コード、住所。

  2. 2

    リストBを貼り付けます

    候補リストです。大文字・小文字、スペース、誤字の違いは問題ありません。

  3. 3

    しきい値を設定します

    マッチとして認める類似度の割合(70%が妥当な初期値です)。

  4. 4

    レポートを読む

    各A項目は最適なB候補と信頼度スコアとともに対応付けられます。しきい値未満の項目はレビュー用としてマークされます。

類似度はどのように測定されるか

このツールはPHPのsimilar_text(最長共通部分列に基づくスコア)を使用し、結果をパーセンテージで表示します。値が高いほど良く、完全一致は100%です。

しきい値 挙動
≥ 95% ほぼ同一、大文字・小文字やスペースの違いのみ
80–94% 誤字、句読点の欠落、末尾の切り捨て
60–79% 語順の入れ替え、略語と正式名称の違い
< 60% おそらく実際には一致していません、手動で確認してください

ヒント

  • まず正規化しましょう。よくあるノイズがわかっている場合は、小文字化、句読点の削除、空白の圧縮を行うと、より精度の高いスコアが得られます。
  • 会社の接尾辞を取り除きましょう(「Inc」「Ltd」「GmbH」など)。一方のリストにだけ不統一に付いている場合に有効です。
  • 長い住所は分割しましょう。「番地+市区町村」を個別に照合するほうが、連結した1行を照合するより効果的です。
  • 1対多に注意しましょう。 このツールは各Aエントリに対して最適なBを選びますが、同じBが複数のA行に一致するのを防ぐわけではありません。

より厳密なアルゴリズムを使うべき場合

大規模な重複排除では、レーベンシュタイン距離やジャロ・ウィンクラー法のほうがsimilar_textより高い性能を発揮します。特に文字の位置が重要な名称で顕著です。ファジーマッチングが請求やデータ統合を左右する場合は、大規模に信頼する前にランダムな20組をスポットチェックしてください。

よくある質問

70%はほとんどの正当なマッチを捉えつつ、実際の取りこぼしも示します。リストBがきれいで偽陽性を許容できない場合は85%に引き上げ、両方のリストにノイズが多く、すべてを手動で確認する予定なら55%に緩めてください。

はい、しかしまず標準化してください、スペース、ダッシュ、国コードプレフィックス、小文字のメールアドレスを削除します。生データ値に対するファジーマッチングでは、構造が同一のエントリに対して低いスコアが返されます。

このツールは内部で比較前に両方の文字を小文字に変換するため、「Apple」と「apple」はどちらも100%のスコアを得ます。

はい。マッチングはサーバー側で実行されるため、2つのリストは比較のためにツールへ送信されます。その1回のリクエストの間だけメモリ上で処理され、以降は保存もログ記録もされません。

関連ツール

このツールは他の言語でも利用できます