--- language: - ru - en tags: - text-classification - toxicity - roberta pipeline_tag: text-classification metrics: - accuracy - f1 - macro_f1 - roc_auc - mcc --- # ru-en-RoSBERTa Toxicity Classifier (Homework 2) Это модель для бинарной классификации русскоязычных комментариев на предмет токсичности (1 — toxic, 0 — neutral). Модель построена на базе предобученной архитектуры `ai-forever/ru-en-RoSBERTa` и дообучена в рамках выполнения Домашнего задания №2. ## Метрики качества на тестовой выборке По результатам оценки модели (`evaluate_model`) на сбалансированном тестовом множестве были получены следующие показатели: * **Accuracy:** 90.27% * **Precision:** 91.30% * **Recall:** 89.03% * **F1-Score:** 90.15% * **ROC AUC:** 0.956 * **MCC (Коэффициент Мэттьюса):** 0.806 ## Особенности модели и порог классификации В ходе анализа ошибок и ручного инференса было установлено, что модель успешно детектирует маркеры скрытой и пассивной агрессии (повышая внутреннюю вероятность токсичности до 0.34 - 0.45). Однако стандартный жесткий порог `argmax` (0.5) может пропускать такие завуалированные фразы. Для деплоя в продакшен рекомендуется калибровать порог классификации под конкретную бизнес-задачу. ## Пример использования (Inference) ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch tokenizer = AutoTokenizer.from_pretrained("Ahbdjbdsh/Dataset-from-HOMEWORK-2") model = AutoModelForSequenceClassification.from_pretrained("Ahbdjbdsh/Dataset-from-HOMEWORK-2") text = "Вы что, совсем тупой? Я же уже объяснял!" inputs = tokenizer(text, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) probs = torch.softmax(outputs.logits, dim=-1) prediction = torch.argmax(outputs.logits, dim=1).item() print(f"Класс: {prediction}, Вероятность токсичности: {probs[0][1].item():.4f}") ```