Разработка NLP-решений на заказ: тональность, сущности и классификация текстов на русском

Обработка естественного языка на заказ — это задачи, где машина читает ваши тексты: обращения, письма, отзывы, заявки, переписку. Мы разрабатываем классификацию, анализ тональности и извлечение сущностей (имена, организации, суммы, артикулы, сроки) на русском языке, в вашем контуре, и принимаем работу по замеру на размеченной выборке ваших текстов, а не по общим словам о точности.

Пилот на вашей выборке — от 150 000 ₽Разметка и метрики по классам, а не одна цифраИсходный код и модели в вашем репозитории с первого коммита

С чем приходят

Когда тексты уже накопились, а пользы от них нет

Обращения читают глазами

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

Отзывы и письма не превращаются в данные

Мнения клиентов лежат в карточках, форме на сайте и почте. Сводку по темам и настроению собирают раз в квартал вручную по выборке, которой никто не доверяет.

Готовый сервис тональности ошибается на вашем языке

Общая модель отличает «отлично» от «ужасно», но принимает отраслевое слово за ругательство, а ироничную жалобу за похвалу. Вам нужно проверенное на ваших текстах решение.

Тексты нельзя отправлять наружу

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

Задачи

Какие задачи решает NLP и что вы получаете на выходе

Задач с текстами много, а подход зависит от задачи. Документы с формой и таблицами разбирает интеллектуальная обработка документов, здесь речь о смысле написанного.

Задача
Что получаете на выходе
Типовой подход
Где ломается
ЗадачаКлассификация обращенийтема и срочность
Что получаете на выходеДля каждого обращения тема, срочность и подразделение-адресат
Типовой подходОбученная на вашей выборке модель-классификатор; для редких тем — правила
Где ломаетсяТемы пересекаются, новые темы появляются, а список классов не пересматривают
ЗадачаАнализ тональностиотношение автора
Что получаете на выходеОценка по шкале и объект оценки: на что именно жалуются
Типовой подходМодель, обученная на ваших текстах; общая модель лишь как отправная точка
Где ломаетсяИрония, вежливая жалоба, смесь хорошего и плохого в одном отзыве
ЗадачаИзвлечение сущностей (NER)имена, суммы, сроки
Что получаете на выходеСписок сущностей с типом и местом в тексте, приведённый к справочнику
Типовой подходМодель разметки последовательностей плюс правила для форматов вроде артикулов
Где ломаетсяСклонения, сокращения, одинаковое слово в двух ролях
ЗадачаИзвлечение фактовкто, что, когда
Что получаете на выходеСтруктура из свободного текста: заявка, условие, дата платежа, причина отказа
Типовой подходЯзыковая модель по схеме полей на ваших серверах, затем проверка кодом
Где ломаетсяФакт, которого в тексте нет, но модель его «достроила»
ЗадачаТемы и дублигруппы похожих текстов
Что получаете на выходеКластеры обращений, повторы, всплески по теме
Типовой подходВекторные представления текстов и кластеризация; метки тем проверяет человек
Где ломаетсяКластеры, которые математически хороши, но не имеют смысла для бизнеса
Тональность

Анализ тональности: почему задача сложнее, чем «хорошо или плохо»

Отзыв «приехали вовремя, но грубо» нельзя отнести ни к положительным, ни к отрицательным.

Шкала и объект оценки

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

Что ломает тональность

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

Тональность как входной сигнал, а не как цель

Одна оценка настроения мало что меняет. Работает связка тональности, темы, срочности и клиента: «негатив по оплате от крупного клиента уходит руководителю смены». Правило записываете вы, мы обеспечиваем надёжность входных сигналов.

Русский язык

Особенности русского языка, которые ломают готовые модели

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

Особенность
Пример
Что ломается
Как закрываем
ОсобенностьСклонения и формы словморфология
Пример«в Ростове», «из Ростова», «Ростову»: одна сущность в разных падежах
Что ломаетсяПоиск по точной строке находит не все формы
Как закрываемЛемматизация, модели с учётом формы слова, нормализация к справочнику
ОсобенностьОмонимиязначение по контексту
Пример«кран», «замок», «Ростов»: объект, организация или город
Что ломаетсяТип сущности определён неверно
Как закрываемКонтекстное окно, правила приоритета, проверка по справочнику
ОсобенностьСокращения и жаргонязык отрасли
Пример«ТЗ», «акт сверки», «кидайте скан»: слова вашей отрасли и компании
Что ломаетсяМодель не знает значения или путает его
Как закрываемСловарь сокращений, примеры из ваших текстов в выборке
ОсобенностьОпечатки и транслитнабор на телефоне
Пример«пришол», «iPhone» и «айфон» в одном потоке
Что ломаетсяСлова превращаются в неизвестные токены
Как закрываемНормализация текста перед разбором, обучение на реальных ошибках
ОсобенностьНазвания организацийварианты записи
Пример«ООО Ромашка», «Ромашка, ООО», «ИП Иванов»: разная запись одного лица
Что ломаетсяДубли в справочнике контрагентов
Как закрываемПравила нормализации, сопоставление с реестром по реквизитам
Сущности

Извлечение сущностей (NER): схема, разметка и привязка к справочнику

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

Схема сущностей

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

Нормализация и связывание

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

Чем отличается извлечение моделью разметки и языковой моделью

Модель разметки последовательностей быстро и дёшево находит сущности в больших потоках, но требует размеченной выборки. Языковая модель по схеме полей справляется без обучения на редких формах, но медленнее, дороже по ресурсам и может «достроить» значение, которого в тексте нет. Поэтому её ответ проверяется кодом: значение должно находиться в исходном тексте.

Подходы

Четыре подхода к тексту: что выбрать под вашу задачу

Чаще всего получается комбинация: правила закрывают чёткие форматы, модель — смысл, человек — сомнительное.

Подход
Когда годится
Цена ошибки
Что проверяем
ПодходПравила и словариформат известен
Когда годитсяНомера, артикулы, фиксированные формулировки
Цена ошибкиОшибка предсказуема и объяснима
Что проверяемДоля пропущенных вариантов записи на реальных текстах
ПодходКлассические моделимного данных, простые классы
Когда годитсяТема обращения, грубая тональность на большом потоке
Цена ошибкиДешёвые и быстрые, но слабы на смысле
Что проверяемТочность и полнота по классам, а не общая цифра
ПодходНейросеть, обученная на вашей выборкенужна точность по теме
Когда годитсяТональность по объектам, NER, классификация со сложными классами
Цена ошибкиЛучшее соотношение качества и затрат при наличии разметки
Что проверяемМатрица ошибок и устойчивость к новым формулировкам
ПодходЯзыковая модель с инструкциеймало разметки, текст свободный
Когда годитсяИзвлечение фактов, редкие типы, первая версия схемы
Цена ошибкиМожет достроить значение, медленнее, нужны проверки
Что проверяемДоля значений, подтверждённых цитатой из исходного текста
Качество

Как мы измеряем качество и поддерживаем его после запуска

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

Разметка и согласованность

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

Метрики по классам

Для каждого класса считаются полнота (сколько нужных случаев найдено) и точность (сколько найденного верно). Редкий, но дорогой класс вроде жалобы на безопасность может иметь высокую общую точность и нулевую полноту. Смотрим на матрицу ошибок: какие классы путаются между собой.

После запуска

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

Что делаем

Из чего состоит работа и сколько она стоит

Цены по ступеням совпадают со страницей «Тарифы». Остановиться можно после любой, сделанное остаётся у вас по акту.

Обследование: один-два потока текстов

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

200 000 ₽ · 2–3 недели

Обследование: несколько источников и систем

Почта, чат, CRM, система заявок и хранилище вместе: схема обменов и матрица источников истины.

350 000 ₽ · 3–4 недели

Лёгкий пилот: одна задача на одном потоке

Например, тема и срочность обращений или извлечение сущностей из одного типа писем; замер по классам на вашей выборке.

150 000–400 000 ₽ · 2–8 недель

Тяжёлый пилот: несколько задач, интеграция, интерфейс проверки

Классификация, тональность по объектам, сущности со связыванием, обмен с системой заявок или CRM и интерфейс оператора.

400 000–1 200 000 ₽ · 2–3 месяца

Вывод в эксплуатацию

Опытная эксплуатация на живом потоке, мониторинг качества и неуверенных ответов, регламент дообучения, обучение сотрудников.

от 1 500 000 ₽ этапами по 300 000–700 000 ₽ · от 3 месяцев

Сопровождение

Мониторинг, разбор ошибок, пополнение выборки; плановые доработки с пакета на 60 000 ₽. Сверх пакета — 5 000 ₽ в час.

20 000 / 60 000 / 120 000 ₽ в месяц
Процесс

Как идёт работа

Недели 1–3 — Обследование и схема

Берём реальные тексты, согласуем классы, шкалу тональности и список сущностей. Пишем инструкцию разметки.

Дальше — Выборка и эталон

Ваши сотрудники размечают выборку по инструкции, часть текстов независимо двое. Считаем согласованность разметчиков.

Затем — Базовый замер

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

Пилот — Обучение и интеграция

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

Приёмка — Протокол испытаний

Критерии записаны до начала: метрики по классам, доля неуверенных ответов, время обработки.

Дальше — Запуск и сопровождение

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

Цена

Что двигает цену внутри вилки

Число классов и сущностей

Пять тем и тридцать — разные задачи: работа растёт по числу различий.

Размеченные данные

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

Разнообразие текстов

Деловая переписка проще, чем чат с опечатками и вложенными фотографиями. Короткие сообщения требуют контекста диалога.

Интеграции и контур

Подключение к CRM, системе заявок и очередям, а также обработка на ваших серверах добавляют работы.

Контроль

Что остаётся у вас и чего мы не делаем

Остаётся у вас

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

Мы этого не делаем

  • Не обещаем точность без вашей выборки и не называем общую цифру «по языку».
  • Не делаем скоринг людей и автоматические решения о клиенте без участия человека: итог принимает сотрудник.
  • Не отслеживаем и не профилируем людей по их публичным записям, не собираем тексты из соцсетей.
  • Не делаем перевод и синтез речи как отдельный продукт; работу с аудио оцениваем отдельно.
  • Не проводим аттестацию, лицензии ФСТЭК у нас нет. Не берём работы дешевле 150 000 ₽ и не дежурим круглосуточно.
Граница

NLP, чат-бот, RAG и поиск: где проходит граница

Если нужен диалог с клиентом, это чат-бот или ИИ-ассистент: он использует NLP внутри, но продаёт сценарий. Если нужно отвечать на вопросы по базе знаний со ссылкой на источник, это RAG-система. Поиск по смыслу без генерации ответа — задача семантического поиска.

Тексты звонков сначала нужно превратить в текст, затем уже анализировать. Эта цепочка описана на странице речевой аналитики. Документы с таблицами и бланками разбирает интеллектуальная обработка документов, а помощника первой линии по базе знаний — страница про ИИ для техподдержки.

Общая рамка — страница «Разработка ИИ на заказ», обучение собственной модели — разработка моделей машинного обучения.

Инструменты

На чём собираем

Модели и обработка текста
  • Python, PyTorch, библиотека Transformers, обучение на ваших серверах или на выделенных под проект
  • Энкодерные модели класса BERT для русского языка (классификация, тональность, NER)
  • pymorphy и аналогичные библиотеки для морфологии, правила и словари на Python
  • Языковая модель на ваших серверах для извлечения фактов, с проверкой кодом
Данные и развёртывание
  • Инструмент разметки: Label Studio или собственный интерфейс
  • Python, FastAPI, PostgreSQL, очередь на RabbitMQ
  • Хранилище векторов в PostgreSQL (pgvector) для тем и дублей
  • Docker, Nginx, GitLab CI, журнал правок и мониторинг качества
Материалы

Материалы по теме

Статья

Анализ тональности и извлечение сущностей на русском языке

Подводные камни: ирония, склонения, омонимия, разметка и метрики, которые не врут.

  • Тональность
  • NER
  • Метрики
Читать →
Статья

Порог уверенности модели: зачем он нужен

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

  • Порог
  • Ручной разбор
  • Проверка
Читать →
Статья

Как подготовить данные для ИИ-пилота

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

  • Выборка
  • Разметка
  • Эталон
Читать →
Заявка

Разберём ваши тексты и покажем, что в них можно автоматизировать

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

Спасибо, заявка отправлена. Ответим в течение рабочего дня.

Не удалось отправить. Напишите в телеграм или позвоните.

Вопросы

Частые вопросы: NLP-решения на заказ

Сколько стоит разработка NLP-решения?

Начинаем с обследования: 200 000 ₽ за один-два потока текстов, 350 000 ₽ при нескольких системах. Лёгкий пилот на одной задаче — 150 000–400 000 ₽ за 2–8 недель, тяжёлый с интеграцией и интерфейсом проверки — 400 000–1 200 000 ₽ за 2–3 месяца. Вывод в эксплуатацию — от 1 500 000 ₽ этапами по 300 000–700 000 ₽.

Какая точность анализа тональности у вас будет?

Число без вашей выборки назвать нельзя: оно зависит от шкалы, от тем, от длины текстов и от того, насколько сами разметчики согласны друг с другом. Мы замеряем метрики по классам на ваших текстах и записываем критерии приёмки в договор до начала разработки.

Сколько текстов нужно для обучения?

Зависит от числа классов и разнообразия формулировок. Для простой классификации на несколько тем хватает небольшой размеченной выборки, для тональности по объектам и NER её нужно больше. Нужный объём называем на обследовании по пробной разметке.

Можно ли обрабатывать тексты в закрытом контуре?

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

Достаточно ли ChatGPT или другой готовой модели?

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

Что делать, если размеченных данных нет?

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

Работаете ли вы с текстами из соцсетей и мониторингом упоминаний?

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

Кому принадлежит код, выборка и модели?

Вам. Исходный код лежит в вашем репозитории с первого коммита, размеченная выборка и обученные модели передаются по акту вместе с инструкцией развёртывания.

Вы работаете только в Ростове-на-Дону?

Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.