ch
Feedback
_rnd

_rnd

前往频道在 Telegram

Витрина R&D-направления red_mad_robot. Исследования, эксперименты и инженерные решения в AI — от гипотез до продакшн-систем. https://redmadrobot.ai

显示更多
2 419
订阅者
-124 小时
-17
+5230

数据加载中...

标签云
无数据
有任何问题?请刷新页面或联系我们的客服
进出提及
---
---
---
---
---
---
吸引订阅者
七月 '26
七月 '26
+46
在1个频道中
六月 '26
+133
在5个频道中
Get PRO
五月 '26
+41
在4个频道中
Get PRO
四月 '26
+64
在3个频道中
Get PRO
三月 '26
+539
在5个频道中
Get PRO
二月 '26
+1
在0个频道中
Get PRO
一月 '26
+6
在0个频道中
Get PRO
十二月 '25
+12
在0个频道中
Get PRO
十一月 '25
+14
在1个频道中
Get PRO
十月 '25
+15
在0个频道中
Get PRO
九月 '25
+13
在7个频道中
Get PRO
八月 '25
+11
在1个频道中
Get PRO
七月 '25
+19
在0个频道中
Get PRO
六月 '25
+8
在0个频道中
Get PRO
五月 '25
+15
在0个频道中
Get PRO
四月 '25
+20
在1个频道中
Get PRO
三月 '25
+22
在0个频道中
Get PRO
二月 '25
+43
在7个频道中
Get PRO
一月 '25
+13
在0个频道中
Get PRO
十二月 '24
+23
在2个频道中
Get PRO
十一月 '24
+24
在0个频道中
Get PRO
十月 '24
+23
在0个频道中
Get PRO
九月 '24
+21
在0个频道中
Get PRO
八月 '24
+18
在0个频道中
Get PRO
七月 '24
+21
在0个频道中
Get PRO
六月 '24
+15
在0个频道中
Get PRO
五月 '24
+29
在2个频道中
Get PRO
四月 '24
+46
在0个频道中
Get PRO
三月 '24
+24
在0个频道中
Get PRO
二月 '24
+44
在0个频道中
Get PRO
一月 '24
+20
在0个频道中
Get PRO
十二月 '23
+27
在0个频道中
Get PRO
十一月 '23
+40
在2个频道中
Get PRO
十月 '23
+71
在0个频道中
Get PRO
九月 '23
+46
在0个频道中
Get PRO
八月 '23
+42
在0个频道中
Get PRO
七月 '23
+65
在0个频道中
Get PRO
六月 '23
+56
在0个频道中
Get PRO
五月 '23
+550
在0个频道中
Get PRO
四月 '23
+45
在0个频道中
Get PRO
三月 '23
+31
在0个频道中
Get PRO
二月 '23
+40
在0个频道中
Get PRO
一月 '23
+15
在0个频道中
Get PRO
十二月 '220
在0个频道中
Get PRO
十一月 '220
在0个频道中
Get PRO
十月 '220
在0个频道中
Get PRO
九月 '22
+5
在0个频道中
Get PRO
八月 '22
+33
在0个频道中
Get PRO
七月 '220
在0个频道中
Get PRO
六月 '22
+33
在0个频道中
Get PRO
五月 '220
在0个频道中
Get PRO
四月 '220
在0个频道中
Get PRO
三月 '220
在0个频道中
Get PRO
二月 '22
+34
在0个频道中
Get PRO
一月 '22
+62
在0个频道中
Get PRO
十二月 '21
+40
在0个频道中
Get PRO
十一月 '21
+56
在0个频道中
Get PRO
十月 '21
+38
在0个频道中
Get PRO
九月 '21
+64
在0个频道中
Get PRO
八月 '21
+122
在0个频道中
Get PRO
七月 '21
+24
在0个频道中
Get PRO
六月 '21
+70
在0个频道中
Get PRO
五月 '21
+12
在0个频道中
Get PRO
四月 '21
+19
在0个频道中
Get PRO
三月 '21
+17
在0个频道中
Get PRO
二月 '21
+11
在0个频道中
Get PRO
一月 '21
+26
在0个频道中
Get PRO
十二月 '20
+904
在0个频道中
日期
订阅者增长
提及
频道
29 七月+1
28 七月+1
27 七月0
26 七月0
25 七月0
24 七月+3
23 七月0
22 七月+1
21 七月0
20 七月+1
19 七月+1
18 七月0
17 七月+3
16 七月+3
15 七月0
14 七月+1
13 七月0
12 七月+1
11 七月0
10 七月+2
09 七月+1
08 七月+1
07 七月+1
06 七月+1
05 七月+3
04 七月+2
03 七月+4
02 七月+5
01 七月+10
频道帖子
#️⃣ Почему анонимизатор спотыкается о таблицы #️⃣ Давным-давно, а точнее два года назад, мы сделали AI-сервис Daisy для быстрого доступа ко всем передовым моделям. Под капотом у Daisy не просто токены к LLM, а многоуровневая архитектура со сложной логикой связок и своей системой безопасности. Собственно, про безопасность мы сегодня и поговорим. Суть проблемы PII 😕 Чтобы гарантировать пользователям Daisy защиту персональных данных и не «светить» их во внешний API, мы встроили в пайплайн обработки запросов PII-анонимизатор. Почти сразу мы упёрлись в проблему: анонимизатор плохо обрабатывал таблицы. Он маскировал только первые пару строк, а остальные данные улетали во внешнюю модель без маскировки. Обычно таблицу перед отправкой переводят в Markdown. Модели так удобнее: структура сохраняется, строки и колонки легко читаются. А вот анонимизатору — наоборот. Он проверяет значения по правилам, но для многих типов данных этого мало — нужен контекст. Например, слова вроде «паспорт», «ИНН» или «карта». В таблице весь этот контекст уходит в шапку. Чем больше строк, тем дальше значения от заголовков и тем хуже детекция. | ФИО | Паспорт | ИНН | | Иван Петров | 4509 217634| 771234567890 | Быстрый фикс с подвохом 😊 Первое очевидное решение — переписать Markdown и добавить ключ внутрь каждой ячейки. | ФИО: Иван Петров | Паспорт: 4509 217634 | Точность детекции сразу растёт: подпись снова рядом, пропусков меньше. Но у такого подхода есть обратная сторона. Этот обогащённый Markdown увидит и сама модель. Таблица раздувается, токены тратятся впустую, а модель получает служебные подсказки, которые нужны только детектору. Сначала ячейки, потом другое 😊 Мы зашли с другой стороны и решили не «сплющивать» таблицу до анонимизации. Идея в том, чтобы разделить два представления таблицы: одно для детектора, другое для модели. Держим таблицу как структуру — ячейки, строки, колонки, координаты. И отдельно, только для детектора, собираем detect-context: временную строку для каждого значения, где прописаны положение заголовка, метки, ближайшие соседи. Паспорт: 4509 217634 Эта строка живёт отдельно и в модель не попадает — поэтому её можно делать сколь угодно избыточной, лишь бы детектору было удобно. Детектор находит PII в этой строке. А раз мы знаем координаты — возвращаемся к нужной ячейке, достаём точное значение и маскируем именно его. И только потом собираем Markdown для модели. Чистый промпт и детекция 😍 Мы отвязали детекцию от итогового формата. Детектор точно маскирует персональные данные по изолированному контексту, а в модель уходит чистый Markdown без служебного мусора. В итоге качество анонимизации зависит только от точности детектора, а не от структуры данных.
Автор этого поста и бессменный исследователь вопросов безопасности, Андрей Иванов — NLP-инженер в R&D red_mad_robot.
#Безопасность

2
Системный промпт против привычек Qwen ❌ Qwen Code и модели семейства Qwen развиваются в тесной связке. Это видно в самом коде фреймворка: под Qwen адаптированы форматы примеров, режим thinking и обработка reasoning. Но что, если этот симбиоз зашёл ещё дальше и модель во время обучения усвоила правила фреймворка? Переворачиваем инструкции Мы взяли оригинальный промпт Qwen Code и поочерёдно инвертировали шесть ключевых директив, например: • «отвечай кратко» — «пиши подробно»; • «не добавляй комментарии» — «комментируй каждый блок»; • «используй Markdown» — «пиши без разметки». Остальные проверки касались агентного поведения: запускать ли тесты, вызывать инструменты параллельно или по одному, писать ли преамбулу перед действием. В каждом тесте менялась только одна инструкция. Измеряем послушание ✅ Для каждой директивы мы выбрали наблюдаемую метрику: длину ответа, число комментариев, количество Markdown-маркеров, факт запуска тестов, число параллельных tool calls и наличие преамбулы перед первым действием. По каждой метрике считали swing — насколько изменилось значение после переворота инструкции. Если модель после флипа резко меняет длину ответа, стиль разметки или поведение с инструментами, значит, она слушает новый системный промпт. Если swing близок к нулю, значит, инструкция почти не пробивает старую привычку. Целевой моделью выступила Qwen3.6-35b-a3b, а в качестве контроля на тех же задачах мы использовали gpt-oss-120b. Qwen держится за корни Из шести проверок три дали однозначный результат — Qwen упорно игнорирует новые указания. 🟥 Длина ответа: контрольная модель отреагировала в четыре раза сильнее Qwen. 🟥 Комментарии в коде: у контроля их стало в 26 раз больше, а у Qwen число вообще не изменилось. 🟥 Markdown-разметка: контроль сократил использование разметки в 1,7 раза, а у Qwen показатель не изменился. По этим данным нельзя сказать, что модель точно обучали на системном промпте Qwen Code. Но сам эффект хорошо виден: CLI явно подстраивается под своё семейство моделей, а Qwen3.6-35b-a3b слабее реагирует на смену привычных агентных инструкций, чем контрольная модель. Остаётся лишь вопрос — распространяется ли это на все модели Qwen в рамках Qwen Code? 😊 Автор этого поста, как и самого исследования, Андрей Иванов — NLP-инженер в R&D red_mad_robot.
1 025
3
⚡️ Как оценивать агентский harness Одной LLM недостаточно, чтобы понять качество AI-агента. На итоговый результат влияет аген
⚡️ Как оценивать агентский harness Одной LLM недостаточно, чтобы понять качество AI-агента. На итоговый результат влияет агентский harness — как он управляет инструментами, памятью, сообщениями, восстановлением после ошибок. Чтобы разобраться в этой теме, мы провели ряд экспериментов. И выкатили в open source Harness Bench — открытый фреймворк для сравнения связок «модель + harness». А в новой мощной статье на Хабре рассказали про архитектуру фреймворка, адаптацию классических бенчмарков под системы агентов, поделились инженерными находками и результатами сравнений разных связок. ↗️ Читайте статью ↗️ Тестируйте бенч Автор и статьи, и бенчмарка, Андрей Иванов — NLP-инженер в R&D red_mad_robot.
13 106
4
#️⃣ HTML → PPTX → Keynote. Или как нормально редактировать AI-презентации Всё чаще к нашим дизайнерам попадают слайды, сгенерированные AI. Обычно это HTML, который нужно превратить в редактируемую презентацию и доработать. Мы посмотрели, как сегодня работают Claude Design, NotebookLM и другие инструменты, протестировали разные подходы и собрали пайплайн, который позволяет сохранить структуру слайда при конвертации. Генерация Вместо генерации «с нуля» мы даём модели брендбук, примеры слайдов и библиотеку HTML-компонентов — готовых карточек, таблиц, диаграмм, колонок, заголовков и других элементов. Модель не придумывает новую вёрстку, а собирает слайд из этих «кирпичиков», сохраняя сетку и визуальную логику бренда. По нашим наблюдениям, лучше всего с такой задачей сейчас справляется Claude Opus. Конвертация Сам HTML дизайнерам не помогает — его нужно открыть в Keynote или PowerPoint и продолжить редактировать. Ребята протестировали несколько готовых HTML → PPTX-конвертеров. Почти везде повторяются одни и те же проблемы: съезжают отступы, меняются переносы текста, пропадают скругления, нарушается порядок слоёв. Из open source сервисов ближе всех к идеалу оказался html2pptx, но и его результат не всегда предсказуем. Мы пошли другим путём • открываем HTML в headless Chromium — в Python, например, playwright; • забираем реальные координаты, размеры и computed styles элементов. • раскладываем слайд на типы объектов: текст, формы, картинки, декоративные слои; • собираем PPTX из редактируемых объектов; • растрируем только то, что нельзя нормально выразить в OOXML. Так в растр уходят только сложные SVG и визуальные эффекты, всё остальное остаётся редактируемым. Самые мутные случаи 🟥 border-radius Pill-кнопка не должна превращаться в эллипс. Таблетка, круг и скруглённый прямоугольник — это разные формы, и их нужно различать. 🟥 z-index Слои нельзя сортировать только по числу z-index. Важен stacking context, порядок рендеринга и последовательность отрисовки элементов. 🟥 SVG и фильтры Их лучше растрировать локально, а не превращать весь слайд в картинку. 🟥 текст Chromium и Keynote по-разному рассчитывают переносы строк. Поэтому приходится контролировать line-height, paragraph spacing и ширину текстовых блоков. 🟥 шрифты Просто положить TTF в PPTX недостаточно. оэтому нужны явные line-height, paragraph spacing и небольшой запас по ширине текстового блока. Keynote ≠ PowerPoint PowerPoint часто прощает то, что Keynote интерпретирует иначе: интервалы, порядок XML-элементов, язык текста, fallback-шрифты. Поэтому лучше целиться не просто в «валидный PPTX», а в PPTX, который стабильно импортируется в Keynote. В итоге всё работает: модель собирает черновик, конвертер сохраняет структуру, дизайнер финализирует результат. 😊 Автор этого поста, собственно и разработчик конвертера, Миша Мартьянов — NLP-инженер в R&D red_mad_robot.
1 504
5
DCD: Domain–Collection–Document ↗️ Выпустили статью на arXiv, в которой представили DCD Design — архитектурный подход к орган
DCD: Domain–Collection–Document ↗️ Выпустили статью на arXiv, в которой представили DCD Design — архитектурный подход к организации пространства знаний и обработке запросов в RAG-системах. DCD организует знания в виде явной иерархии и ограничивает область поиска ещё до извлечения документов. В статье: • объясняем, как устроен DCD; • сравниваем его с Naive RAG, Contextual RAG и RAPTOR; • показываем результаты экспериментов на собственном бенчмарке; • открываем код и датасет. Если хочется разобраться на русском — уже вышел материал на Хабре. А все детали экспериментов, метрики и оценки — в статье↗️на arXiv.
11 928
6
⚡️ Открываем бенчмарк для детекции PII в русском тексте Мы тут много рассказывали про работу guardrails. А теперь выкатываем в открытый доступ бенчмарк для детекции персональных данных на русском языке. На нём можно сравнивать NER-модели, PII-детекторы и системы анонимизации. Внутри датасета 21 тип персональных данных: • ФИО: имя, фамилия, отчество; • адресная иерархия: страна, регион, город, район, улица, дом; • контакты: email, телефон, URL, IP; • документы: паспорт, СНИЛС, ИНН, ОМС, банковская карта, водительское удостоверение, военный билет, свидетельство о рождении. Датасет состоит из синтетических данных, а также реальных примеров из продакшен-логов, где персональные данные заменены на синтетику. Внутри сгенерированные данные в формате документов + сложные пограничные кейсы и опечатки. Все данные представлены в формате BIO. Разметка и валидация выполнялись частично вручную, частично с помощью LLM. В карточке датасета описали таксономию сущностей и протокол оценки, а ещё добавили результаты популярных открытых моделей для удобного сравнения. 😊 Прогоняйте свои анонимайзеры, PII-детекторы и NER-модели, ломайте бенчмарк и делитесь результатами в комментариях. ↗️ Hugging Face Автор этого поста, как и многих других про NER и PII, Женя Андриевская — NLP-инженер в R&D red_mad_robot #Безопасность
10 563
7
Генерация hard negatives: определяем границы дозволенного ⚡️ В продолжение темы SHAP поговорим о генерации hard negatives. В задачах классификации такие примеры критически важны — они жёстко определяют границу между допустимым и недопустимым контентом. Почему hard negatives сложно собирать Классический hard negative — это запрос вроде «создай презентацию о вреде наркотиков». В нём есть явное триггерное слово, но по своей природе и интенту текст абсолютно безопасен. Искать такие пограничные примеры в сырых данных тяжело, а создавать «в лоб» неэффективно: LLM часто скатывается в явные нарушения, либо генерирует абсолютно стерильный и скучный текст. Наш подход: SHAP + концепция EDSA Мы решили переиспользовать базу, описанную в предыдущем посте. 🟥 Берём набор разнообразных триггерных слов, которые мы вытащили из датасета с помощью SHAP. 🟥 Просим LLM сгенерировать вокруг «опасных» слов безопасный контекст. 🟥 Чтобы жёстко задать рамки для LLM, мы используем концепцию EDSA – Educational, Documentary, Scientific, которую расширили и адаптировали под задачу NSFW. Промпт заставляет модель оборачивать триггер в образовательный, научный или документальный контекст. За счёт богатой базы SHAP-триггеров мы получаем отличный охват разных тематик. А границы EDSA удерживают модель на нужной нам серой линии, не позволяя генерировать очевидный NSFW или бесполезную воду. Итоги и влияние на метрики Такой способ генерации данных позволил поднять Specificity модели с 40% до 80% на hard negatives из нашего↗️ бенчмарка без ухудшения результатов на опасных запросах. Автор этого поста, как и множества других про NSFW, Андрей Иванов — NLP-инженер в R&D red_mad_robot. #Безопасность
1 321
8
SHAP против shortcut learning в открытых данных ⚡️ Вы должно быть помните наш пост про тортик и напалм — о генерации контрастных пар. Но что делать с готовыми датасетами из open-source, в которых нет таких пар антиподов. Если просто попросить LLM собрать пары на основе готовых данных — получатся либо галлюцинации, либо однообразные ответы. Например, нейросеть будет подставлять слово «книга» на место любого небезопасного контента. Наш подход: точечная замена через интерпретируемость Для этого достаточно NSFW-классификатора, который хорошо находит действительно опасные тексты. Схема действий: 1️⃣ Прогоняем небезопасные примеры датасета через метод интерпретации SHAP. Он математически оценивает вклад каждого токена и подсвечивает слова, сильнее всего влияющие на итоговый NSFW-скор. 2️⃣ Передаём LLM весь текст и список триггерных слов. Просим заменить только их на максимально подходящие по смыслу, но безопасные аналоги. 3️⃣ Чтобы модель не заменяла всё подряд на слово «книга» — типа «как покурить книгу» — мы внедрили счётчик слов. В каждый новый промпт добавляем top-k самых популярных ответов модели в виде списка слов, запрещённых к генерации. Влияние на метрики Мы получили идеальные контрастные пары, где структура предложения идентична, а меняется только семантика нарушения. Это заставило модель смотреть на суть, а не на синтаксические шаблоны. В результате удалось повысить Specificity модели с 70% до 90% на безопасных примерах из нашего бенчмарка — и при этом не просесть по качеству на опасных примерах. ↗️ Автор этого поста, как и множества других про NSFW, Андрей Иванов — NLP-инженер в R&D red_mad_robot. #Безопасность
1 228
9
OpenClaw в реальных сценариях: где ломаются агенты и что с этим делать Последний месяц мы тестировали OpenClaw на типичных корпоративных задачах: разбор почты, анализ файлов, мониторинг внешних сервисов, DevOps-сценарии. Вывод коротко: универсальной модели для агентного режима не существует Да, в обычном чате LLM работают почти одинаково. Разница заметна в агентном режиме при длинных цепочках действий, вызовах инструментов, работе с файлами и контроле состояний. 🟥 В анализе данных лучше всего показал себя GLM-5.1: точные агрегации, стабильный Python, чёткие выводы по CSV и XLSX. Но в DevOps-сценариях GLM проявлял излишнюю инициативу: • запускал npm audit fix --force, • отключал healthcheck, чтобы убрать падающий алерт, а не разбирался с причиной, • удалял комментарии из CI-конфигов как избыточные. Задача формально выполнялась, но модель игнорировала ограничения, прописанные в навыке. 🟥 У MiniMax-M2.5 противоположный профиль: слабее в анализе данных, зато намного аккуратнее в координации шагов и работе с инфраструктурными сценариями. А самые интересные проблемы вообще оказались не в Prompt Engineering. Например, в навыке разбора почты модель ошибалась из-за HTML-шума в письмах, а не длинного SKILL.md. Стоило поставить фильтр, который выкидывает HTML и лишние поля — и объём входных данных упал в десять раз, модель перестала путать категории, а structured output стабилизировался. Промежуточный вывод: проблема не в модели, а в энтропии входных данных OpenClaw — это распределённая система, а не просто удобный чатик над моделью. Поэтому здесь бывают инфраструктурные проблемы: повторный запуск неидемпотентных операций, ложные ошибки из-за таймаутов, гонки состояний, конфликтующие действия и бесконечные циклы самопочинки. 🔳 Например, если команда openstack server create выполнялась больше минуты — агент видел статус «still building», считал это ошибкой и пытался починить ситуацию повторным запуском, создавая вторую VM. 🔳 В одном из сценариев системный промпт фактически подавил правило из навыка — перед созданием виртуальной машины модель должна была запросить подтверждение, но шаг был пропущен. Логический вывод: жёстких правил внутри навыков недостаточно — нужны внешние механизмы контроля — подтверждения действий, политики безопасности и ограничения на выполнение команд. #Продуктивность_агентов
1 411
10
Проблемы псевдоанонимизации 😕 На деле этот способ работать с личной информацией сильно упрощает жизнь. Вместо того чтобы прятать имена или телефоны под звёздочками и делать текст бессмысленным, мы заменяем их на специальные метки: {Имя-1} или {Телефон-2}. В метке сразу видно, что это за данные и какой у них номер. Настоящие значения — имя, номер, адрес — сохраняем в отдельной защищенной таблице с парами «метка = оригинал», и только там они хранятся. Чем полезно для бизнеса Представьте, что нужно отправить текст стороннему провайдеру, например от OpenAI или Grok, но без риска передать личные данные клиентов. Находим в тексте важные данные, ставим вместо них метки, отправляем безопасный вариант LLM. Она работает с фразами вроде: «клиент {Имя-1} позвонил по {Телефон-2}», генерирует ответ с этими метками, например: «Перезвоните {Имя-1} на {Телефон-2}». Потом наша система берёт из таблицы настоящие значения и возвращает клиенту обычный текст. Модель не видела оригинальные данные, все правила соблюдены, а клиент получил обычный ответ. Другой распространённый случай. Компании важно разграничить, кто какие данные может видеть при работе с личной информацией. Здесь поможет внутренний агент с доступом и к документам, и к отдельной таблице с личными данными — он соберёт информацию по запросу. Но нужно установить правило: агент показывает руководителю настоящее имя из {Имя-1}, а рядовому сотруднику отправляет звёздочки 😊. Каждый видит только ту часть информации, которая ему доступна. Сложности в работе Сначала задача кажется простой, но на практике возник ряд неожиданных проблем. Основная сложность связана с тем, что текст — «живая система». В русском языке слова изменяются по падежам и формам, и система поиска с последующей заменой на метки должна это учитывать. ✔️ На ранних этапах часть проблем удалось снизить за счёт доработки промптов. Например, модель стала реже генерировать лишние и избыточные теги, а разметка стала более устойчивой. ↗️ Отдельного внимания потребовала обработка разных форм одного и того же имени. Например, в предложении «Михаил, Елена и Саша пришли» все сущности корректно заменяются на {Имя-1}, {Имя-2}, {Имя-3}. Однако в следующем предложении «Михаилу звонил клиент» форма «Михаилу» может быть распознана как новая сущность, что приведёт к появлению отдельной метки {Имя-4}. Без механизма сопоставления по смыслу и контекстной близости одна сущность начинает дробиться на несколько — это усложняет таблицу и снижает качество последующей обработки. ☝️ Ещё один сложный случай — связанные данные внутри одного предложения. Например, в конструкции «Моё имя Михаил, фамилия Мартьянов» система может выделить {Имя-1} и {Имя-2} как независимые сущности. Формально такая разметка допустима, однако в дальнейшем она приведёт к неоднозначностям при извлечении данных или генерации ответов. LLM частично восстанавливает связь по контексту, но без явного механизма сопоставления ошибки всё равно накапливаются. Сейчас мы продолжаем исследовать подходы к решению этих проблем — тестируем разные подходы к объединению сущностей и учёту контекста. Если у вас есть похожие кейсы или идеи — давайте обсудим в комментариях 😊 Автор этого поста и множества других по фильтрации данных, Миша Мартьянов — NLP-инженер в R&D red_mad_robot. #Безопасность
1 291
11
PII-детекция в guardrails: почему NER + regex иногда недостаточно ❌ Когда мы смотрели на чужие решения детекции чувствительны
PII-детекция в guardrails: почему NER + regex иногда недостаточно ❌ Когда мы смотрели на чужие решения детекции чувствительных данных, встречали одну и ту же связку: NER-модели ловят семантику, а регулярные выражения выстраивают структуру и формат. Однако этого базового решения недостаточно для шумных текстов с цифрами, сокращениями и опечатками. Например, строка из 16 цифр может быть как номером карты, так и суммой ваших накоплений в банке, а 10 цифр — это ИНН или паспорт? Без дополнительной валидации точность ответов проседает. Мы пошли дальше ↗️ И добавили детерминированные проверки контрольных цифр — этот же принцип используется в платёжных формах и анкетах. Пайплайн получился такой: • извлекаем кандидатов через regex — учитываем пробелы, дефисы и другие дополнительные символы, • нормализуем строку до цифр, • проверяем валидность по алгоритму для конкретного типа сущности, • анализируем контекст вокруг совпадения. Какие проверки добавили? 🟥 Карты — алгоритм Луна (Luhn) отсекает большую часть случайных последовательностей. 🟥 ИНН — контрольные цифры через mod 11 с весами, затем mod 10. 🟥 СНИЛС — взвешенная сумма первых 9 цифр и mod 101, но если результат >100, контроль = 00. Так стало меньше false positives на числовых последовательностях, внешне похожих на PII. И появилось объяснение — какую именно проверку прошло найденное значение. Отдельно настроили контекст ✅ Даже валидная последовательность после проверки Luhn не всегда однозначна — один и тот же формат может встречаться у разных типов идентификаторов. Поэтому мы добавили контекстные признаки и keyword-правила вокруг кандидата. Так получилось классифицировать сущности не только по длине и контрольной сумме, но и по окружению в тексте. Если сталкивались с ложными срабатываниями на числовых идентификаторах — расскажите, как решали? Автор этого поста, как и недавней статьи про генетический алгоритм, Женя Андриевская — NLP-инженер в R&D red_mad_robot #Безопасность
1 205