Витрина R&D-направления red_mad_robot.
Исследования, эксперименты и инженерные решения в AI — от гипотез до продакшн-систем.
https://redmadrobot.ai
Post #356
353
⚡️ PII Guard: невошедшее
Недавно мы поделились в статье, как строили систему маскировки данных, умеющую подставлять настоящие данные обратно в ответ модели. Наше решение основано на детерминированных правилах в сочетании с работой NER-модели. Однако это был не единственный подход, который мы протестировали.
Рассказываем в этом посте о ещё трёх перспективных идеях, так и не попавших в релиз.
↗️ Якоря вместо словаря синонимов
Правила упирались в жёсткий словарь ключевых слов: «мое вадительское удастоверение 4111-1111-1111-1111» уходило в карту — опечаток и синонимов в словаре нет, а цифры проходят Луна.
Поэтому мы поставили в конец пайплайна после правил слой на rubert-tiny. Вокруг предположительно личных данных вырезали окно в 80 символов, считали эмбеддинг и сравнивали его по косинусной близости с эталонными фразами каждого типа документа. Сам слой включался только там, где не сработали ни регулярки, ни леммы.
↗️ Две модели вместо одной
Имена и адреса модель определяет по смыслу фразы, номера документов — по словам вокруг числа. Мы попробовали развести эти навыки: первая модель для семантических сущностей, вторая только для контекста вокруг числовых последовательностей.
↗️ Все цифры за одним токеном
Сами цифры документов сигнала не несут: номера меняются от документа к документу, устойчивого образца в них нет. Поэтому все числовые последовательности в обучающих данных мы заменили служебным токеном
😊 Автор этого поста — Андрей Иванов, NLP-инженер в R&D red_mad_robot.
Недавно мы поделились в статье, как строили систему маскировки данных, умеющую подставлять настоящие данные обратно в ответ модели. Наше решение основано на детерминированных правилах в сочетании с работой NER-модели. Однако это был не единственный подход, который мы протестировали.
Рассказываем в этом посте о ещё трёх перспективных идеях, так и не попавших в релиз.
↗️ Якоря вместо словаря синонимов
Правила упирались в жёсткий словарь ключевых слов: «мое вадительское удастоверение 4111-1111-1111-1111» уходило в карту — опечаток и синонимов в словаре нет, а цифры проходят Луна.
Поэтому мы поставили в конец пайплайна после правил слой на rubert-tiny. Вокруг предположительно личных данных вырезали окно в 80 символов, считали эмбеддинг и сравнивали его по косинусной близости с эталонными фразами каждого типа документа. Сам слой включался только там, где не сработали ни регулярки, ни леммы.
Что получилось: на сложных случаях с опечатками и синонимами, где старые правила пасовали полностью, качество выросло с нуля до 60–80%. Baseline при этом не просел. Новый тип документа добавлялся за несколько эталонных фраз вместо недель на сбор датасета и дообучение.
Почему не взяли в релиз: якоря были временным мостом до того, как мы построили NER-модель. К тому времени, когда модель обучили на всех ходовых типах документов, быстрое встраивание нового типа стало не нужно, добавлять оказалось нечего. Идея с якорями пригодится, когда список типов снова начнёт расти.
↗️ Две модели вместо одной
Имена и адреса модель определяет по смыслу фразы, номера документов — по словам вокруг числа. Мы попробовали развести эти навыки: первая модель для семантических сущностей, вторая только для контекста вокруг числовых последовательностей.
Что получилось: паритет. Одна модель и две показывают одинаковое качество, хотя каждая из двух учится своему принципу и сущностей на неё приходится примерно вдвое меньше.
Почему не взяли в релиз: прироста нет, а инференс усложняется — приходится гонять обе. Вероятно, дело в размере схемы. На двух десятках сущностей модель обучается нормально и без разделения. Но если типов станет значительно больше, особенно числовых, разделение может дать прирост.
↗️ Все цифры за одним токеном
Сами цифры документов сигнала не несут: номера меняются от документа к документу, устойчивого образца в них нет. Поэтому все числовые последовательности в обучающих данных мы заменили служебным токеном
[NUM] — модель видит «Паспорт серия: [NUM] номер: [NUM]» и физически не может опереться на цифры.Что получилось: от документов остаётся один контекст, а разнобой в записи номеров исчезает под общим токеном. Концептуально это честнее, ведь при расширении на новые типы модель с меньшей вероятностью прицепится к самим цифрам.
Почему не взяли в релиз: обфускация, ради которой всё и затевалось, подход и подвела. На примерах вида «Банковская карта 4111чч1111жж1111жж1111» обычное обучение покрыло около 80%, а [NUM] — всего 30%. Разделители дробят число на несколько токенов, и модель размечает только первый. По средней метрике варианты почти сошлись (F1 96 против 95).😊 Автор этого поста — Андрей Иванов, NLP-инженер в R&D red_mad_robot.
- ❤ 8
- 🔥 7
- 👍 5








