| --- |
| 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`. |
|
|
| Разрешено некоммерческое использование с указанием авторства. Коммерческое использование и распространение производных версий запрещены условиями лицензии. |
|
|