Перейти к содержимому

Токены

Когда детектор находит сущность, она не заменяется на общий плейсхолдер. Вместо этого 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, CRYPTO
  • N — положительное целое, начиная с 1, уникальное в рамках категории и сессии

NUMBER покрывает финансовые и государственные идентификаторы (IBAN, карты, ИНН, паспорта, номера договоров, …). CRYPTO — адреса криптокошельков, хэши транзакций и приватные/расширенные ключи.

Квадратные скобки — часть токена. AI-инструменты должны воспринимать всё выражение в скобках как один непрозрачный термин.