By · Last updated 2026-05-27

ブログに戻るテクニカル

GDPR準拠のMLトレーニングデータ:コードを書かずに10,000件のレコードを匿名化する方法

GDPRは、元の収集目的を超えてMLトレーニングに個人データを使用することを制限しています。アドホックなPythonスクリプトに依存するデータサイエンティストは、一貫性がなく、監査準備が整っていない匿名化を作成します。バッチ処理により、GDPR準拠のトレーニングデータセットが45分で生成されます。

May 27, 20267 分で読めます
ML training dataGDPR data scienceSchrems IItraining dataset anonymizationresponsible AI

スクリプト一本では足りない

データサイエンスチームなら、こんなコードを書いたことがあるはずだ。

import re
def anonymize_email(text):
    return re.sub(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}', '[EMAIL]', text)

これはメールアドレスを置換するだけだ。それ以上ではない。データセットには名前、電話番号、医療IDがまだ含まれている。GDPRの監査に合格しないだろう。

「メールを匿名化した」と「このデータセットはGDPR準拠だ」の間には大きな差がある。チームは常にこれを過小評価している。

GDPRがMLトレーニングを制限する理由

GDPR第5条(1)(b)が重要な規定だ。目的制限原則と呼ばれる。個人記録は収集された目的のためにのみ使用できる。

顧客注文は注文処理のために収集された。レコメンデーションモデルのトレーニングのためではない。医療記録は治療のために収集された。再入院予測モデルのトレーニングのためではない。アンケート回答は製品フィードバックのために収集された。感情分類器のトレーニングのためではない。

これらの記録をMLトレーニングに使用するには、チームは次の三つのいずれかが必要だ。

  1. ML目的のために各個人からの明示的な同意 — 取得が難しく、遡って取得するのはしばしば不可能
  2. ML使用が収集と互換性があることを示す正当な利益評価 — 法的に不確実で、データ保護当局に依存する
  3. 匿名化 — 個人情報を置換または削除し、データセットがGDPRの下で個人情報でなくなるようにする

適切な匿名化が最大の法的確実性を提供する。課題は毎回正しく実施することだ。

単発スクリプトの問題

データセットごとに新しいPythonスクリプトを書くチームは、積み重なる問題を生む。

不完全な対象範囲。 一つのスキーマのために作られたスクリプトは新しいフィールドを見逃す。六ヶ月前に追加された臨床メモ列? 正規表現に含まれていない。ミドルネームのフィールド? スクリプトは姓と名のパターンしか処理しない。

一貫性がない。 データセットAはscript_v1で処理された。データセットBはscript_v3で。データセットCは別のチームメンバーが処理した。結合されたトレーニングセットには三種類の手法が混在する。DPOはこれを認証できない。

監査証跡がない。 スクリプトが実行された。何を変更したのか? どのエンティティが見つかったのか? 処理記録がなければ、コンプライアンスは不可能だ。当局の審査官が「このトレーニングセットが適切に処理されているとどうやって分かるのか?」と尋ねたとき、「Pythonスクリプトを実行しました」という回答では不十分だ。

モデルのドリフト。 2023年に機能していた正規表現パターンは、2024年の新しい識別子形式を検出しない。スクリプトは自動更新されない。

バッチ処理のデモンストレーション

医療AIチームが8,000件の患者記録を匿名化する必要がある。米国チームはEUのオフィスからアクセスが必要だ。Schrems IIが適用される — EU起源の記録は適切な保護措置なしに米国インフラに転送できない。

従来のアプローチ: データエンジニアがカスタムスクリプトを書く。開発に二〜三日。DPOレビューに一〜二日。修正に一日。合計:四〜六日。MLプロジェクトが遅延する。

バッチ処理アプローチ:

  1. 8,000件の記録をCSVとしてエクスポート
  2. バッチ処理にアップロード
  3. エンティティタイプを設定:PERSON、EMAIL_ADDRESS、PHONE_NUMBER、US_SSN、MEDICAL_RECORD、DATE_OF_BIRTH、LOCATION
  4. 手法を選択:置換(構造を保持するためにリアルな合成値に置換)
  5. 処理:8,000件の記録に45分
  6. クリーンなCSVをダウンロード
  7. DPOが処理メタデータを確認 — レコードごとのエンティティ数、適用された手法:2時間
  8. DPOが承認。転送が実施される。

合計時間:45分プラスDPOレビュー2時間。四〜六日の代わりに。

これらのステップがArticle 10の義務をどのように満たすかについては、EU AI法トレーニングガイドを参照してほしい。

MLに使う置換と黒塗り

匿名化の手法はモデルの品質に影響する。

黒塗りはPIIを**[黒塗り]のようなトークンに置換する。PII検出モデルには機能する。他のタスク — 感情分析、分類、推薦 — には有害だ。モデルは[黒塗り]**が特殊トークンであることを学習する。名前や値の自然な分布から学習できなくなる。

置換は「John Smith」を「David Chen」に交換する。「jsmith@company.com」を「dchen@synthetic.com」に交換する。構造はそのまま保たれる。エンティティの配置、共起パターン、文の流れ — すべて保持される。モデルはリアルなコンテキストから学習する。

MLトレーニングセットには、置換が正しい選択だ。モデルは偽の値を学習しない。その周囲のパターンを学習する。それが重要なことだ。

Schrems IIと国境を越えたデータ転送

Schrems II判決(CJEU、2020年)はEU-米国プライバシーシールドを無効にした。EU起源の記録は適切な転送保護措置なしに、米国MLインフラ — AWS US-East、GCP US-Central — に転送できない。

三つの主な保護措置は以下の通りだ:

  • 転送影響評価を伴う標準契約条項
  • グループ内転送のための拘束的企業規則
  • 匿名化された記録のための特例 — 適切に匿名化されたファイルはGDPRの下でもはや個人情報ではなく、転送規則の適用外となる

EU起源のデータセットで米国インフラを使用するチームにとって、適切な匿名化はSchrems IIの問題を完全に解消する。クリーンなデータセットは個人情報ではない。自由に転送できる。

これはバッチ匿名化の最も強力な実用的メリットの一つだ。GDPRの準拠を超える。国境を越えた障壁を完全に取り除く。

転送制限の詳細については、GDPRデータ最小化ガイドを参照してほしい。

DPOに提供するもの

クリーンなトレーニングセットをDPO承認のために提出する際、これら五つの項目を含めること:

  1. ソースの説明。 元のデータセットは何か? 収集目的は何か? どの個人カテゴリが含まれていたか?
  2. 匿名化設定。 どのエンティティタイプが検出・置換されたか? どの手法が適用されたか?
  3. 処理メタデータ。 レコードごとのエンティティ数、信頼スコア、処理されたレコードの総数。
  4. 残余リスク評価。 個人が再識別される確率はどれくらいか? 構造化テキストで285以上のエンティティタイプを使った置換手法の匿名化では、この確率は非常に低い。
  5. 意図する使用目的。 どのモデルをトレーニングするか? トレーニングの目的は何か?

バッチ処理は項目2と3を自動的に提供する。項目1、4、5はデータサイエンティストが提供する。

詳細はanonym.legalバッチAPIを参照してほしい。

得られるもの

GDPRに準拠したMLトレーニングセットは、カスタムスクリプトなし、数日の遅延なし、モデル品質を犠牲にせずに達成できる。

置換手法は、NLPトレーニングに重要な自然言語特性を保持する。GDPRリスクを生む個人情報を除去する。

45分のバッチ処理が、コンプライアンスレビューの遅延とシンプルなDPO承認の差だ。

情報源

データを保護する準備はできましたか?

48言語で285以上のエンティティタイプを使用してPIIを匿名化し始めましょう。

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.