fa
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