Ahbdjbdsh's picture
Upload README.md with huggingface_hub
8861ba8 verified
|
Raw
History Blame Contribute Delete
2.6 kB
---
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}")
```