Daily MaverickWHAT’S COOKING: Snoek pâté with a mango-jerepigo relishRTP DesportoRonaldo envia mensagem a Messi afirmando respeito pelas conquistas que o jogador fez pelo seu paísBollywood HungamaNana Patekar’s funeral to be held with full state honours, confirms Maharashtra CM Devendra FadnavisPunchFG urges scrap dealers to suspend strike, promises steel sector reformESPN DeportesAsencio, sobre sus situaciones en Real Madrid: "No maté a nadie"CNN TürkFındıkta ağustos ayı işlem hacmi belli olduInquirerDOJ airs warning, concerns on PWD IDsZDF heuteEntdecken Sie das ZDF-NachrichtenstudioCollider‘Avengers: Doomsday’ Is Officially a Box Office Hit Ahead of December PremiereSouth China Morning PostTo retire or not to retire? Malaysia divided over working past 60Digital SpyCelebrity Traitors and Coronation Street star confirmed for huge Lifetime Achievement awardFootball ItaliaMcKennie set to overtake Locatelli as Juventus appearance leader in the current squad
The Daily Newsstand · Free, Always
Thursday, October 8, 2026

Корпуса персональных данных: 56 тысяч размеченных сущностей и ни одного вызова инструмента

Translate

В первой статье мы проверяли, что происходит с агентом после маскирования данных. Здесь другой вопрос: на каких наборах вообще проверять такой шлюз? Эту статью можно читать отдельно.

Допустим, шлюз нашёл телефон в сообщении и заменил его. Проверка детектора прошла. Затем модель вызвала find_customer(phone=...). Какой номер получила CRM? Нашла ли нужного человека?

В корпусе для распознавания сущностей обычно нет ни CRM, ни вызова, ни результата поиска. Там есть текст и разметка телефона. Для проверки детектора этого достаточно. Для проверки всей цепочки нужны дополнительные данные.

Мы делаем Pseudex, шлюз обратимого маскирования данных для LLM-агентов. Поэтому чужие корпуса смотрели со своей задачей: проверить и защиту данных, и работу агента. Расскажу, что удалось измерить, а что осталось за пределами этих проверок.

Три разных вида проверок

Название «бенчмарк для ИИ» мало что говорит о содержимом. Полезнее открыть несколько записей.

В NER-корпусе будут текст и границы сущностей: здесь человек, здесь организация, здесь место. В наборе для маскирования обычно размечены телефоны, документы и другие типы данных. В бенчмарке вызовов инструментов будут описание функции, вопрос пользователя и ожидаемый вызов.

Что хотим проверить

Где искать примеры

Чего такая проверка сама по себе не покажет

Распознавание имён и мест

NEREL, WikiANN

Найдёт ли инструмент нужную запись после маскирования

Обнаружение ПДн в тексте

PII-Bench, ai4privacy

Как подстановка повлияла на действия агента

Выбор функции и её аргументов

BFCL, τ-bench

Сохранилась ли работа агента после замены персональных данных

Сторонние корпуса и наша проверка возврата данных

Сторонние корпуса и наша проверка возврата данных

Сторонние наборы проверяют отдельные свойства. В AgentMask-RU мы связали маскирование с восстановлением значений в вызове инструмента.

Из этого не следует, что существующие корпуса плохие. Они отвечают на свои вопросы. Ошибка начинается, когда результат на одном из них используют как доказательство совсем другого свойства.

NEREL: большой корпус, но не переписка с поддержкой

В NEREL около 56 тысяч сущностей и 39 тысяч отношений, 29 типов разметки. Тексты взяты из новостей. Есть вложенные сущности: например, имя человека может встречаться внутри названия организации.

Проверили и локальную копию: в ней 933 файла разметки, 55 950 сущностей и 38 673 отношения.

Вывод проверки локального снимка NEREL

Вывод проверки локального снимка NEREL

Вывод скрипта, который считает сущности и отношения в файлах разметки. Это осмотр локальной копии NEREL-v1.0, не оценка качества Pseudex.

Это полезная проверка для детектора. Корпус сделан не нами, поэтому наш генератор не мог случайно подобрать только удобные движку примеры.

Но новостной текст отличается от сообщения «здрасьте это иванова маша». В новостях чаще соблюдают регистр и пунктуацию, называют публичных людей, упоминают организации и географические объекты. Для поддержки важнее опечатки, неполные имена и адреса без привычных маркеров.

Вот фрагмент разметки одной новости. Обратите внимание на DATE: этим типом обозначены и «в 2009 году», и «через десять дней». Это временные выражения, не обязательно даты рождения.

Фрагмент исходной разметки новости из NEREL

Фрагмент исходной разметки новости из NEREL

Первые строки исходного файла разметки: идентификатор, тип, границы в тексте и сама сущность. Пример из открытого NEREL.

Различается и сама разметка. Название города в NEREL может быть сущностью LOC. Это не означает, что в любой переписке город нужно скрывать. «Конференция пройдёт в Москве» и домашний адрес клиента требуют разных решений. Становится ли информация персональной, зависит от контекста и связи с человеком.

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

MASSIVE: что меняется на коротких репликах

В русской части MASSIVE 16 521 реплика. Это набор для распознавания намерений и заполнения слотов, а не специально размеченный корпус персональных данных.

Для нашей задачи полезен слот person: можно посмотреть, какие упоминания людей шлюз пропускает в разговорных фразах. При этом отсутствие такого слота нельзя автоматически считать доказательством отсутствия ПДн. Разметчики решали другую задачу.

Такой набор позволяет проверить то, что редко встречается в новостях: короткие обращения без полного имени, заглавных букв и аккуратной пунктуации. Поэтому результат на новостном корпусе нельзя автоматически переносить на переписку с поддержкой.

Имена здесь часто встречаются без подсказки «клиент» или «пациент». Некоторые написаны строчными буквами. Чтобы найти их все, недостаточно просто ослабить фильтр: обычные слова тоже бывают похожи на имена. После такой правки нужно проверять не только пропуски, но и лишние подстановки.

PII-Bench: русский текст с размеченными ПДн

У hivetrace/pii-bench другая задача. В нём 1810 примеров, 13 типов данных и 9 доменов. Он ближе к тому, что ожидаешь от проверки шлюза маскирования: в тексте размечены конкретные персональные данные.

Но и здесь результат зависит от того, какие правила распознавания мы считаем правильными.

В раннем замере 88 из 92 размеченных номеров карт не проходили проверку Луна. Проверка валидных номеров находила четыре, по разметке получалось 4.3%. Это исторический пример расхождения с корпусом, не текущий результат детектора: в более позднем сохранённом прогоне найдено 70.7%, в том числе номера, распознанные по контексту.

Такую цифру нельзя ни спрятать, ни объяснить просто словами «плохой корпус». Сначала нужно определить ожидаемое поведение. Если шлюз должен находить любую строку после слова «карта», это одна проверка. Если он должен отличать валидный номер карты от похожего номера заказа, другая. Ошибка в номере тоже может требовать защиты, но для её обнаружения понадобится контекст, а не только контрольная сумма.

Авторы позднее исправили контрольные суммы. Поэтому рядом с результатом важно указывать версию корпуса. Старый замер на старых данных нельзя выдавать за результат на исправленном наборе.

Ещё один пример: КПП и ОГРН. Это идентификаторы организаций, и их наличие само по себе не делает текст персональными данными физического лица. Однако компания может запретить передавать их наружу своей политикой. Тогда шлюз должен их скрывать, но это уже отдельное условие проверки. Для ОГРНИП, связанного с индивидуальным предпринимателем, рассуждение будет другим.

Что показали последние сохранённые прогоны

Ниже результаты, которые мы сверили с сохранённым выводом измерителей. Это замеры рабочей версии движка: их не следует читать как проверку текущего продового контейнера. MASSIVE и NEREL приведены по прогону от 1 октября, PII-Bench по более позднему отчёту после исправлений обработки адресов.

Корпус и срез

Обнаружено

Целиком

Что проверяется

MASSIVE ru-RU, 1215 слотов person

92.8%

91.5%

Упоминания людей в коротких репликах

NEREL v1.1, dev+test, 1908 PERSON

92.6%

не считалось этой метрикой

Обнаружение правильным типом по пересечению с разметкой

NEREL, кириллический срез PERSON

93.4%

не считалось этой метрикой

1713 из 1835 упоминаний

PII-Bench, 176 адресов

95.5%

95.5%

168 адресов из 176

PII-Bench, 228 имён

99.1%

99.1%

Распознавание имён

PII-Bench, 217 телефонов

99.5%

99.5%

Распознавание телефонов

PII-Bench, 173 email

100%

98.3%

Обнаружение и защита всей строки

PII-Bench, 118 ИНН

99.2%

99.2%

Распознавание ИНН

PII-Bench, 97 СНИЛС

100%

100%

Распознавание СНИЛС

PII-Bench, 120 паспортов

90.0%

90.0%

Обнаружение и покрытие номера

Разница между двумя колонками существенна. «Обнаружено» может означать, что нашлось лишь одно слово из имени. Но и «целиком» у разных измерителей считается по-разному: в MASSIVE один найденный спан должен вместить весь слот. Если слот включает предлог или два имени, защищённых по отдельности, такая проверка может не засчитать полное покрытие. Поэтому 81.5% нельзя автоматически переводить в «остальные 18.5% утекли».

В NEREL мы отдельно проверяли поддержку найденных спанов разметкой. В отчёте 9766 из 9831 спана пересекаются хотя бы с одной аннотацией, или 99.3%. Это не точность определения ПДн: проверка допускает пересечение с любой сущностью и не требует совпадения типа или границ. Подменять ей precision шлюза было бы неправильно.

Сохранённый вывод прогона на PII-Bench, примерно 2 месяца назад

Сохранённый вывод прогона на PII-Bench, примерно 2 месяца назад

Вывод измерителя после исправлений обработки адресов. «Свой тип» показывает, присвоен ли найденному значению ожидаемый тип; это отдельная проверка, не precision.

На PII-Bench восемь не покрытых адресов в этом прогоне оказались названиями городов, которые продукт намеренно оставляет в тексте. Остальные показатели тоже нужно читать вместе с примерами и правилами разметки, а не как единую оценку качества для любого корпоративного трафика.

Где здесь ai4privacy и бенчмарки инструментов

ai4privacy часто упоминают рядом с задачей маскирования. Мы смотрели на варианты 300k/400k, но в изученном составе не нашли русского языка. Такой набор может быть полезен для другой языковой задачи. Результат на нём ничего не скажет о склонении русской фамилии или адресе со строчными буквами.

BFCL проверяет выбор функций и аргументов. В τ-bench агент взаимодействует с инструментами в сценариях, а результат оценивают с учётом выполненной задачи. Это уже ближе к проверке поведения агента.

Однако использовать эти наборы как готовую проверку шлюза ПДн тоже нельзя. Потребуется добавить данные, которые должны быть скрыты, определить ожидаемое восстановление и проверить, что реальные значения не попали в контекст модели.

В MERA есть GorillaHard: вопросы и наборы инструментов, среди которых модель должна выбрать подходящие. В рассматриваемой постановке инструменты не исполняются. Значит, по такому результату нельзя заключить, что после маскирования инструмент нашёл правильную запись в корпоративной системе.

Что проверяют сторонние корпуса и AgentMask-RU

Что проверяют сторонние корпуса и AgentMask-RU

Наш корпус показан отдельной строкой: внешние наборы дополняют проверку маскирования и возврата, а не делают её ненужной.

Зачем мы сделали отдельный корпус, если чужие уже есть

Именно для проверки маскирования вместе с возвратом значения в вызов инструмента мы создали AgentMask-RU. В первой статье описаны корпус, метод и результаты шести систем.

Клиент сообщает телефон. Шлюз заменяет его, имитатор модели переносит подстановку в аргумент поиска, а шлюз должен вернуть настоящий номер до выполнения инструмента. Проверка видит обе стороны: что отправили модели и что вернулось в аргументе вызова. Отдельно считаются пропуски, частичное маскирование и лишние подстановки.

Это уже работающая проверка, а не план на будущее. Но она не отменяет внешних корпусов. Своими примерами легко не охватить редкую фамилию или непривычную формулировку. Для этого и нужны NEREL, MASSIVE и PII-Bench: они проверяют детектор на текстах, которые мы не составляли.

Есть и обратная граница. Хорошая детекция на чужом корпусе не доказывает, что агент после маскирования выполнит ту же задачу. В рассмотренных сторонних наборах такой проверки шлюза нет: результат NEREL не скажет, какой номер получила CRM.

Публичный прогон AgentMask-RU использует детерминированный имитатор модели. Он позволяет проверить передачу и восстановление данных без случайности генерации, но не доказывает неизменность всех решений живого агента. Например, вернувшийся в вызов телефон ещё ничего не говорит о том, правильно ли модель рассчитала скидку по подставленной дате рождения. Это разные вопросы, и смешивать их в один процент нельзя.

Сравнение нескольких шлюзов на нашем корпусе уже есть в первой статье. На перечисленных здесь чужих корпусах мы пока не проводили такое же сравнение, поэтому их цифры в эту таблицу не переносим.

Получается, выбирать между своим и чужими корпусами не нужно. Они проверяют разные вещи. Один показывает, нашёл ли детектор данные в независимом тексте. Другой проверяет, вернулось ли значение туда, где оно нужно инструменту.

Если использовали другие русскоязычные наборы для проверки ПДн, поделитесь в комментариях. Интересно, какую задачу вы на них проверяли и что пришлось учесть в разметке.

Источники

Корпуса

Вызовы инструментов

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.