模型简介
模型特点
模型能力
使用案例
🚀 大五人格预测模型
本项目利用迁移学习和BERT BASE UNCASED模型,根据输入文本准确预测个人的大五人格特质。该方法有效解决了人格预测中标记数据有限的问题,为了解个人性格提供了有价值的见解。
🚀 快速开始
要通过托管推理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
}
注意:示例输出中的值仅为占位符,可能不反映实际预测结果。你可以修改示例代码和结果格式,以匹配你的特定用例和所需的输出格式。
✨ 主要特性
- 迁移学习:利用预训练的 BERT BASE UNCASED 模型,通过迁移学习解决标记数据有限的问题,提高人格特质预测的准确性。
- 精准预测:基于输入文本,准确预测个人的大五人格特质。
- 易于使用:提供简单的 API 接口,方便用户进行人格特质预测。
📦 安装指南
确保你已安装所需的依赖项(transformers
和 torch
)。你可以使用以下命令进行安装:
pip install transformers torch
💻 使用示例
基础用法
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
text_input = "I am feeling excited about the upcoming event."
personality_prediction = personality_detection(text_input)
print(personality_prediction)
高级用法
如果你想下载模型文件并使用它们,而不是使用托管推理 API,可以参考以下代码:
from transformers import BertForSequenceClassification, BertTokenizer
import torch
# Initialization of the model values
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:
'''
Performs personality prediction on the given input text
Args:
model_input (str): The text conversation
Returns:
dict: A dictionary where keys are speaker labels and values are their personality predictions
'''
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
text_input = "I am feeling excited about the upcoming event."
personality_prediction = personality_detection(text_input)
请确保你已将必要的模型文件(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 |
语言 (NLP) | 英语 |
许可证 | MIT |
微调基础模型 | https://huggingface.co/bert-base-uncased |
用途
直接使用
人格预测模型可供对根据输入文本了解自己人格特质感兴趣的个人直接使用。用户可以输入文本并获得大五人格特质的预测结果。
下游使用
该模型不适合用于下游使用或针对特定任务进行微调。它被设计为一个独立的人格预测模型。
超出适用范围的使用
该模型不适用于人格预测以外的用途。不应将其用于在就业、教育或法律事务等领域对个人做出关键决策或判断。
偏差、风险和局限性
人格预测模型与任何机器学习模型一样,存在一定的局限性和潜在偏差,需要加以考虑:
- 上下文有限:模型仅基于输入文本进行预测,可能无法全面捕捉个人的人格特征。需要考虑到人格特质受文本表达之外的各种因素影响。
- 泛化能力:模型根据从特定数据集中学习到的模式预测人格特质。当应用于来自训练数据中未充分代表的不同人口统计或文化背景的个人时,其性能可能会有所不同。
- 伦理考量:人格预测模型应负责任地使用,要理解人格特质并不能决定一个人的价值或能力。应避免根据预测的人格特质对个人做出不公平的判断或歧视。
- 隐私问题:模型依赖用户提供的输入文本,其中可能包含敏感或个人信息。用户在分享个人细节时应谨慎,并确保数据的安全性。
- 误判:模型的预测结果可能并不总是与个人的实际人格特质完全一致。模型可能会产生误报(预测出不存在的特质)或漏报(遗漏存在的特质)。
建议
为了减轻与人格预测模型相关的风险和局限性,建议采取以下措施:
- 提高意识和教育:用户应了解模型的局限性和潜在偏差。促进对人格特质复杂性的理解,认识到单一模型或文本分析无法完全捕捉人格特质。
- 避免刻板印象和歧视:用户在仅根据预测的人格特质做出判断或决策时应谨慎。不应使用人格预测结果来歧视个人或延续刻板印象。
- 结合上下文解读:在适当的上下文中解读模型的预测结果,并考虑个人输入文本之外的其他信息。
- 数据隐私和安全:确保用户数据得到安全处理,并遵守隐私法规。用户应了解自己提供的信息,并在分享个人细节时谨慎行事。
- 促进道德使用:鼓励负责任地使用人格预测模型,反对滥用或有害应用。
需要注意的是,上述建议是一般性指导方针,应根据具体用例和伦理考量制定更具体的建议。
🔧 技术细节
本项目使用迁移学习技术,基于 BERT BASE UNCASED 模型进行微调。具体步骤如下:
- 数据准备:收集并整理人格特质数据集,用于模型的微调。
- 模型选择:选择 BERT BASE UNCASED 作为基础模型,因为它在自然语言处理任务中表现出色。
- 微调模型:在人格特质数据集上对 BERT BASE UNCASED 模型进行微调,学习输入文本和人格特征之间的模式。
- 评估和优化:使用评估指标对微调后的模型进行评估,并根据评估结果进行优化。
通过以上步骤,我们提高了人格特质预测的准确性,解决了标记数据有限的问题。
📄 许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
📖 引用
@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}
}








