/ Модель

Характеристики

Контекст
514 токенов
Параметры
305 млн
Лицензия
MIT
Архитектура
xlm-roberta · dense
Базовая модель
multilingual-e5-base
Библиотека
sentence-transformers
Опубликована
11 июл 2026

job-title-normalizer-e5-base

ЭмбеддингиТекст → embedding5 профессий

Дообученный многоязычный энкодер сопоставляет названия должностей с каноническими профессиями ESCO и O*NET, в том числе при поиске между языками.

125скачиваний за 30 дней0лайковвеса обновлены12 июл 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Misbahuddin/job-title-normalizer-e5-base — дообученный на задаче сопоставления предложений текстовый энкодер на базе intfloat/multilingual-e5-base от разработчика Misbahuddin. Модель нормализует неоднозначные и многоязычные названия должностей: кодирует входное название как запрос, а затем ищет ближайшую каноническую профессию в фиксированном корпусе из 4 055 позиций таксономий ESCO и O*NET.

Модель построена на XLM-RoBERTa, содержит 305,2 млн параметров и формирует эмбеддинги размерности 768; обучение с MatryoshkaLoss также рассчитано на усечённые размерности 512, 256, 128 и 64. Контекст — 514 токенов, но модель настроена на короткие названия должностей длиной до 64 токенов. Проверены английский, французский и немецкий языки, включая поиск соответствий с французского и немецкого на английские названия. Для правильной работы нужны префиксы «query:» для входных названий и «passage:» для канонических меток.

Модель подходит для нормализации должностей в резюме, вакансиях и HR-системах, а также для семантического и межъязыкового поиска профессий. По данным README, на тесте с профессиями, не встречавшимися при обучении, она превосходит базовую multilingual-e5-base и BM25 по метрикам retrieval. Лицензия — MIT. Названия ролей сами по себе не позволяют делать выводы о кандидатах: модель не предназначена для решений о найме, отборе или оплате труда.

Сценарии применения

  • нормализация названий должностей в резюме
  • сопоставление вакансий с идентификаторами профессий ESCO и O*NET
  • поиск профессий по названиям из ATS, HRIS или CRM
  • поиск соответствий для французских названий должностей в английском каталоге
  • поиск соответствий для немецких названий должностей в английском каталоге
  • ранжирование канонических профессий по сходству с исходным названием

Ограничения

Проверены только английский, французский и немецкий языки; модель настроена на короткие названия до 64 токенов, поэтому длинные описания находятся вне целевого сценария. Покрытие ограничено таксономиями ESCO и O*NET, в которых встречаются близкие или дублирующие профессии; модель не предназначена для решений о найме, отборе или компенсации.

Для каких профессий подходит5

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

job-title-normalizer-e5-base

A sentence encoder fine-tuned to normalize messy, multilingual job titles to a canonical occupation taxonomy (ESCO + O*NET), framed and evaluated as retrieval: embed a noisy or foreign-language title (the query) and retrieve the closest canonical occupation label (the passage) from a fixed corpus of 4,055 occupations.

Live demo: https://job-title-normalizer-525186107937.us-central1.run.app (Cloud Run; may cold-start ~1 min) · Lighter variant: job-title-normalizer-e5-small

Why retrieval, not classification? Occupation taxonomies have thousands of classes and the label set evolves constantly. A nearest-neighbour retriever over embeddings generalizes to unseen labels and lets you swap the corpus without retraining a softmax head.

Results

Held-out test set of 15,248 real ESCO/O*NET titles against a 4,055-occupation corpus. The split is by occupation (zero overlap between train/val/test occupations, asserted at build time), so every test occupation is unseen during training.

SliceMethodRecall@1Recall@5Recall@10MRR
OverallBM25 (lexical)0.0950.1630.1830.124
Overallzero-shot e5-base0.2370.3780.4370.298
Overallthis model0.3810.5720.6450.463
FR→ENthis model0.5480.7740.8470.643
DE→ENthis model0.5360.7920.8520.642

Cross-lingual context: BM25 scores MRR 0.034 on the FR/DE→EN slice (a French query shares almost no tokens with an English canonical label); this model reaches 0.643 — lexical search structurally cannot do this task, and fine-tuning adds ~35% over the zero-shot base.

Training

  • Base: intfloat/multilingual-e5-base (mean pooling, query:/passage: prefixes, 768-dim).
  • Objective: in-batch-negatives InfoNCE (MultipleNegativesRankingLoss, scale 20 ≈ temperature 0.05), wrapped in MatryoshkaLoss (dims 768/512/256/128/64) so truncated embeddings stay usable.
  • Data: 160,240 positive pairs (synonyms, alternate titles, and cross-lingual label pairs of the same occupation) built from ESCO (EN/FR/DE) and O*NET alternate titles; ≤50 pairs per occupation.
  • Setup: 2 epochs, batch 64, lr 2e-5, warmup 10%, max_seq_len 64, fp16, NoDuplicatesDataLoader to reduce in-batch false negatives. Trained on an RTX 4060 Laptop (8 GB) in ~46 min.
  • Prefixes are baked into the training text exactly as applied at inference, and the preset is persisted (tn_preset.json) so downstream tooling recovers the correct behavior.

How to use

The e5 family needs asymmetric prefixes: encode input titles as query: … and canonical labels as passage: …. Forgetting them silently degrades accuracy.

from sentence_transformers import SentenceTransformer
from sentence_transformers.util import cos_sim

model = SentenceTransformer("Misbahuddin/job-title-normalizer-e5-base")

canonicals = [
    "passage: software developer",
    "passage: data scientist",
    "passage: nurse responsible for general care",
]
query = "query: Ingénieur logiciel"          # French → English canonical

q = model.encode(query, normalize_embeddings=True)
c = model.encode(canonicals, normalize_embeddings=True)
scores = cos_sim(q, c)[0]
print(canonicals[int(scores.argmax())], float(scores.max()))
# passage: software developer ~0.79

Vectors are L2-normalized, so cosine == dot product — index canonical embeddings with FAISS IndexFlatIP for production search. Matryoshka: you may truncate embeddings to 256/128/64 dims (then re-normalize) for cheaper indexes without re-encoding.

Calibrate an abstention threshold. Out-of-taxonomy queries still return a nearest neighbour — but at tellingly low scores (e.g. "RevOps", which has no ESCO/O*NET occupation, scores ~0.31 vs ~0.8 for true matches). Reject below a threshold tuned on your data.

Intended use & limitations

  • In scope: normalizing titles from resumes, postings, CRM/ATS/HRIS records to occupation IDs; semantic occupation search; FR/DE→EN cross-lingual lookup.
  • Not a hiring/screening/compensation decision system. Similarity of role names says nothing about people. Keep a human in the loop for consequential uses.
  • Coverage is bounded by ESCO + O*NET (with a European resp. U.S. framing); en/fr/de only is verified. ESCO and O*NET overlap conceptually, so near-duplicate occupations exist across the two namespaces.
  • Tuned for short titles (max 64 tokens); long descriptions are out of distribution.

Acknowledgements

ONET® is a trademark of USDOL/ETA. This model was produced using ONET data but is not endorsed by USDOL/ETA. ESCO is a service of the European Commission; this model is not endorsed by the Commission.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · sentence-transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
XLMRobertaModel
Ревизия весов
da3fca7

0 моделей