раздел 02

Как делать на практике

Выбор способа зависит от объёма. На пару абзацев хватит рук, на регулярный поток - нужны инструменты.

1
Вручную
Для мелочи: просто пройдитесь по тексту и замените данные на плейсхолдеры. Быстро, но не масштабируется и легко что-то пропустить.
2
Regex для шаблонного
Телефоны, email, номера карт имеют предсказуемый вид - их ловит регулярное выражение и меняет пачкой.
3
NER для имён и адресов
Имена и адреса шаблоном не описать. Их находит распознавание именованных сущностей (NER) - модель, обученная выделять их в тексте.
4
Локальная модель
Чтобы данные не ушли наружу при самой чистке, препроцессинг делайте локальной моделью на своём железе.
5
Проверка
После замены перечитайте текст и прогоните поиском - убедитесь, что личное не осталось.

Regex для шаблонного

Данные с чётким форматом удобно ловить регулярными выражениями. Пример замены email на плейсхолдер:

# псевдокод
text = replace_pattern(text, EMAIL_REGEX, "[EMAIL]")
text = replace_pattern(text, PHONE_REGEX, "[ТЕЛЕФОН]")
text = replace_pattern(text, CARD_REGEX, "[КАРТА]")

Regex хорош для телефонов, email и номеров карт. Для имён он не годится - у них нет единого шаблона.

NER для имён

Именованные сущности (имена, организации, адреса) находит NER - named entity recognition. Это модель, которая размечает в тексте, где имя, а где адрес, чтобы вы заменили их на токены:

Иванов Иван    -> [ИМЯ]
ул. Такая, 10  -> [АДРЕС]

Локальная модель для препроцессинга

Тонкий момент: если чистить текст через внешний сервис, сырые данные всё равно уйдут наружу ещё на этапе чистки. Чтобы этого не было, обезличивание делайте локальной моделью - тогда исходный текст не покидает вашу машину, а во внешний AI уходит уже очищенный.

Проверка результата

Автоматика ошибается: regex не поймает телефон в непривычном формате, NER пропустит редкое имя. Поэтому финальный шаг - глазами. Перечитайте текст и прогоните поиском по типовым шаблонам, убедитесь, что личного не осталось.