/ Модель

Характеристики

Контекст
2 048 токенов
Лицензия
Apache 2.0
Опубликована
17 июл 2026

rubert-toxicity-multitask

Классификация текстаТекст → label3 профессии

Многоцелевой классификатор русскоязычных комментариев для выявления ненормативной лексики и угроз.

43скачиваний за 30 дней1лайквеса обновлены17 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

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

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

IvanFed разработал многоцелевой классификатор русскоязычных текстов на основе энкодера cointegrated/rubert-tiny2. Модель независимо оценивает вероятность ненормативной лексики, угроз и запросов о незаконных действиях с помощью трёх классификационных голов и сигмоидальных выходов.

Модель предназначена для модерации русскоязычных комментариев и обнаружения оскорблений и угроз. Она обучена на наборе из 248 288 размеченных комментариев из ok.ru; на валидации F1 для ненормативной лексики составил 0,8945, для угроз — 0,7823. Для класса незаконных запросов датасет не содержит примеров, поэтому модель не умеет надёжно их выявлять.

Модель использует PyTorch и распространяется по лицензии Apache-2.0. Обучение только на комментариях ok.ru ограничивает перенос качества на другие источники и типы текста.

Сценарии применения

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

Ограничения

Класс незаконных запросов отсутствовал в обучающем датасете, поэтому модель не умеет надёжно выявлять такие запросы. Обучение только на русскоязычных комментариях ok.ru может ухудшать качество на других доменах; для обнаружения угроз автор рекомендует собрать дополнительные данные.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

RuBERT Multi-Task Toxicity Classifier

Model Description

Эта модель является Multi-Task классификатором токсичности на основе легковесного энкодера cointegrated/rubert-tiny2. Она обучена одновременно предсказывать три класса токсичности:

  1. Profanity (ненормативная лексика) — мат, оскорбления, нецензурная брань
  2. Threat (угрозы) — явные или скрытые угрозы
  3. Illegal (запросы на нарушение закона) — запросы о незаконных действиях (в данном датасете отсутствует)

Модель имеет три независимые головы (линейные слоя), каждая из которых выдает логит для своего класса. Вероятности получаются применением сигмоиды.

Training Data

Модель обучена на датасете Russian Toxic Comments Multi-label, содержащем 248,288 размеченных комментариев из социальной сети ok.ru.

Metrics (on Validation Set)

ClassThresholdPrecisionRecallF1-Score
Profanity0.450.89210.89690.8945
Threat0.350.76540.79980.7823
Illegal0.500.00000.00000.0000

Примечание: Класс illegal отсутствует в датасете, поэтому метрики равны нулю.

How to Use

1. Установка зависимостей

pip install torch transformers huggingface-hub

2. Загрузка модели и токенизатора

import torch
from transformers import AutoTokenizer
import json

tokenizer = AutoTokenizer.from_pretrained("IvanFed/rubert-toxicity-multitask")

with open("thresholds.json", "r") as f:
    thresholds = json.load(f)

class MultiTaskToxicityEncoder(torch.nn.Module):
    def __init__(self, model_name="cointegrated/rubert-tiny2"):
        super().__init__()
        from transformers import AutoModel
        self.encoder = AutoModel.from_pretrained(model_name)
        self.hidden_size = self.encoder.config.hidden_size
        self.dropout = torch.nn.Dropout(0.1)
        self.profanity_head = torch.nn.Linear(self.hidden_size, 1)
        self.threat_head = torch.nn.Linear(self.hidden_size, 1)
        self.illegal_head = torch.nn.Linear(self.hidden_size, 1)

    def forward(self, input_ids, attention_mask):
        outputs = self.encoder(input_ids=input_ids, attention_mask=attention_mask)
        cls_embedding = outputs.last_hidden_state[:, 0, :]
        cls_embedding = self.dropout(cls_embedding)
        return (
            self.profanity_head(cls_embedding),
            self.threat_head(cls_embedding),
            self.illegal_head(cls_embedding)
        )

model = MultiTaskToxicityEncoder()
model.load_state_dict(torch.load("pytorch_model.bin", map_location="cpu"))
model.eval()

def predict_toxicity(text, threshold_dict=thresholds):
    encoded = tokenizer(text, truncation=True, padding='max_length', max_length=128, return_tensors='pt')
    with torch.no_grad():
        profanity_logits, threat_logits, illegal_logits = model(encoded['input_ids'], encoded['attention_mask'])
        profanity_prob = torch.sigmoid(profanity_logits).item()
        threat_prob = torch.sigmoid(threat_logits).item()
        illegal_prob = torch.sigmoid(illegal_logits).item()
    return {
        'profanity': {'probability': profanity_prob, 'prediction': profanity_prob >= threshold_dict.get('Profanity', 0.5)},
        'threat': {'probability': threat_prob, 'prediction': threat_prob >= threshold_dict.get('Threat', 0.5)},
        'illegal': {'probability': illegal_prob, 'prediction': illegal_prob >= threshold_dict.get('Illegal', 0.5)}
    }

text = "Ты дурак!"
print(predict_toxicity(text))

Training Details

  • Base Model: cointegrated/rubert-tiny2
  • Batch Size: 64
  • Learning Rate: 2e-5
  • Optimizer: AdamW
  • Scheduler: ReduceLROnPlateau (factor=0.5, patience=2)
  • Early Stopping: patience=3 (остановка на 3-й эпохе)
  • Max Sequence Length: 128 токенов
  • Loss Function: BCEWithLogitsLoss (сумма потерь для трех голов)
  • Number of Epochs Trained: 6 (best model at epoch 3)

Limitations

  • Класс illegal отсутствует в обучающем датасете, поэтому модель не может его обнаружить.
  • Модель обучена только на русскоязычных комментариях из социальной сети ok.ru, может плохо работать на других доменах.
  • Для улучшения качества на классе threat рекомендуется собрать дополнительные данные.

Acknowledgements

Благодарность авторам оригинального датасета Toxic Russian Comments за предоставленные данные.

Citation

Если вы используете эту модель в своей работе, пожалуйста, ссылайтесь на:

@misc{rubert_toxicity_multitask,
  author = {IvanFed},
  title = {RuBERT Multi-Task Toxicity Classifier},
  year = {2026},
  publisher = {Hugging Face},
  howpublished = {\url{https://huggingface.co/IvanFed/rubert-toxicity-multitask}}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
eb0808f

0 моделей