库名称: sentence-transformers
流水线标签: 句子相似度
标签:
- sentence-transformers
- 特征提取
- 句子相似度
dwulff/mpnet-personality
这是一个基于sentence-transformers的模型,能够将人格相关的条目或文本映射到768维的密集向量空间中,可用于人格心理学中的多种任务,例如聚类人格条目和量表、将人格量表映射到人格构念等。
该模型通过对all-mpnet-base-v2进行微调生成,使用了20万对人格条目的无符号经验相关性数据。因此,该模型编码了人格相关文本的内容,而不受方向(例如否定)的影响。
详情请参见Wulff & Mata (2025)(参见补充材料)。
使用方法
确保已安装sentence-transformers:
# 最新版本
pip install -U sentence-transformers
# 最新开发版本
pip install git+https://github.com/UKPLab/sentence-transformers.git
可以通过以下方式提取嵌入向量:
from sentence_transformers import SentenceTransformer
sentences = ["很少思考自己的感受。", "快速做出决定。"]
model = SentenceTransformer('dwulff/mpnet-personality')
embeddings = model.encode(sentences)
print(embeddings)
评估结果
该模型已在公开的人格数据上进行了评估。对于标准人格量表(如BIG5或HEXACO量表),该模型预测人格条目之间的经验相关性为皮尔逊r ~ 0.6,量表之间的经验相关性为皮尔逊r ~ 0.7。
对于训练中常见的许多人格条目,由于记忆效应,性能可能更高(r ~ 0.9)。但对于更专业的人格评估和非人格条目的文本,以及人格因素,由于相关性方差减小,性能会较差。
详情请参见Wulff & Mata (2025)(参见补充材料)。
引用
@article{wulff2024taxonomic,
author = {Wulff, Dirk U. and Mata, Rui},
title = {Semantic embeddings reveal and address taxonomic incommensurability in psychological measurement},
journal = {Nature Human Behavior},
doi = {https://doi.org/10.1038/s41562-024-02089-y}
}
训练
模型训练参数如下:
数据加载器:
长度为3125的torch.utils.data.dataloader.DataLoader
,参数为:
{'batch_size': 64, 'sampler': 'torch.utils.data.sampler.RandomSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
损失函数:
sentence_transformers.losses.CosineSimilarityLoss.CosineSimilarityLoss
fit()方法的参数:
{
"epochs": 3,
"evaluation_steps": 0,
"evaluator": "NoneType",
"max_grad_norm": 1,
"optimizer_class": "<class 'torch.optim.adamw.AdamW'>",
"optimizer_params": {
"lr": 2e-05
},
"scheduler": "WarmupLinear",
"steps_per_epoch": null,
"warmup_steps": 625,
"weight_decay": 0.01
}
完整模型架构
SentenceTransformer(
(0): Transformer({'max_seq_length': 384, '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): Normalize()
)