RuModernBERT Intent Classifier
Данная модель представляет собой классификатор интентов на базе архитектуры RuModernBERT-base, специально оптимизированный для работы в составе диалоговых голосовых систем на русском языке.
Описание режима
Модель работает в режиме классификации без учета контекста. Это означает, что для предсказания намерения используется исключительно последняя реплика пользователя. Модель не требует передачи истории диалога или предыдущих ответов системы, что обеспечивает:
- Минимальные вычислительные затраты при инференсе.
- Возможность использования в качестве первого слоя обработки (fast-path) для определения простых команд.
- Независимость от состояния диалога (stateless).
Характеристики модели
- Базовая модель: deepvk/RuModernBERT-base
- Тип задачи: Классификация последовательностей (Multi-class Classification)
- Основные классы: GREETING (приветствие), THANKS (благодарность), FAREWELL (прощание) и другие системные токены.
- Функция потерь: Focal Loss (использована для коррекции дисбаланса классов в обучающей выборке).
Инструкция по использованию (Inference)
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as F
# Загрузка модели и токенизатора
model_name = "galkinv42/RuModernBERT-Intent-Classifier"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def predict_intent(user_input):
# Токенизация без добавления контекста
inputs = tokenizer(
user_input,
return_tensors="pt",
truncation=True,
max_length=512
)
model.eval()
with torch.no_grad():
outputs = model(**inputs)
# Расчет вероятностей
probabilities = F.softmax(outputs.logits, dim=-1)
confidence, class_idx = torch.max(probabilities, dim=-1)
label = model.config.id2label[class_idx.item()]
return label, confidence.item()
# Пример вызова
intent, score = predict_intent("Спасибо за помощь, всего доброго")
print(f"Интент: {intent}, Уверенность: {score:.4f}")
Обучение
- Данные: Набор данных включает реальные логи диалогов, дополненные синтетическими примерами для повышения точности на минорных классах (благодарности и прощания).
- Аугментация: В процессе обучения применялась техника RandomWordAug (перестановка слов) для повышения устойчивости модели к вариативности естественной речи.
- Методология: Валидация проводилась с использованием StratifiedGroupKFold по идентификаторам диалогов, что исключает попадание фраз из одного диалога одновременно в обучающую и валидационную выборки.
Ограничения
- Модель не учитывает предыдущие реплики. В случаях, когда интент сильно зависит от контекста (например, краткие ответы "да", "нет", "хорошо"), точность может снижаться.
- Предназначена исключительно для русского языка.
Метрики по классам
| Класс | Precision | Recall | F1-Score | Support |
|---|---|---|---|---|
<ACTION> |
0.85 | 0.66 | 0.74 | 87 |
<FAREWELL> |
0.91 | 0.83 | 0.87 | 24 |
<GREETING> |
0.92 | 0.96 | 0.94 | 24 |
<NOISE> |
0.68 | 0.59 | 0.63 | 93 |
<QUESTION> |
0.85 | 0.91 | 0.88 | 188 |
<STATEMENT> |
0.62 | 0.74 | 0.67 | 97 |
<THANKS> |
1.00 | 0.67 | 0.80 | 3 |
- Downloads last month
- 28