--- library_name: transformers language: - ru tags: - text-classification - ru - pytorch - transformers license: apache-2.0 datasets: - Hinter-Models/censor-v5.9.1 metrics: - f1 - accuracy base_model: sergeyzh/rubert-mini-frida --- # Карточка модели Censor Model v5.9.1-preview ## Описание модели Эта модель является дообученной версией `sergeyzh/rubert-mini-frida` для многоклассовой классификации текста. Она предназначена для классификации запросов пользователей к банковскому ассистенту с целью определения их уместности и работает как предварительный фильтр перед дальнейшей обработкой. Основываясь на данных тестирования, модель предсказывает 5 различных классов (от 0 до 4). При этом Класс 4 интерпретируется как «Адекватный запрос» (Allow), а классы 0–3 — как различные категории неприемлемых запросов, подлежащих блокировке (Block). - **Разработчик:** Владимир Галкин (Hinter-Models) - **Тип модели:** Классификация текста (Text Classification) - **Язык(и):** Русский (ru) - **Лицензия:** Apache 2.0 - **Базовая модель:** `sergeyzh/rubert-mini-frida` ## Использование ### Прямое использование Модель предназначена для классификации обращений пользователей с целью выявления безопасных и релевантных запросов. В production-среде применяется специальная логика с использованием порога уверенности (confidence threshold) для принятия финального решения: пропустить запрос или заблокировать. ### Ограничения (Out-of-Scope Use) Данная модель не предназначена для генерации текста, ответов на вопросы пользователей или любых других задач за рамками описанной классификации. Модель оптимизирована для работы с банковской терминологией и продуктами экосистемы Сбера. На текстах других тематик качество работы может существенно снизиться. ## Как начать работу с моделью Пример кода для загрузки модели и классификации текста с использованием production-логики (порог 0.45): ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch tokenizer = AutoTokenizer.from_pretrained('Hinter-Models/censor-v5.9.1-preview') model = AutoModelForSequenceClassification.from_pretrained('Hinter-Models/censor-v5.9.1-preview') def batched_predict_prom_style(texts, threshold=0.45): """ Повторяет production-логику: confs, class_ids = softmax(logits).max(dim=1) bin_pred = ((class_ids == 4) | (confs < threshold)).int() Здесь bin_pred=1 означает пропуск (Allow), 0 — блокировку (Block). """ model.eval() enc = tokenizer(texts, padding=True, truncation=True, max_length=256, return_tensors='pt') with torch.no_grad(): logits = model(**enc).logits confs, class_ids = torch.nn.functional.softmax(logits, dim=-1).max(dim=1) bin_preds = ((class_ids == 4) | (confs < threshold)).int() return bin_preds.numpy() # Пример использования: texts = ["Как перевести пенсию в Сбер?"] predictions = batched_predict_prom_style(texts) print("Пропустить (Allow)" if predictions[0] == 1 else "Заблокировать (Block)") ``` ## Метрики ### Бинарные метрики для Production (с порогом уверенности 0.45) В этом сценарии эмулируется работа модели в проде: запрос блокируется, если модель предсказывает класс, отличный от 4, ИЛИ если уверенность предсказания (confidence) ниже 0.45. *(Оценивается качество определения целевого класса **BLOCK**, `pos_label=0`)* * **Accuracy (Доля правильных ответов):** 0.8453 * **Precision (Точность блокировки):** 0.9533 * **Recall (Полнота блокировки):** 0.7980 * **F1-score (F1-мера):** **0.8688** **Матрица ошибок (True vs Predicted):** * **Верно заблокировано (True Block):** 715 * **Ошибочно пропущено (False Allow):** 181 *(модель пропустила плохой запрос)* * **Ошибочно заблокировано (False Block):** 35 *(модель заблокировала хороший запрос)* * **Верно пропущено (True Allow):** 465 #### Базовые метрики модели (по `argmax`, без кастомного порога) Здесь представлены "чистые" метрики модели, когда выбирается просто класс с максимальной вероятностью. #### Бинарный режим (Block vs Allow) * **Accuracy:** 0.8681 * **Precision:** 0.9384 * **Recall:** 0.8387 * **F1-score:** 0.8857 #### Многоклассовый режим (5 классов, усреднение Macro) * **Accuracy:** 0.8064 * **Precision:** 0.8579 * **Recall:** 0.7872 * **F1-score:** **0.8090** **Разбивка F1-меры по отдельным классам:** * Класс 0: **0.78** (поддержка: 325) * Класс 1: **0.63** (поддержка: 218) * Класс 2: **0.86** (поддержка: 128) * Класс 3: **0.94** (поддержка: 110) * Класс 4 (Адекватный запрос): **0.84** (поддержка: 500) ## Authors Svetlana Tedeeva, Vladimir Galkin