anonym.legal

By · Last updated 2026-05-27

Назад до блогуТехнічні

Анонімізація навчальних даних для ML відповідно до GDPR

GDPR обмежує використання персональних даних для навчання ML-моделей поза межами початкової мети збору. Команди, що покладаються на ситуативні Python-скрипти, створюють проблеми відповідності.

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)

Це замінює електронні адреси. І більше нічого. У датасеті все ще є імена, номери телефонів та медичні ідентифікатори. Він і надалі не пройде аудит GDPR.

Прірва між «я анонімізував адреси електронної пошти» та «цей датасет відповідає вимогам GDPR» — величезна. Команди постійно її недооцінюють.

Чому GDPR обмежує навчання ML

Стаття 5(1)(b) GDPR — ключове правило. Воно називається принципом обмеження мети. Персональні записи можуть використовуватися лише в тій меті, з якою вони збиралися.

Дані про замовлення збиралися для виконання замовлень. Не для навчання моделі рекомендацій. Медичні записи збиралися для лікування. Не для навчання моделі прогнозування повторних госпіталізацій. Відповіді на опитування збиралися для відгуків про продукт. Не для навчання класифікатора настроїв.

Щоб використовувати ці записи для навчання ML, команді потрібна одна з трьох речей:

  1. Явна згода кожної людини на використання в ML-цілях — складно отримати, часто неможливо ретроактивно
  2. Оцінка законного інтересу, що підтверджує сумісність ML-використання — юридично непевно, залежить від наглядового органу
  3. Анонімізація — замінення або видалення персональних даних так, щоб датасет більше не вважався персональним за GDPR

Належна анонімізація дає найбільшу правову визначеність. Складнощі — в тому, щоб робити це правильно щоразу.

Проблема ситуативних скриптів

Команди, які пишуть новий Python-скрипт для кожного датасету, створюють проблеми, що накопичуються.

Неповне покриття. Скрипт, побудований під одну схему, пропускає нові поля. Стовпець клінічних нотаток, доданий шість місяців тому? Не потрапляє у регулярний вираз. Поле по батькові? Скрипт обробляє лише ім'я та прізвище.

Відсутність узгодженості. Датасет A оброблявся скриптом script_v1. Датасет B — скриптом script_v3. Датасет C оброблявся іншим членом команди. Об'єднаний навчальний набір містить три різні методи. Спеціаліст із захисту даних не може його сертифікувати.

Відсутність журналу аудиту. Скрипт виконався. Що він змінив? Які сутності було знайдено? Без записів про обробку відповідність неможлива. Коли аудитор наглядового органу запитає «як ви знаєте, що цей навчальний набір чистий?», відповідь «ми запустили Python-скрипт» не підійде.

Застарівання моделі. Регулярні вирази, що працювали у 2023 році, пропускають нові формати ідентифікаторів 2024 року. Скрипти не оновлюються самі.

Крок за кроком: пакетна обробка

Команда з медичного ШІ має анонімізувати 8 000 записів пацієнтів. Команда в США потребує доступу з офісу в ЄС. Застосовується Schrems II — записи з ЄС не можуть надходити до інфраструктури США без належних гарантій.

Традиційний шлях: Інженер даних пише спеціальний скрипт. Два-три дні розробки. Один-два дні перевірки спеціалістом із захисту даних. Один день доопрацювань. Разом: від чотирьох до шести днів. ML-проєкт відстає від графіка.

Шлях пакетної обробки:

  1. Експортуйте 8 000 записів у CSV
  2. Завантажте у систему пакетної обробки
  3. Вкажіть типи сутностей: PERSON, EMAIL_ADDRESS, PHONE_NUMBER, US_SSN, MEDICAL_RECORD, DATE_OF_BIRTH, LOCATION
  4. Оберіть метод: Replace (підставляє реалістичні синтетичні значення для збереження структури)
  5. Обробка: 45 хвилин для 8 000 записів
  6. Завантажте чистий CSV
  7. Спеціаліст із захисту даних переглядає метадані обробки — кількість знайдених сутностей на запис, застосовані методи: 2 години
  8. Спеціаліст схвалює. Передача виконується.

Загальний час: 45 хвилин плюс 2 години перевірки. Замість чотирьох-шести днів.

Дивіться посібник з навчальних даних для Закону ЄС про ШІ, щоб дізнатися, як ці ж кроки відповідають зобов'язанням за Статтею 10.

Replace vs. Redact для навчання ML

Метод анонімізації впливає на якість моделі.

Redact замінює PII токеном на зразок [REDACTED]. Це підходить для моделей виявлення PII. Для інших завдань — аналізу настроїв, класифікації, рекомендацій — це шкодить. Модель навчається тому, що [REDACTED] — особливий токен. Вона не може навчитися на природному розподілі імен та значень.

Replace замінює «Іван Петренко» на «Давид Коваль». Замінює «ivanp@company.com» на «dkoval@synthetic.com». Структура залишається незмінною. Розміщення сутностей, патерни спільного вживання, потік речень — усе збережено. Модель навчається на реалістичному контексті.

Для навчальних наборів ML Replace — правильний вибір. Модель не засвоює підставних значень. Вона засвоює патерни навколо них. Це і є головне.

Schrems II і транскордонні передачі

Рішення Schrems II (CJEU, 2020) скасувало EU-US Privacy Shield. Записи з ЄС не можуть передаватися до ML-інфраструктури США — AWS US-East, GCP US-Central — без належних гарантій передачі.

Три основні гарантії:

  • Стандартні договірні положення з Оцінкою впливу на передачу
  • Обов'язкові корпоративні правила для передач у межах групи компаній
  • Дерогація для анонімізованих записів — належно анонімізовані файли більше не є персональними за GDPR і звільняються від правил передачі

Для команд, що використовують інфраструктуру США з наборами даних із ЄС, належна анонімізація усуває проблему Schrems II. Чистий датасет не є персональним. Він може вільно переміщатися.

Це один із найвагоміших практичних переваг пакетної анонімізації. Вона не лише відповідає вимогам GDPR. Вона повністю усуває транскордонні обмеження.

Дізнайтеся більше про обмеження передач у посібнику з обмеження мети GDPR.

Що надати спеціалісту із захисту даних

Подаючи чистий навчальний набір на затвердження, включіть п'ять елементів:

  1. Опис джерела. Що це за вихідний датасет? Яка мета збору? Які категорії персональних даних він містив?
  2. Конфігурація анонімізації. Які типи сутностей виявлено та замінено? Який метод застосовано?
  3. Метадані обробки. Кількість сутностей на запис, показники достовірності, загальна кількість оброблених записів.
  4. Оцінка залишкового ризику. Яка ймовірність повторної ідентифікації особи? Для анонімізації методом Replace з 285+ типами сутностей на структурованому тексті ця ймовірність дуже низька.
  5. Призначене використання. Яка модель навчатиметься? Яка мета навчання?

Пакетна обробка автоматично надає пункти 2 і 3. Пункти 1, 4 і 5 — від дослідника даних.

Дивіться пакетний API anonym.legal, щоб дізнатися, як метадані обробки повертаються з кожним завданням.

Що ви отримуєте

Navчальні набори, що відповідають вимогам GDPR, можна створити без спеціальних скриптів, без багатоденних затримок та без втрати якості моделі.

Метод Replace зберігає властивості природної мови, що важливі для навчання NLP. Він видаляє персональні дані, що створюють ризик за GDPR.

45 хвилин пакетної обробки — це різниця між затягнутою перевіркою відповідності та straightforward затвердженням спеціаліста із захисту даних.

Джерела

Готові захистити свої дані?

Почніть анонімізувати PII з 285+ типами сутностей на 48 мовах.

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.