SkillMatch MPNet for Job–Skill Matching

This model is a fine-tuned version of sentence-transformers/all-mpnet-base-v2 for matching job description sentences to skill definitions.

It was originally introduced and detailed in the paper: [From Retrieval to Ranking: A Two-Stage Neural Framework for Automated Skill Extraction] (https://ceur-ws.org/Vol-4046/RecSysHR2025-paper_5.pdf)

Additionally, this model was evaluated as part of the work-domain AI benchmark in the paper: [WorkRB: A Community-Driven Evaluation Framework for AI in the Work Domain] (https://huggingface.co/papers/2604.13055)

Intended use

  • Encode job description sentences into embeddings
  • Encode skill definitions into embeddings
  • Compute cosine similarity to retrieve the most relevant skills for each sentence.

Associated Repositories

Usage (basic Transformers example)

from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F

model_id = "Aleksandruz/skillmatch-mpnet-curriculum-retriever"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModel.from_pretrained(model_id)

def encode(texts):
    enc = tokenizer(
        texts,
        padding=True,
        truncation=True,
        return_tensors="pt"
    )
    with torch.no_grad():
        out = model(**enc)
    # mean pooling
    attn = enc["attention_mask"].unsqueeze(-1)
    emb = (out.last_hidden_state * attn).sum(1) / attn.sum(1)
    return F.normalize(emb, p=2, dim=1)

jobs = ["Looking for a data scientist with NLP experience"]
skills = ["Machine learning", "Natural language processing", "Java programming"]

job_emb = encode(jobs)
skill_emb = encode(skills)

scores = job_emb @ skill_emb.T
print(scores)
Downloads last month
261
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Aleksandruz/skillmatch-mpnet-curriculum-retriever

Finetuned
(397)
this model

Paper for Aleksandruz/skillmatch-mpnet-curriculum-retriever