--- datasets: - pogram1st/ru-toxic-multitask-dataset base_model: - cointegrated/rubert-tiny2 --- # Multi-Task Toxicity RU Модель для классификации токсичных комментариев на русском языке. Модель использует архитектуру **RuBERT-tiny2** с тремя независимыми «головами» классификации для одновременного выявления разных типов нарушений. ## Метрики производительности Модель была обучена и оптимизирована по порогам для каждого класса: | Класс | Оптимальный порог | Precision | Recall | F1-score | | :--- | :---: | :---: | :---: | :---: | | **Ненормативная лексика** | 0.75 | 0.9402 | 0.9495 | 0.9448 | | **Угрозы** | 0.80 | 0.8031 | 0.8421 | 0.8221 | | **Запросы на нарушение закона** | 0.90 | 0.9242 | 0.9531 | 0.9385 | ## Быстрый старт ``` import torch from transformers import AutoTokenizer, AutoModel REPO_ID = "pogram1st/multitask-toxicity-comments" DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") tokenizer = AutoTokenizer.from_pretrained(REPO_ID) model = AutoModel.from_pretrained(REPO_ID, trust_remote_code=True) model.to(DEVICE) model.eval() def predict_toxicity(text): encoding = tokenizer( text, max_length=64, padding='max_length', truncation=True, return_tensors='pt' ).to(DEVICE) with torch.no_grad(): out_prof, out_threat, out_ill = model(encoding['input_ids'], encoding['attention_mask']) prob_prof = torch.sigmoid(out_prof).item() prob_threat = torch.sigmoid(out_threat).item() prob_ill = torch.sigmoid(out_ill).item() print(f"Текст: '{text}'") print(f"Ненормативная лексика: {prob_prof:.0%} -> {'Запрещенный контент' if prob_prof >= 0.75 else 'Ок'}") print(f"Угроза: {prob_threat:.0%} -> {'Запрещенный контент' if prob_threat >= 0.80 else 'Ок'}") print(f"Запрос на нарушение закона: {prob_ill:.0%} -> {'Запрещенный контент' if prob_ill >= 0.90 else 'Ок'}\n") predict_toxicity("Это приятно знать, но тем не менее.") ```