Downloads · 30 days
9
35% of all-time downloads
sergeyzh/rubert-large-uncased-sentiment
rubert-large-uncased-sentiment is a text classification model from sergeyzh. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as mit.
Модель BERT-large для классификации сентимента русских отзывов: 3 класса — Negative (0), Neutral (1), Positive (2).
Downloads · 30 days
9
35% of all-time downloads
All-time downloads
26
Public
Parameters
209M
837 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors837 MB · 100%
From the Hugging Face model README
Модель BERT-large для классификации сентимента русских отзывов: 3 класса — Negative (0), Neutral (1), Positive (2).
Получена на базе модели sergeyzh/rubert-large-uncased-sts путём дистилляции мягких меток (soft labels), сгенерированных teacher-моделью FRIDA (архитектура T5-encoder, 823M параметров), предварительно дообученной на данных сентимент-анализа.
Модель содержит 12 слоёв — вдвое меньше стандартных 24 для архитектуры BERT-large (по скорости инференса сопоставима с классическими BERT-base моделями).
Основные характеристики модели:
Классы: 0 — Negative, 1 — Neutral, 2 — Positive.
Самый простой способ — pipeline:
from transformers import pipeline
model = pipeline("text-classification", model="sergeyzh/rubert-large-uncased-sentiment")
model("Просто шедевр. Каждая минута на вес золота, ни секунды скуки. Музыка, игра актёров, режиссура — всё на высочайшем уровне.", truncation=True, max_length=512)
# [{'label': 'Positive', 'score': 0.7779}]
Если нужны вероятности всех классов, используйте transformers напрямую:
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
checkpoint = "sergeyzh/rubert-large-uncased-sentiment"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
text = "Просто шедевр. Каждая минута на вес золота, ни секунды скуки. Музыка, игра актёров, режиссура — всё на высочайшем уровне."
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
logits = model(**inputs).logits
proba = torch.softmax(logits, dim=1)
label = model.config.id2label[proba.argmax().item()]
print(label, proba.tolist())
# Positive [[0.0126, 0.2095, 0.7779]]
Тестовые наборы: Kinopoisk (1500), RuReviews (15000), Georeview (5000, 5-звёздный рейтинг сведён к 3 классам: 1–2 звезды — Negative, 3 — Neutral, 4–5 — Positive). Оценка: argmax по логитам, max_length = 512.
| Модель | Kinopoisk Acc/F1 | RuReviews Acc/F1 | Georeview Acc/F1 | Avg F1 |
|---|---|---|---|---|
| sergeyzh/rubert-large-uncased-sentiment | 0.7013 / 0.6929 | 0.7851 / 0.7866 | 0.7858 / 0.7361 | 0.7385 |
| sergeyzh/rubert-tiny-sentiment | 0.6593 / 0.6519 | 0.7672 / 0.7690 | 0.7680 / 0.7130 | 0.7113 |
| seara/rubert-base-cased-russian-sentiment | 0.5653 / 0.5679 | 0.8163 / 0.8183 | 0.6566 / 0.6434 | 0.6765 |
| seara/rubert-tiny2-russian-sentiment | 0.4980 / 0.5032 | 0.7877 / 0.7899 | 0.6218 / 0.6122 | 0.6351 |
| blanchefort/rubert-base-cased-sentiment | 0.5253 / 0.5209 | 0.7615 / 0.7549 | 0.6716 / 0.6047 | 0.6268 |
| blanchefort/rubert-base-cased-sentiment-rusentiment | 0.5413 / 0.5470 | 0.6230 / 0.6327 | 0.6022 / 0.5760 | 0.5852 |
| cointegrated/rubert-tiny-sentiment-balanced | 0.4293 / 0.3977 | 0.7330 / 0.7344 | 0.6158 / 0.5857 | 0.5726 |