モデル概要
モデル特徴
モデル能力
使用事例
🚀 パーソナリティ予測モデル
このモデルは、入力テキストに基づいて、個人の五大性格特性(Big Five personality traits)を予測することができます。転移学習を利用し、BERT BASE UNCASEDモデルを微調整することで、限られたラベル付きデータでも高精度な予測が可能です。
🚀 クイックスタート
モデルの使用方法
Hosted inference APIを通じてモデルを使用するには、以下のコードスニペットを参照してください。
from transformers import BertTokenizer, BertForSequenceClassification
def personality_detection(text):
tokenizer = BertTokenizer.from_pretrained("Minej/bert-base-personality")
model = BertForSequenceClassification.from_pretrained("Minej/bert-base-personality")
inputs = tokenizer(text, truncation=True, padding=True, return_tensors="pt")
outputs = model(**inputs)
predictions = outputs.logits.squeeze().detach().numpy()
label_names = ['Extroversion', 'Neuroticism', 'Agreeableness', 'Conscientiousness', 'Openness']
result = {label_names[i]: predictions[i] for i in range(len(label_names))}
return result
結果形式
personality_detection
関数は、入力テキストに基づいて予測された性格特性を含む辞書を返します。
辞書には、以下の性格特性とそれに対応する予測値が含まれます。
- Extroversion: 予測された外向性を表す0から1の値。
- Neuroticism: 予測された神経質さを表す0から1の値。
- Agreeableness: 予測された協調性を表す0から1の値。
- Conscientiousness: 予測された誠実性を表す0から1の値。
- Openness: 予測された開放性を表す0から1の値。
text_input = "I am feeling excited about the upcoming event."
personality_prediction = personality_detection(text_input)
print(personality_prediction)
出力例:
{
"Extroversion": 0.535,
"Neuroticism": 0.576,
"Agreeableness": 0.399,
"Conscientiousness": 0.253,
"Openness": 0.563
}
注意: 出力例の値は単なるプレースホルダーであり、実際の予測値を反映していない場合があります。
サンプルコードと結果形式は、特定のユースケースや目的の出力形式に合わせて変更することができます。
✨ 主な機能
- 転移学習の活用: 限られたラベル付きデータでも高精度な予測が可能です。
- 五大性格特性の予測: 入力テキストに基づいて、外向性、神経質さ、協調性、誠実性、開放性の五大性格特性を予測します。
📦 インストール
モデルファイルをダウンロードして使用する場合は、以下のコードスニペットを参照してください。
from transformers import BertForSequenceClassification, BertTokenizer
import torch
# モデルの初期化
model = BertForSequenceClassification.from_pretrained(".", num_labels=5)
tokenizer = BertTokenizer.from_pretrained('.', do_lower_case=True)
model.config.label2id = {
"Extroversion": 0,
"Neuroticism": 1,
"Agreeableness": 2,
"Conscientiousness": 3,
"Openness": 4,
}
model.config.id2label = {
"0": "Extroversion",
"1": "Neuroticism",
"2": "Agreeableness",
"3": "Conscientiousness",
"4": "Openness",
}
def personality_detection(model_input: str) -> dict:
'''
与えられた入力テキストに対して性格予測を行います。
引数:
model_input (str): テキストコンバーゼーション
戻り値:
dict: キーが話者ラベルで、値がその性格予測値の辞書
'''
if len(model_input) == 0:
ret = {
"Extroversion": float(0),
"Neuroticism": float(0),
"Agreeableness": float(0),
"Conscientiousness": float(0),
"Openness": float(0),
}
return ret
else:
dict_custom = {}
preprocess_part1 = model_input[:len(model_input)]
dict1 = tokenizer.encode_plus(preprocess_part1, max_length=1024, padding=True, truncation=True)
dict_custom['input_ids'] = [dict1['input_ids'], dict1['input_ids']]
dict_custom['token_type_ids'] = [dict1['token_type_ids'], dict1['token_type_ids']]
dict_custom['attention_mask'] = [dict1['attention_mask'], dict1['attention_mask']]
outs = model(torch.tensor(dict_custom['input_ids']), token_type_ids=None, attention_mask=torch.tensor(dict_custom['attention_mask']))
b_logit_pred = outs[0]
pred_label = torch.sigmoid(b_logit_pred)
ret = {
"Extroversion": float(pred_label[0][0]),
"Neuroticism": float(pred_label[0][1]),
"Agreeableness": float(pred_label[0][2]),
"Conscientiousness": float(pred_label[0][3]),
"Openness": float(pred_label[0][4]),
}
return ret
personality_prediction = personality_detection(text_input)
必要な依存関係(transformers
とtorch
)がインストールされていることを確認してください。このコードスニペットは、モデル、トークナイザー、および設定を初期化します。その後、personality_detection
関数を定義し、テキストコンバーゼーションを入力として受け取り、各話者の性格予測値を含む辞書を返します。
入力テキストを指定してpersonality_detection
関数を呼び出すことで、性格予測を取得できます。personality_prediction
変数には、結果の辞書が格納されます。
必要なモデルファイル(config.json
、pytorch_model.bin
、special_tokens_map.json
、tokenizer_config.json
、vocab.txt
)をダウンロードし、カレントディレクトリ(.
で示される)に配置することを前提としています。必要に応じて、パスとファイル名を調整してください。
📚 ドキュメント
モデルの説明
機械学習において、ラベル付きデータが限られている場合、高精度なモデルを訓練することは困難です。転移学習は、類似したタスクやドメインから事前に用意されたラベル付きデータを活用することで、この問題を解決します。あるタスクから学んだ知識を別のタスクに転送することで、データ不足を克服し、より効果的なモデルを訓練することができます。
このプロジェクトでは、BERT BASE UNCASEDモデルを用いた転移学習を行い、五大性格特性を予測しました。モデルは、性格特性に関するキュレーションされたデータセットで微調整され、入力テキストと性格特性の間のパターンを学習しました。転移学習を適用することで、性格特性予測の精度を向上させました。
転移学習とBERT BASE UNCASEDの微調整を活用することで、入力テキストに基づいて個人の五大性格特性を高精度に予測することができます。このアプローチは、性格予測におけるラベル付きデータの制限という課題に対処し、個人の性格に関する洞察を提供します。
このプロジェクトは、機械学習における転移学習の威力を示し、五大性格特性の予測におけるBERT BASE UNCASEDの有効性を強調しています。
属性 | 详情 |
---|---|
モデルタイプ | BERT BASE UNCASED |
学習データ | 性格特性に関するキュレーションされたデータセット |
言語 | 英語 |
ライセンス | MIT |
微調整元のモデル | https://huggingface.co/bert-base-uncased |
使用方法
直接使用
性格予測モデルは、入力テキストに基づいて自分自身の性格特性に関する洞察を得たい個人によって直接使用することができます。ユーザーはテキストを入力し、五大性格特性の予測を受け取ることができます。
下流の使用
このモデルは、下流の使用や特定のタスクのための微調整を目的としていません。スタンドアロンの性格予測モデルとして設計されています。
範囲外の使用
このモデルは、性格予測以外の用途には適していません。雇用、教育、または法的問題などの分野で、個人に関する重要な決定や判断を行うために使用してはなりません。
バイアス、リスク、および制限
性格予測モデルは、他の機械学習モデルと同様に、いくつかの制限と潜在的なバイアスがあり、考慮に入れる必要があります。
⚠️ 重要提示
- 限定的なコンテキスト: モデルは入力テキストのみに基づいて予測を行い、個人の性格の完全なコンテキストを捉えられない場合があります。性格特性は、テキスト表現以外の様々な要因に影響されることを考慮することが重要です。
- 汎化性: モデルは特定のデータセットから学習したパターンに基づいて性格特性を予測します。訓練データに十分に表現されていない異なる人口統計学的または文化的背景の個人に適用する場合、その性能は異なる可能性があります。
- 倫理的な考慮事項: 性格予測モデルは、性格特性が個人の価値や能力を決定するものではないことを理解し、責任を持って使用する必要があります。予測された性格特性に基づいて不公平な判断や差別を行うことを避けることが重要です。
- プライバシーの懸念: モデルはユーザーが提供した入力テキストに依存しており、それには機密または個人情報が含まれる場合があります。ユーザーは個人情報を共有する際に注意を払い、データのセキュリティを確保する必要があります。
- 誤検出/見逃し: モデルの予測は、個人の実際の性格特性と完全に一致しない場合があります。モデルが誤検出(存在しない特性を予測する)または見逃し(存在する特性を見落とす)を生じる可能性があります。
使用上の推奨事項
性格予測モデルに関連するリスクと制限を軽減するために、以下の推奨事項が提案されています。
💡 使用アドバイス
- 認識と教育: ユーザーには、モデルの制限と潜在的なバイアスについて知らされるべきです。性格特性は複雑であり、単一のモデルやテキスト分析で完全に捉えることはできないことを理解するよう促すべきです。
- ステレオタイプと差別の回避: ユーザーは、予測された性格特性のみに基づいて判断や決定を行う際に注意を払う必要があります。性格予測は、個人を差別するために使用されたり、ステレオタイプを永続化するために使用されたりしてはなりません。
- コンテキストを考慮した解釈: モデルの予測を適切なコンテキストで解釈し、入力テキスト以外の個人に関する追加情報を考慮することが重要です。
- データのプライバシーとセキュリティ: ユーザーデータがセキュリティを確保した状態で、プライバシー規制に準拠して取り扱われることを確認してください。ユーザーは、自分が提供する情報を認識し、個人情報を共有する際に注意を払う必要があります。
- 倫理的な使用の促進: 性格予測モデルの責任ある使用を促進し、誤用や有害なアプリケーションを防止することが重要です。
上記の推奨事項は一般的なガイドラインであり、特定のユースケースと倫理的な考慮事項に基づいて、さらにコンテキストに応じた推奨事項を策定する必要があります。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。
引用
@article{DBLP:journals/corr/abs-1810-04805,
author = {Jacob Devlin and
Ming{-}Wei Chang and
Kenton Lee and
Kristina Toutanova},
title = {{BERT:} Pre-training of Deep Bidirectional Transformers for Language
Understanding},
journal = {CoRR},
volume = {abs/1810.04805},
year = {2018},
url = {http://arxiv.org/abs/1810.04805},
archivePrefix = {arXiv},
eprint = {1810.04805},
timestamp = {Tue, 30 Oct 2018 20:39:56 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-1810-04805.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}








