「名寄せ」の試行検証(2)- WEB-APIを活用した住所の照合
重要:個人情報や機密情報の使用に関する注意喚起(必ずお読みください)
当検証で紹介している技術やサービスの使用は、読者の皆様自身の判断と責任で行ってください。特に、個人情報や機密情報を含むデータの取り扱いについては、最大限の注意を払い、適切なセキュリティ対策を講じることが不可欠です。
検証や実際の利用を行う際には、常にプライバシー保護の法律、規制、およびベストプラクティスを遵守するよう心掛けてください。また、第三者のデータを使用する場合は、必要な同意を得ること、及びそのデータの使用が法律に準じていることを確認することが重要です。
本ブログや筆者、所属する団体は、紹介する技術を用いて行われるいかなる活動から生じる直接的または間接的な損害に対して、責任を負いかねます。技術を使用することによって生じ得るリスクを理解し、自己の責任で慎重にご活用ください。
ご不明点や懸念がある場合は、クラウドベンダーや専門家に相談することをお勧めします。
当検証の情報を活用することで、読者の皆様が新たな知識やスキルを安全に身に付け、ビジネスでの活用をすすめていただければ幸いです。

名寄せの実施例(住所の照合)
本稿では、サンプルデータを用いてWEB-APIを活用して名寄せを行うための住所情報の照合方法を検証します。
データの正規化
住所データの照合は、次の方法で実施します。
- 両社の顧客住所をそれぞれWEB-API(GCP Maps Geocoding API)を使って緯度と経度に変換します。
- 1で求められた2地点の地理座標間の距離を、ハヴァサイン法 (Haversine Formula)により計算します。
この変換を行うためのPythonのサンプルコードです。
Input file(calculateNamesDistance.csv)
Python source(calculateNamesDistance.py)
Output file(calcResult.json)
類似度の測定と名寄せ可否の判定
データの正規化で住所を座標に変換し、距離を求めました。その結果は次の通りです。
No | a-cd | b-cd | a-fullNm | b-fullNm | ldist | jdist | dmDist | dist |
---|---|---|---|---|---|---|---|---|
1 | 001 | 100 | tarou suzuki | tarou suzuki | 0(*1) | 1 | 0(*2) | 12.827713(*3) |
2 | 001 | 101 | tarou suzuki | yukico sugano | 10 | 0.533761 | 4 | 4.526731 |
3 | 002 | 100 | sachiko kanno | tarou suzuki | 12 | 0.463675 | 5 | 10.110540 |
4 | 002 | 101 | sachiko kanno | yukico sugano | 9 | 0.701923 | 3 | 0.000000 |
5 | 002 | 100 | yukiko kanno | tarou suzuki | 12 | 0.472222 | 5 | 10.110540 |
6 | 002 | 101 | yukiko kanno | yukico sugano | 5 | 0.888462 | 1 | 0.000000 |
7 | 002 | 100 | sachiko sugano | tarou suzuki | 10 | 0.47619 | 4 | 10.110540 |
8 | 002 | 101 | sachiko sugano | yukico sugano | 5 | 0.846986 | 2 | 0.000000 |
9 | 002 | 100 | yukiko sugano | tarou suzuki | 10 | 0.533761 | 4 | 10.110540 |
10 | 002 | 101 | yukiko sugano | yukico sugano | 1(*4) | 0.969231(*5) | 0(*6) | 0.000000(*7) |
【総括】
No | 結果 |
---|---|
1 | (*1)が0であり、(*2)が1であること、そして翻訳の候補が1つのみであることから、これらは同一の氏名とみなして問題ないと判定できます。 しかし、(*3)の通り、住所が12km離れており、この結果からみて同一人物と見なうことはできません。 |
2~9 | 類似度の低い指標が多く、同一の氏名と判定するには至りません。 |
10 | (*4)が1であることと、(*5)の値が高いことから、類似性が認められます。名前のローマ字表記において、A社では「yukiko」と記録されているのに対し、B社では「yukico」とされているため、差異が生じています。一方で、発音に基づく判定指標である(*6)は一致しており、この候補は同一の氏名である可能性が極めて高いと判定できます。 また、住所の距離が0kmと同一住所であることが認められ、同一人物である可能性が住所からも推察できます。 |
おわりに
以上、氏名と住所の類似性から名寄せを行うための一例を、サンプルデータを用いた検証を通して紹介しました。実際の業務で同一人物を判定する際には、生年月日、性別、電話番号、メールアドレスなど、他の情報を含めた総合的な判断が必要になります。
データ分析基盤における名寄せは、今回の検証で示したように、多くの検討事項があり、さまざまなアルゴリズムやサービスの利用が必要でした。データ分析基盤で個別に実施することもできますが、理想的なのはソースデータやシステムでのバリデーションであり、それがデータ品質を向上させる最善の策であると考えられます。具体的には、ソースシステムに次のような対策が有効です。
- データの標準化
- ソースシステムでデータを入力する際に、一貫した形式や規則を適用することで、表記揺れや形式の違いを最小限に抑えます。
- 例えば、住所や氏名の入力フォーマットを統一し、入力値のバリデーションを行うことで、データの一貫性を確保します。
- マスタデータ管理 (MDM)
- 顧客、製品、従業員などの重要なエンティティに対して、マスタデータ管理システムを導入し、ソースシステム間で共有される基準データを一元管理します。
- マスタデータ管理により、データの重複や矛盾を防ぎ、データの正確性と一貫性を保ちます。
- データ入力の制御
- ソースシステムでのデータ入力時に、入力フォームの設計や入力補助機能を工夫することで、誤入力や不正確なデータの発生を防ぎます。
- ドロップダウンリストやオートコンプリート機能を使用して、ユーザーが正しい値を選択できるようにします。
- データクレンジングの定期実施
- ソースシステム内のデータに対して定期的にデータクレンジングを行い、誤りや不整合を修正します。
- データクレンジングには、スペルの誤りの修正、不要な空白の削除、不正確なデータの検出と修正などが含まれます。
- データの監視と品質管理
- データの品質を継続的に監視し、品質低下の兆候を早期に検出する仕組みを設けます。
- データ品質の指標を定義し、定期的なレポートやダッシュボードを通じてデータの品質状況を可視化します。