Downloads · 30 days
109
2% of all-time downloads
Aleksandruz/skillmatch-mpnet-curriculum-retriever
skillmatch-mpnet-curriculum-retriever is a text retrieval model from Aleksandruz. Use it for the text retrieval task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as mit.
This model is a fine-tuned version of sentence-transformers/all-mpnet-base-v2 for matching job description sentences to skill definitions.
Downloads · 30 days
109
2% of all-time downloads
All-time downloads
5.6K
Public
Parameters
109M
438 MB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors438 MB · 100%
From the Hugging Face model README
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)
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)