Views
No views yet
| Slice | Method | Recall@1 | Recall@5 | Recall@10 | MRR |
|---|---|---|---|---|---|
| Overall | BM25 (lexical) | 0.095 | 0.163 | 0.183 | 0.124 |
| Overall | zero-shot e5-small | 0.226 | 0.371 | 0.437 | 0.286 |
| Overall | this model | 0.367 | 0.539 | 0.601 | 0.441 |
| FR→EN | this model | 0.525 | 0.737 | 0.799 | 0.618 |
| DE→EN | this model | 0.523 | 0.745 | 0.815 | 0.619 |
intfloat/multilingual-e5-small (mean pooling, query:/passage: prefixes, 384-dim).MultipleNegativesRankingLoss, scale 20), wrapped in MatryoshkaLoss (dims 384/256/128/64).NoDuplicatesDataLoader. Trained on an RTX 4060 Laptop (8 GB) in ~8 min.query: …, canonical labels as
passage: …. Forgetting them silently degrades accuracy.1from sentence_transformers import SentenceTransformer
2from sentence_transformers.util import cos_sim
3
4model = SentenceTransformer("Misbahuddin/job-title-normalizer-e5-small")
5
6canonicals = [
7 "passage: software developer",
8 "passage: data scientist",
9 "passage: nurse responsible for general care",
10]
11query = "query: Krankenpfleger" # German → English canonical
12
13q = model.encode(query, normalize_embeddings=True)
14c = model.encode(canonicals, normalize_embeddings=True)
15scores = cos_sim(q, c)[0]
16print(canonicals[int(scores.argmax())], float(scores.max()))IndexFlatIP for production.
Matryoshka truncation to 256/128/64 dims works after re-normalizing. Calibrate an
abstention threshold: out-of-taxonomy queries return low-score nearest neighbours rather
than failing.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.