|
|
| --- |
| language: |
| - ru |
| license: mit |
| pipeline_tag: text-classification |
| tags: |
| - bert |
| - toxicity |
| - russian |
| --- |
| |
| # Toxicity Classifier |
|
|
| Модель для определения токсичности сообщений службы поддержки. |
|
|
| ## Задача |
|
|
| Модель решает задачу бинарной классификации текста: определяет, является ли сообщение |
| службы поддержки токсичным (1) или нетоксичным (0). Предназначена для использования в |
| пайплайне контроля качества — анализ исходящих ответов операторов в реальном времени |
| перед отправкой клиенту. |
|
|
| - **Вход:** текст сообщения на русском языке |
| - **Выход:** класс (0 — нетоксично, 1 — токсично) и вероятность токсичности |
| - **Базовая модель:** ai-forever/ru-en-RoSBERTa (энкодер заморожен, обучалась только классификационная голова) |
| - |
|
|
| ## Метрики |
|
|
| Пример результатов на тестовой выборке: |
|
|
| accuracy: 0.99 |
| precision: 0.99 |
| recall: 0.99 |
| f1: 0.99 |
| mcc: 0.99 |
| roc_auc: 0.99 |
| |
| ## Пример использования |
| |
| ```python |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification |
| import torch |
| |
| model_name = "VladimirRH/toxicity-classifier" |
| tokenizer = AutoTokenizer.from_pretrained(model_name) |
| model = AutoModelForSequenceClassification.from_pretrained(model_name) |
| model.eval() |
|
|
| text = "Спасибо за обратную связь, мы обязательно учтём ваши пожелания." |
|
|
| inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=32) |
|
|
| with torch.no_grad(): |
| logits = model(**inputs).logits |
| probs = torch.softmax(logits, dim=1) |
| |
| prediction = torch.argmax(probs, dim=1).item() |
| toxicity_prob = probs[0][1].item() |
| |
| print(f"Класс: {prediction}") |
| print(f"Вероятность токсичности: {toxicity_prob:.4f}") |
| ``` |
| |