Instructions to use imgreencucumber/rubert-ner-collection3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use imgreencucumber/rubert-ner-collection3 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="imgreencucumber/rubert-ner-collection3")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("imgreencucumber/rubert-ner-collection3") model = AutoModelForTokenClassification.from_pretrained("imgreencucumber/rubert-ner-collection3", device_map="auto") - Notebooks
- Google Colab
- Kaggle
rubert-ner-collection3
NER для русского языка: PER (люди), LOC (места), ORG (организации).
DeepPavlov/rubert-base-cased, дообученный на Collection3 (новости).
Кроме весов PyTorch в репозитории есть квантизованная ONNX-версия для CPU (onnx/, 170 МБ).
Код обучения, сравнение с CRF, Natasha и LLM, сервис на FastAPI: https://github.com/imgreencucumber/ru-ner
Качество
Тест Collection3: 1922 предложения, 4001 сущность. Метрики на уровне сущностей (seqeval):
сущность засчитывается, только если совпали обе границы и тип. В скобках 95% bootstrap-интервал.
| Precision | Recall | F1 | |
|---|---|---|---|
| Все сущности | 0.972 | 0.980 | 0.976 (0.970–0.981) |
| PER | 0.998 | ||
| LOC | 0.981 | ||
| ORG | 0.943 | ||
| Сущности, которых не было в train | 0.957 |
ONNX int8 по качеству не отличается от исходной модели: F1 0.977 (0.971–0.982), разница с PyTorch в пределах шума (парный bootstrap).
Цифры выше получены с декодированием, которое не допускает некорректных BIO-последовательностей
(Витерби с запретом O → I-X). Если выбирать метку каждого слова независимо (argmax), F1 0.974.
Стандартный pipeline из transformers тоже выбирает метки независимо, хотя части слов обрабатывает немного иначе.
Для сравнения на том же тесте: Natasha 0.935, CRF 0.901, GigaChat-3-Ultra с примерами в промпте 0.828.
Другой домен. На тесте WikiNEuRal-ru (Википедия) F1 0.799. Разметка WikiNEuRal автоматическая и содержит класс MISC, которого нет в Collection3, так что цифра занижена: часть «ошибок» приходится на MISC-сущности.
Использование
С transformers:
from transformers import pipeline
ner = pipeline("token-classification", model="imgreencucumber/rubert-ner-collection3", aggregation_strategy="simple")
ner("Глава Минфина Антон Силуанов встретился в Москве с представителями МВФ.")
ONNX-версия на CPU, без PyTorch, через пакет из репозитория проекта:
# pip install git+https://github.com/imgreencucumber/ru-ner
from huggingface_hub import snapshot_download
from ru_ner.inference import OnnxBertNER
path = snapshot_download("imgreencucumber/rubert-ner-collection3", allow_patterns=["onnx/*"])
ner = OnnxBertNER(f"{path}/onnx")
ner.extract("Глава Минфина Антон Силуанов встретился в Москве с представителями МВФ.")
# [{'text': 'Минфина', 'type': 'ORG', 'start': 6, 'end': 13}, ...]
Скорость
Одно предложение за вызов, медиана, Intel Core i3-8100 (4 ядра):
| Вариант | Задержка |
|---|---|
| ONNX int8, CPU | 15.9 мс |
| ONNX fp32, CPU | 25.6 мс |
| PyTorch, CPU | 35.9 мс |
| PyTorch, GTX 1060 | 12.8 мс |
Обучение
- Данные: Collection3, официальные сплиты train / validation / test (9301 / 2153 / 1922 предложения).
- 4 эпохи, learning rate 3e-5, batch 16, linear warmup 10%, weight decay 0.01,
max_length=128, seed 42. - Лучшая эпоха выбиралась по F1 на validation, тест в выборе не участвовал.
- GTX 1060 6GB, 11 минут.
- ONNX: экспорт через
torch.onnx(dynamo), оптимизация графа ONNX Runtime, динамическая int8-квантизация (per_channel=True,reduce_range=True).
Ограничения
- Обучена на новостях 2010-х. На текстах другого стиля (соцсети, документы, Википедия) качество ниже.
- Только три типа сущностей. Даты, суммы, должности и т. п. не размечаются.
- Модель повторяет соглашения разметки Collection3: например, кавычки иногда входят в название организации, а должность в сущность не входит никогда.
- Около 58% сущностей теста встречались в train, поэтому F1 на тесте частично отражает запоминание. F1 на новых сущностях (0.957) — более честная оценка обобщения.
Лицензия
У базовой модели DeepPavlov/rubert-base-cased лицензия не указана, у Collection3 указана other,
поэтому и здесь other. Перед коммерческим использованием проверьте условия базовой модели и датасета.
Код проекта распространяется по лицензии MIT.
- Downloads last month
- 8
Model tree for imgreencucumber/rubert-ner-collection3
Base model
DeepPavlov/rubert-base-casedDataset used to train imgreencucumber/rubert-ner-collection3
Evaluation results
- F1 (entity-level, seqeval) on Collection3test set self-reported0.976
- precision on Collection3test set self-reported0.972
- recall on Collection3test set self-reported0.980