Emobloom-7b 是 EmoLLMs 项目的一部分,该项目是首个开源的大型语言模型(LLM)系列,旨在实现具备指令跟随能力的综合情感分析。本模型基于 bloomz-7b1-mt 基础模型和完整的 AAID 指令微调数据进行微调。该模型可用于情感分类任务(如情感极性或分类情感)和回归任务(如情感强度或情绪烈度)。
近期研究表明,大型语言模型可能会引入一些潜在偏见,例如性别差异。同时,部分错误的预测结果以及过度泛化现象也反映出当前大型语言模型存在的潜在风险。因此,将该模型应用于实际场景的情感分析系统仍面临诸多挑战。
EmoLLMs 包含一系列模型,具体有 Emollama-7b、Emollama-chat-7b、Emollama-chat-13b、Emoopt-13b、Emobloom-7b、Emot5-large、Emobart-large。
所有模型均在完整的 AAID 指令微调数据上进行训练。
from openmind import AutoTokenizer, AutoModelForCausalLM, is_torch_npu_available
from openmind_hub import snapshot_download
import torch.nn.functional as F
from torch import Tensor
import argparse
import time
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--model_name_or_path",
type=str,
help="Path to model",
default="jeffding/Emobloom-7b-openmind",
)
args = parser.parse_args()
return args
def main():
args = parse_args()
model_path = args.model_name_or_path
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True)
model = model.to(device)
start_time = time.time()
prompt = "Give me a short introduction to large language model."
inputs = tokenizer(prompt, return_tensors="pt", return_token_type_ids=False).to(device)
out = model.generate(**inputs, max_new_tokens=80).ravel()
out = tokenizer.decode(out)
print(out)
end_time = time.time()
print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")
if __name__ == "__main__":
main()
您可以在 Python 项目中借助 Hugging Face Transformers 库使用 Emobloom-7b 模型。以下是加载模型的简单示例:
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained('lzw1008/Emobloom-7b')
model = AutoModelForCausalLM.from_pretrained('lzw1008/Emobloom-7b', device_map='auto')在本示例中,使用 AutoTokenizer 加载分词器,并使用 AutoModelForCausalLM 加载模型。device_map='auto' 参数用于在 GPU 可用时自动使用 GPU。
人类: 任务:为文本中表达的情绪 E 分配一个介于 0(情绪 E 最弱)和 1(情绪 E 最强)之间的数值,以表示其强度。 文本:@CScheiwiller 忍不住笑 😆😆😆 情绪:喜悦 强度分数:
助手:
>>0.896人类: 任务:基于文本评估作者心理状态的效价强度,为其分配一个从 0(最消极)到 1(最积极)的实数值分数。 文本:生日快乐,小家伙。一直开心,一直轻松,一直潇洒 @daviistuart 😘 强度分数:
助手:
>>0.879人类: 任务:将文本归类到最能描述作者心理状态的有序类别中,考虑不同程度的积极和消极情感强度。3:可推断为非常积极的心理状态。2:可推断为中等积极的心理状态。1:可推断为轻微积极的心理状态。0:可推断为中性或混合的心理状态。-1:可推断为轻微消极的心理状态。-2:可推断为中等消极的心理状态。-3:可推断为非常消极的心理状态 文本:碧昂斯的《Resentment》每次都让我感同身受。😩 强度类别:
助手:
>>-3: very negative emotional state can be inferred人类: 任务:将文本的情绪基调归类为“中性或无情绪”,或识别是否存在一种或多种给定情绪(愤怒、期待、厌恶、恐惧、喜悦、爱、乐观、悲观、悲伤、惊讶、信任)。 文本:无论你决定做什么,确保它能让你 #快乐。 此文本包含的情绪:
助手:
>>joy, love, optimism可根据具体任务调整任务描述。
EmoLLMs 系列基于 MIT 许可证发布。有关更多详情,请参阅 MIT 文件。
如果您在研究工作中使用了 EmoLLMs 系列,请引用我们的论文:
@article{liu2024emollms,
title={EmoLLMs: A Series of Emotional Large Language Models and Annotation Tools for Comprehensive Affective Analysis},
author={Liu, Zhiwei and Yang, Kailai and Zhang, Tianlin and Xie, Qianqian and Yu, Zeping and Ananiadou, Sophia},
journal={arXiv preprint arXiv:2401.08508},
year={2024}
}