🚀 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 = ["Rarely think about how I feel.", "Make decisions quickly."]
model = SentenceTransformer('dwulff/mpnet-personality')
embeddings = model.encode(sentences)
print(embeddings)
✨ 主な機能
このモデルは、公開されている性格データで評価されています。BIG5やHEXACOなどの標準的な性格インベントリについて、このモデルは性格項目間の経験的相関をピアソンの相関係数r ~ .6で、尺度間の経験的相関をピアソンの相関係数r ~ .7で予測します。
学習に使用された多くの一般的な性格項目については、メモリ効果により性能が向上する場合があります(r ~ .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}
}
学習パラメータ
このモデルは以下のパラメータで学習されました。
DataLoader:
torch.utils.data.dataloader.DataLoader
長さ3125、パラメータは以下の通りです。
{'batch_size': 64, 'sampler': 'torch.utils.data.sampler.RandomSampler', 'batch_sampler': 'torch.utils.data.sampler.BatchSampler'}
Loss:
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()
)