File size: 2,181 Bytes
6647d22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
656e1e2
 
 
 
 
 
 
89d8400
656e1e2
 
 
 
6647d22
 
 
 
 
 
 
 
 
 
656e1e2
 
 
89d8400
656e1e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89d8400
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

---
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}")
```