Text Classification
Transformers
Safetensors
Russian
English
bert
tiny-bert
rubert-tiny2
binary-classification
jobs
developer-classification
Eval Results (legacy)
text-embeddings-inference
Instructions to use AndreiTolmachev/dev_roles_1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use AndreiTolmachev/dev_roles_1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-classification", model="AndreiTolmachev/dev_roles_1")# Load model directly from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("AndreiTolmachev/dev_roles_1") model = AutoModelForSequenceClassification.from_pretrained("AndreiTolmachev/dev_roles_1") - Notebooks
- Google Colab
- Kaggle
dev_roles_1 — Developer vs Non-Developer Classifier
Бинарный классификатор вакансий: отличает разработчиков (dev) от не‑разработчиков (non_dev).
Построен на базе cointegrated/rubert-tiny2 — компактной BERT‑модели для русского/английского языка.
Описание задачи
Модель предсказывает, относится ли вакансия к роли разработчика. Положительный класс (dev) определяется как:
role_category ∈ DEV_CLASSES AND team_lead == 0
DEV_CLASSES:
- Backend
- Desktop / Systems
- Embedded
- Frontend
- Fullstack
- ML / AI / Data Scientist
- Mobile
Тимлиды и менеджеры в положительный класс не входят.
Метки
| id | label |
|---|---|
| 0 | non_dev |
| 1 | dev |
Метрики (валидация)
| Метрика | Значение |
|---|---|
| ROC AUC | 0.9964 |
| Precision @ threshold | 0.9683 |
| Recall @ threshold | 0.9721 |
| Best threshold | 0.6978 |
| Target recall | 0.97 |
Лучшая эпоха: 5. pos_weight при обучении: 3.87.
Параметры инференса
max_length: 256 токенов- Текст вакансии формируется как
title + description(description обрезается до 1200 символов) - Решающий порог по вероятности класса
dev: 0.6978
Использование
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
MODEL_ID = "AndreiTolmachev/dev_roles_1"
THRESHOLD = 0.6978
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_ID).eval()
def is_developer(title: str, description: str = "") -> bool:
text = (title + " " + description[:1200]).strip()
enc = tokenizer(text, truncation=True, max_length=256, return_tensors="pt")
with torch.no_grad():
logits = model(**enc).logits
prob_dev = torch.softmax(logits, dim=-1)[0, 1].item()
return prob_dev >= THRESHOLD
print(is_developer("Senior Python Backend Developer",
"Разработка микросервисов на FastAPI, PostgreSQL, Kafka..."))
Архитектура
- Модель:
BertForSequenceClassification - Слоёв: 3, hidden size: 312, attention heads: 12
- Vocab size: 83 828
- Параметры: ~29M
max_position_embeddings: 2048
Обучение
- База:
cointegrated/rubert-tiny2 - Датасет: внутренний датасет вакансий (
titles_descriptions_urls_14_05_classified.csv), размечен LLM‑пайплайном - Лосс: cross-entropy с
pos_weight ≈ 3.87для баланса классов - Подбор порога по target recall = 0.97
Ограничения
- Обучен преимущественно на русскоязычных вакансиях IT‑домена; качество на других доменах/языках не гарантируется.
- Тимлид/менеджерские роли относятся к
non_devпо дизайну — для классических задач "any developer incl. lead" модель не подходит. - Описание вакансии используется в усечённом виде (1200 символов) — очень длинные требования могут быть обрезаны.
Лицензия
MIT.
- Downloads last month
- -
Model tree for AndreiTolmachev/dev_roles_1
Base model
cointegrated/rubert-tiny2Evaluation results
- roc_aucself-reported0.996
- precisionself-reported0.968
- recallself-reported0.972