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
| language: | |
| - ru | |
| - en | |
| license: mit | |
| library_name: transformers | |
| pipeline_tag: text-classification | |
| tags: | |
| - text-classification | |
| - bert | |
| - tiny-bert | |
| - rubert-tiny2 | |
| - binary-classification | |
| - jobs | |
| - developer-classification | |
| base_model: cointegrated/rubert-tiny2 | |
| metrics: | |
| - precision | |
| - recall | |
| - roc_auc | |
| model-index: | |
| - name: dev_roles_1 | |
| results: | |
| - task: | |
| type: text-classification | |
| name: Developer vs Non-Developer Binary Classification | |
| metrics: | |
| - type: roc_auc | |
| value: 0.9964 | |
| - type: precision | |
| value: 0.9683 | |
| - type: recall | |
| value: 0.9721 | |
| # dev_roles_1 — Developer vs Non-Developer Classifier | |
| Бинарный классификатор вакансий: отличает **разработчиков** (`dev`) от **не‑разработчиков** (`non_dev`). | |
| Построен на базе [`cointegrated/rubert-tiny2`](https://huggingface.co/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** | |
| ## Использование | |
| ```python | |
| 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. | |