Text Classification
Transformers
Safetensors
Russian
deberta
toxicity-classification
russian
telegram
moderation
Eval Results (legacy)
Instructions to use Egor-3926/ToxicLord with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Egor-3926/ToxicLord with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="Egor-3926/ToxicLord")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("Egor-3926/ToxicLord") model = AutoModelForSequenceClassification.from_pretrained("Egor-3926/ToxicLord") - Notebooks
- Google Colab
- Kaggle
| 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`. | |
| Разрешено некоммерческое использование с указанием авторства. Коммерческое использование и распространение производных версий запрещены условиями лицензии. | |