--- library_name: transformers tags: [] --- # RuModernBERT Intent Classifier Данная модель представляет собой классификатор интентов на базе архитектуры RuModernBERT-base, специально оптимизированный для работы в составе диалоговых голосовых систем на русском языке. ### Описание режима Модель работает в режиме классификации без учета контекста. Это означает, что для предсказания намерения используется исключительно последняя реплика пользователя. Модель не требует передачи истории диалога или предыдущих ответов системы, что обеспечивает: * Минимальные вычислительные затраты при инференсе. * Возможность использования в качестве первого слоя обработки (fast-path) для определения простых команд. * Независимость от состояния диалога (stateless). --- ## Характеристики модели * **Базовая модель:** deepvk/RuModernBERT-base * **Тип задачи:** Классификация последовательностей (Multi-class Classification) * **Основные классы:** GREETING (приветствие), THANKS (благодарность), FAREWELL (прощание) и другие системные токены. * **Функция потерь:** Focal Loss (использована для коррекции дисбаланса классов в обучающей выборке). --- ## Инструкция по использованию (Inference) ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch import torch.nn.functional as F # Загрузка модели и токенизатора model_name = "galkinv42/RuModernBERT-Intent-Classifier" tokenizer = AutoTokenizer.from_pretrained("deepvk/RuModernBERT-base") 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}") ``` --- ## Обучение 1. **Данные:** Набор данных включает реальные логи диалогов, дополненные синтетическими примерами для повышения точности на минорных классах (благодарности и прощания). 2. **Аугментация:** В процессе обучения применялась техника RandomWordAug (перестановка слов) для повышения устойчивости модели к вариативности естественной речи. 3. **Методология:** Валидация проводилась с использованием StratifiedGroupKFold по идентификаторам диалогов, что исключает попадание фраз из одного диалога одновременно в обучающую и валидационную выборки. --- ## Ограничения * Модель не учитывает предыдущие реплики. В случаях, когда интент сильно зависит от контекста (например, краткие ответы "да", "нет", "хорошо"), точность может снижаться. * Предназначена исключительно для русского языка. --- ### Метрики по классам | Класс | Precision | Recall | F1-Score | Support | | --- | --- | --- | --- | --- | | `` | 0.85 | 0.66 | 0.74 | 87 | | `` | 0.91 | 0.83 | 0.87 | 24 | | `` | 0.92 | 0.96 | 0.94 | 24 | | `` | 0.68 | 0.59 | 0.63 | 93 | | `` | 0.85 | 0.91 | 0.88 | 188 | | `` | 0.62 | 0.74 | 0.67 | 97 | | `` | 1.00 | 0.67 | 0.80 | 3 |