File size: 6,662 Bytes
d7d2d80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c4d71f8
d7d2d80
c4d71f8
d7d2d80
 
 
 
c4d71f8
d7d2d80
 
c4d71f8
d7d2d80
 
c4d71f8
d7d2d80
 
c4d71f8
d7d2d80
 
 
 
 
c4d71f8
 
 
 
d7d2d80
 
c4d71f8
d7d2d80
ca7785f
 
c4d71f8
d7d2d80
c4d71f8
d7d2d80
 
 
 
 
 
c4d71f8
d7d2d80
c4d71f8
d7d2d80
 
c4d71f8
d7d2d80
 
c4d71f8
d7d2d80
c4d71f8
d7d2d80
 
 
 
 
 
 
 
 
c4d71f8
d7d2d80
 
c4d71f8
 
d7d2d80
 
c4d71f8
d7d2d80
 
 
 
 
 
 
 
 
 
8576421
d7d2d80
 
 
 
 
 
 
 
 
 
 
 
8576421
 
2abc9ad
8576421
 
2abc9ad
8576421
 
 
 
2abc9ad
8576421
 
 
 
2abc9ad
 
8576421
 
 
 
 
 
 
 
2abc9ad
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8576421
 
 
c4d71f8
 
 
d7d2d80
c4d71f8
d7d2d80
c4d71f8
d7d2d80
c4d71f8
 
 
 
d7d2d80
c4d71f8
d7d2d80
c4d71f8
d7d2d80
c4d71f8
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
---
license: cc-by-nc-nd-4.0
language:
  - ru
library_name: transformers
pipeline_tag: text-classification
tags:
  - toxicity-classification
  - russian
  - telegram
  - moderation
  - deberta
base_model: deepvk/deberta-v1-base
model-index:
  - name: ToxicLord v1
    results:
      - task:
          type: text-classification
          name: Классификация текста
        dataset:
          name: Внутренний тестовый набор токсичности
          type: private
        metrics:
          - type: accuracy
            value: 0.968937125748503
            name: Точность
          - type: precision
            value: 0.9309514251304697
            name: Precision токсичного класса
          - type: recall
            value: 0.905152224824356
            name: Recall токсичного класса
          - type: f1
            value: 0.9178705719374629
            name: F1 токсичного класса
          - type: f1
            value: 0.9493585102268198
            name: Macro F1
---

<p align="center">
  <img src="ToxicLord.png" alt="ToxicLord" width="420"/>
</p>

# ToxicLord v1

ToxicLord v1 - русскоязычная модель классификации токсичности для чат-модерации. Модель классифицирует короткие сообщения как `clean` или `toxic` и настроена под стиль Telegram-чатов.

Модель является fine-tune версии `deepvk/deberta-v1-base` для задачи бинарной классификации токсичности на русском языке.

Модель предназначена для помощи в модерации. Она может ошибаться, поэтому для реального использования рекомендуется логирование, ручная проверка спорных случаев и подбор порога под конкретное сообщество.

## Метки

```text
0: clean
1: toxic
```

## Рекомендуемый порог

Для осторожной Telegram-модерации лучше использовать вероятность токсичного класса, а не только `argmax`:

```text
toxic, если P(toxic) >= 0.90
```

## Метрики

Внутренний тестовый набор:

```text
accuracy:        0.9689
precision_toxic: 0.9310
recall_toxic:    0.9052
f1_toxic:        0.9179
macro_f1:        0.9494
```

Внешние фиксированные тестовые выборки при пороге `0.90`:

```text
Обычный Telegram-чат: 2/500 срабатываний, 0.4%
Токсичная выборка:    364/500 срабатываний, 72.8%
```

## Использование

```python
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer

model_id = "Egor-3926/ToxicLord"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
model.eval()

text = "ты грубый и неприятный человек"
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=192)

with torch.inference_mode():
    probs = torch.softmax(model(**inputs).logits, dim=-1)[0]

clean_score = float(probs[0])
toxic_score = float(probs[1])
label = "toxic" if toxic_score >= 0.90 else "clean"

print(label, toxic_score)
```

## Примеры

Ниже приведены примеры, близкие к реальным коротким сообщениям из чатов. Явная нецензурная лексика в карточке модели не приводится, поэтому часть грубых слов заменена на нейтральные формулировки или скрыта. Итоговый результат зависит от выбранного порога и контекста сообщения.

```text
Сообщение: Блин, я вообще ничего не понял
Ожидаемый класс: clean
```

```text
Сообщение: Да мне всё равно, делайте как хотите
Ожидаемый класс: clean
```

```text
Сообщение: Ну и зачем это было делать?
Ожидаемый класс: clean
```

```text
Сообщение: Сам ты лох
Ожидаемый класс: toxic
```

```text
Сообщение: Ты полный идиот
Ожидаемый класс: toxic
```

```text
Сообщение: Иди отсюда, никто тебя тут не ждёт
Ожидаемый класс: toxic
```

```text
Сообщение: У тебя синдром дауна
Ожидаемый класс: toxic
```

```text
Сообщение: Даун
Ожидаемый класс: toxic
```

## Обучающие данные

Модель дообучалась на смеси публичных русскоязычных датасетов токсичности и приватных модерационных разметок/исправлений.

Сырые обучающие данные, Telegram-логи, идентификаторы пользователей и приватные разметки вместе с моделью не распространяются.

## Ограничения

- Модель оптимизирована для русскоязычных Telegram-чатов и может хуже работать на формальных текстах, длинных документах и других языках.
- Короткие оскорбления и токсичные ярлыки могут классифицироваться как токсичные даже без широкого контекста.
- Сарказм, цитаты, шутки, обсуждение правил и мета-комментарии могут распознаваться неверно.
- Модель не стоит использовать как единственный источник решения для необратимых наказаний.

## Лицензия

Модель опубликована под лицензией `cc-by-nc-nd-4.0`.

Разрешено некоммерческое использование с указанием авторства. Коммерческое использование и распространение производных версий запрещены условиями лицензии.