В современной компьютерной лингвистике понимание смысла написанного или сказанного достигается с помощью моделей естественного языка (NLU). С постепенным ростом аудитории виртуальных ассистентов Салют встает вопрос об оптимизации наших сервисов, работающих с естественным языком. Для этого оказывается целесообразно использовать одну сильную модель NLU для решения сразу нескольких задач обработки текста. В этой статье мы расскажем, как можно использовать многозадачное обучение для улучшения векторных представлений и обучения более универсальной модели NLU на примере SBERT.
В высоконагруженных сервисах обработки текста решается целый ряд различных задач NLP:
- Распознавание намерений.
- Выделение именованных сущностей.
- Сентиментный анализ.
- Анализ токсичности.
- Поиск похожих запросов.
Каждая из этих задач обладает своей спецификой и, вообще говоря, требует построения и обучения отдельной модели. Однако, поддерживать и исполнять для каждой такой задачи отдельную NLU-модель непрактично – сильно возрастает время обработки запроса и потребляемая (видео)память. Вместо этого мы используем одну сильную модель NLU для извлечения универсальных признаков из текста. Поверх этих признаков мы применяем относительно легковесные модели (адаптеры), которые и решают прикладные NLP-задачи. При этом NLU и адаптеры могут исполняться на разных машинах – это позволяет удобнее разворачивать и масштабировать решения.