Update README.md
Browse files
README.md
CHANGED
|
@@ -14,6 +14,18 @@ tags:
|
|
| 14 |
|
| 15 |
Модель для определения токсичности сообщений службы поддержки.
|
| 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
## Метрики
|
| 18 |
|
| 19 |
Пример результатов на тестовой выборке:
|
|
@@ -24,3 +36,29 @@ recall: 0.99
|
|
| 24 |
f1: 0.99
|
| 25 |
mcc: 0.99
|
| 26 |
roc_auc: 0.99
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
Модель для определения токсичности сообщений службы поддержки.
|
| 16 |
|
| 17 |
+
## Задача
|
| 18 |
+
|
| 19 |
+
Модель решает задачу бинарной классификации текста: определяет, является ли сообщение
|
| 20 |
+
службы поддержки токсичным (1) или нетоксичным (0). Предназначена для использования в
|
| 21 |
+
пайплайне контроля качества — анализ исходящих ответов операторов в реальном времени
|
| 22 |
+
перед отправкой клиенту.
|
| 23 |
+
|
| 24 |
+
- **Вход:** текст сообщения на русском языке (до 32 токенов)
|
| 25 |
+
- **Выход:** класс (0 — нетоксично, 1 — токсично) и вероятность токсичности
|
| 26 |
+
- **Базовая модель:** ai-forever/ru-en-RoSBERTa (энкодер заморожен, обучалась только классификационная голова)
|
| 27 |
+
-
|
| 28 |
+
|
| 29 |
## Метрики
|
| 30 |
|
| 31 |
Пример результатов на тестовой выборке:
|
|
|
|
| 36 |
f1: 0.99
|
| 37 |
mcc: 0.99
|
| 38 |
roc_auc: 0.99
|
| 39 |
+
|
| 40 |
+
## Пример использования
|
| 41 |
+
|
| 42 |
+
\`\`\`python
|
| 43 |
+
from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| 44 |
+
import torch
|
| 45 |
+
|
| 46 |
+
model_name = "VladimirRH/toxicity-classifier"
|
| 47 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 48 |
+
model = AutoModelForSequenceClassification.from_pretrained(model_name)
|
| 49 |
+
model.eval()
|
| 50 |
+
|
| 51 |
+
text = "Спасибо за обратную связь, мы обязательно учтём ваши пожелания."
|
| 52 |
+
|
| 53 |
+
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=32)
|
| 54 |
+
|
| 55 |
+
with torch.no_grad():
|
| 56 |
+
logits = model(**inputs).logits
|
| 57 |
+
probs = torch.softmax(logits, dim=1)
|
| 58 |
+
|
| 59 |
+
prediction = torch.argmax(probs, dim=1).item()
|
| 60 |
+
toxicity_prob = probs[0][1].item()
|
| 61 |
+
|
| 62 |
+
print(f"Класс: {prediction}")
|
| 63 |
+
print(f"Вероятность токсичности: {toxicity_prob:.4f}")
|
| 64 |
+
\`\`\`
|