Токены
Когда детектор находит сущность, она не заменяется на общий плейсхолдер. Вместо этого TokenManager присваивает стабильный пронумерованный токен:
Иван Петров → [Person_1]ООО Ромашка → [Company_1][email protected] → [EMAIL_1]Если Иван Петров встречается в документе пять раз — все пять упоминаний станут [Person_1]. Второй персонаж получит [Person_2].
Зачем нумерованные токены
AI-инструменты, читающие обезличенный документ, всё ещё могут понять:
- Какие сущности — одна и та же (сохраняется разрешение кореферентности)
- К какой категории относится каждый токен (
Person,Company,NUMBER, …) - Где сохраняются структурные связи (
[Person_1] is the CEO of [Company_2])
Плоский [REDACTED] потерял бы всё это.
Session vs cross-session
| Область | Стабильно? |
|---|---|
| В рамках одного запуска обезличивания | Да — одна и та же сущность всегда получает один и тот же номер |
| Между двумя запусками одного и того же документа | Нет — каждый раз свежая нумерация |
| Между запусками разных документов | Нет — независимая нумерация |
Это по замыслу. Стабильные между сессиями токены потребовали бы хранить mapping «реальная сущность → ID токена» где-то — а это вектор утечки PII.
Формат токена
[<Category>_<N>]Category— одно из:Person,Company,ADDRESS,DATE,EMAIL,PHONE,NUMBER,DATA,CRYPTON— положительное целое, начиная с 1, уникальное в рамках категории и сессии
NUMBER покрывает финансовые и государственные идентификаторы (IBAN, карты,
ИНН, паспорта, номера договоров, …). CRYPTO — адреса криптокошельков, хэши
транзакций и приватные/расширенные ключи.
Квадратные скобки — часть токена. AI-инструменты должны воспринимать всё выражение в скобках как один непрозрачный термин.