Jobbert V2
這是一個專門針對職位名稱匹配和相似度訓練的sentence-transformers模型,基於all-mpnet-base-v2微調,訓練數據包含大量職位名稱及其相關技能/要求。
下載量 8,001
發布時間 : 12/21/2024
模型概述
該模型將職位名稱和描述映射到1024維稠密向量空間,可用於語義職位名稱匹配、職位相似度搜索等HR/招聘相關任務。
模型特點
職位名稱語義匹配
專門針對職位名稱和技能描述進行優化,能夠準確計算不同職位名稱之間的語義相似度
大規模訓練數據
基於550萬+職位名稱對進行訓練,覆蓋廣泛的職業領域
高效向量表示
將文本映射到1024維稠密向量空間,便於相似度計算和檢索
模型能力
職位名稱相似度計算
職位技能匹配
語義搜索
特徵提取
使用案例
人力資源與招聘
職位名稱標準化
將不同公司使用的不同職位名稱映射到標準化職位分類
提高職位數據的一致性和可比性
職位推薦系統
基於職位名稱和描述的語義相似度為求職者推薦相關職位
提升職位匹配準確度
人才流動分析
分析不同職位之間的相似度,為員工職業發展路徑規劃提供依據
優化人才管理策略
🚀 基於 sentence-transformers/all-mpnet-base-v2 的句子轉換器
本項目是一個專門為職位名稱匹配和相似度計算而訓練的 sentence-transformers 模型。它基於 sentence-transformers/all-mpnet-base-v2 在包含大量職位名稱及其相關技能/要求的數據集上進行微調。該模型將職位名稱和描述映射到一個 1024 維的密集向量空間,可用於語義職位名稱匹配、職位相似度搜索以及相關的人力資源/招聘任務。
🚀 快速開始
直接使用(Sentence Transformers)
首先安裝所需的包:
pip install -U sentence-transformers
然後可以使用以下代碼加載和使用模型:
import torch
import numpy as np
from tqdm.auto import tqdm
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import batch_to_device, cos_sim
# 加載模型
model = SentenceTransformer("TechWolf/JobBERT-v2")
def encode_batch(jobbert_model, texts):
features = jobbert_model.tokenize(texts)
features = batch_to_device(features, jobbert_model.device)
features["text_keys"] = ["anchor"]
with torch.no_grad():
out_features = jobbert_model.forward(features)
return out_features["sentence_embedding"].cpu().numpy()
def encode(jobbert_model, texts, batch_size: int = 8):
# 按文本長度排序並記錄原始索引
sorted_indices = np.argsort([len(text) for text in texts])
sorted_texts = [texts[i] for i in sorted_indices]
embeddings = []
# 分批編碼
for i in tqdm(range(0, len(sorted_texts), batch_size)):
batch = sorted_texts[i:i+batch_size]
embeddings.append(encode_batch(jobbert_model, batch))
# 連接嵌入並按原始索引重新排序
sorted_embeddings = np.concatenate(embeddings)
original_order = np.argsort(sorted_indices)
return sorted_embeddings[original_order]
# 示例用法
job_titles = [
'Software Engineer',
'Senior Software Developer',
'Product Manager',
'Data Scientist'
]
# 獲取嵌入
embeddings = encode(model, job_titles)
# 計算餘弦相似度矩陣
similarities = cos_sim(embeddings, embeddings)
print(similarities)
輸出將是一個相似度矩陣,其中每個值表示兩個職位名稱之間的餘弦相似度:
tensor([[1.0000, 0.8723, 0.4821, 0.5447],
[0.8723, 1.0000, 0.4822, 0.5019],
[0.4821, 0.4822, 1.0000, 0.4328],
[0.5447, 0.5019, 0.4328, 1.0000]])
在此示例中:
- 對角線上的值為 1.0000(自身的完美相似度)
- 'Software Engineer' 和 'Senior Software Developer' 具有較高的相似度(0.8723)
- 'Product Manager' 和 'Data Scientist' 與其他角色的相似度較低
- 所有值都在 0 到 1 之間,值越高表示相似度越高
示例用例
- 職位名稱匹配:查找相似的職位名稱以進行標準化或匹配
- 職位搜索:根據職位名稱相似度為求職者匹配相關職位
- 人力資源分析:分析跨組織的職位名稱模式和相似度
- 人才管理:識別相似的角色以進行職業發展和繼任規劃
✨ 主要特性
- 專門為職位名稱匹配和相似度計算而訓練
- 將職位名稱和描述映射到 1024 維的密集向量空間
- 可用於語義職位名稱匹配、職位相似度搜索以及相關的人力資源/招聘任務
📦 安裝指南
pip install -U sentence-transformers
💻 使用示例
基礎用法
import torch
import numpy as np
from tqdm.auto import tqdm
from sentence_transformers import SentenceTransformer
from sentence_transformers.util import batch_to_device, cos_sim
# 加載模型
model = SentenceTransformer("TechWolf/JobBERT-v2")
def encode_batch(jobbert_model, texts):
features = jobbert_model.tokenize(texts)
features = batch_to_device(features, jobbert_model.device)
features["text_keys"] = ["anchor"]
with torch.no_grad():
out_features = jobbert_model.forward(features)
return out_features["sentence_embedding"].cpu().numpy()
def encode(jobbert_model, texts, batch_size: int = 8):
# 按文本長度排序並記錄原始索引
sorted_indices = np.argsort([len(text) for text in texts])
sorted_texts = [texts[i] for i in sorted_indices]
embeddings = []
# 分批編碼
for i in tqdm(range(0, len(sorted_texts), batch_size)):
batch = sorted_texts[i:i+batch_size]
embeddings.append(encode_batch(jobbert_model, batch))
# 連接嵌入並按原始索引重新排序
sorted_embeddings = np.concatenate(embeddings)
original_order = np.argsort(sorted_indices)
return sorted_embeddings[original_order]
# 示例用法
job_titles = [
'Software Engineer',
'Senior Software Developer',
'Product Manager',
'Data Scientist'
]
# 獲取嵌入
embeddings = encode(model, job_titles)
# 計算餘弦相似度矩陣
similarities = cos_sim(embeddings, embeddings)
print(similarities)
📚 詳細文檔
模型詳情
模型描述
屬性 | 詳情 |
---|---|
模型類型 | 句子轉換器 |
基礎模型 | sentence-transformers/all-mpnet-base-v2 |
最大序列長度 | 64 個標記 |
輸出維度 | 1024 個標記 |
相似度函數 | 餘弦相似度 |
訓練數據集 | 550 萬個以上的職位名稱對 |
主要用例 | 職位名稱匹配和相似度計算 |
性能 | 在 TalentCLEF 基準測試中達到 0.6457 的平均準確率均值(MAP) |
模型來源
- 文檔:Sentence Transformers 文檔
- 倉庫:GitHub 上的 Sentence Transformers
- Hugging Face:Hugging Face 上的 Sentence Transformers
完整模型架構
SentenceTransformer(
(0): Transformer({'max_seq_length': 64, 'do_lower_case': False}) with Transformer model: MPNetModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
(2): Asym(
(anchor-0): Dense({'in_features': 768, 'out_features': 1024, 'bias': True, 'activation_function': 'torch.nn.modules.activation.Tanh'})
(positive-0): Dense({'in_features': 768, 'out_features': 1024, 'bias': True, 'activation_function': 'torch.nn.modules.activation.Tanh'})
)
)
訓練詳情
訓練數據集
- 生成器
- 數據集:550 萬個以上的職位名稱對
- 格式:錨定職位名稱與相關技能/要求配對
- 訓練目標:學習職位名稱與其相關技能之間的語義相似度
- 損失:使用餘弦相似度的 CachedMultipleNegativesRankingLoss
訓練超參數
- 批量大小:2048
- 學習率:5e-05
- 訓練輪數:1
- FP16 訓練:啟用
- 優化器:AdamW
框架版本
- Python:3.9.19
- Sentence Transformers:3.1.0
- Transformers:4.44.2
- PyTorch:2.4.1+cu118
- Accelerate:0.34.2
- Datasets:3.0.0
- Tokenizers:0.19.1
🔧 技術細節
本模型基於 Sentence Transformers 框架,使用 MPNet 作為基礎模型。通過在大規模的職位名稱數據集上進行微調,學習職位名稱和相關技能之間的語義相似度。具體來說,使用了 CachedMultipleNegativesRankingLoss 損失函數和餘弦相似度來訓練模型,以確保模型能夠準確地捕捉職位名稱之間的語義關係。
📄 許可證
文檔中未提及相關許可證信息。
📖 引用
BibTeX
Sentence Transformers
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}
CachedMultipleNegativesRankingLoss
@misc{gao2021scaling,
title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
year={2021},
eprint={2101.06983},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Jina Embeddings V3
Jina Embeddings V3 是一個多語言句子嵌入模型,支持超過100種語言,專注於句子相似度和特徵提取任務。
文本嵌入
Transformers 支持多種語言

J
jinaai
3.7M
911
Ms Marco MiniLM L6 V2
Apache-2.0
基於MS Marco段落排序任務訓練的交叉編碼器模型,用於信息檢索中的查詢-段落相關性評分
文本嵌入 英語
M
cross-encoder
2.5M
86
Opensearch Neural Sparse Encoding Doc V2 Distill
Apache-2.0
基於蒸餾技術的稀疏檢索模型,專為OpenSearch優化,支持免推理文檔編碼,在搜索相關性和效率上優於V1版本
文本嵌入
Transformers 英語

O
opensearch-project
1.8M
7
Sapbert From PubMedBERT Fulltext
Apache-2.0
基於PubMedBERT的生物醫學實體表徵模型,通過自對齊預訓練優化語義關係捕捉
文本嵌入 英語
S
cambridgeltl
1.7M
49
Gte Large
MIT
GTE-Large 是一個強大的句子轉換器模型,專注於句子相似度和文本嵌入任務,在多個基準測試中表現出色。
文本嵌入 英語
G
thenlper
1.5M
278
Gte Base En V1.5
Apache-2.0
GTE-base-en-v1.5 是一個英文句子轉換器模型,專注於句子相似度任務,在多個文本嵌入基準測試中表現優異。
文本嵌入
Transformers 支持多種語言

G
Alibaba-NLP
1.5M
63
Gte Multilingual Base
Apache-2.0
GTE Multilingual Base 是一個多語言的句子嵌入模型,支持超過50種語言,適用於句子相似度計算等任務。
文本嵌入
Transformers 支持多種語言

G
Alibaba-NLP
1.2M
246
Polybert
polyBERT是一個化學語言模型,旨在實現完全由機器驅動的超快聚合物信息學。它將PSMILES字符串映射為600維密集指紋,以數值形式表示聚合物化學結構。
文本嵌入
Transformers

P
kuelumbus
1.0M
5
Bert Base Turkish Cased Mean Nli Stsb Tr
Apache-2.0
基於土耳其語BERT的句子嵌入模型,專為語義相似度任務優化
文本嵌入
Transformers 其他

B
emrecan
1.0M
40
GIST Small Embedding V0
MIT
基於BAAI/bge-small-en-v1.5模型微調的文本嵌入模型,通過MEDI數據集與MTEB分類任務數據集訓練,優化了檢索任務的查詢編碼能力。
文本嵌入
Safetensors 英語
G
avsolatorio
945.68k
29
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98