ToxicLord / README.md
Egor-3926's picture
Improve Russian examples
2abc9ad verified
metadata
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

ToxicLord

ToxicLord v1

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

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

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

Метки

0: clean
1: toxic

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

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

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

Метрики

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

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

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

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

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

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)

Примеры

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

Сообщение: Блин, я вообще ничего не понял
Ожидаемый класс: clean
Сообщение: Да мне всё равно, делайте как хотите
Ожидаемый класс: clean
Сообщение: Ну и зачем это было делать?
Ожидаемый класс: clean
Сообщение: Сам ты лох
Ожидаемый класс: toxic
Сообщение: Ты полный идиот
Ожидаемый класс: toxic
Сообщение: Иди отсюда, никто тебя тут не ждёт
Ожидаемый класс: toxic
Сообщение: У тебя синдром дауна
Ожидаемый класс: toxic
Сообщение: Даун
Ожидаемый класс: toxic

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

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

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

Ограничения

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

Лицензия

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

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