许可协议: mit
标签:
- 情感分析
- 金融情感分析
- bert
- 文本分类
- 金融
- finbert
- 财经
交易英雄金融情感分析模型
模型描述:本模型是基于FinBERT微调的版本,该BERT模型已在金融文本上进行预训练。通过微调过程,使模型适应特定的金融自然语言处理任务,提升了其在金融领域情感分析应用中的表现。
模型用途
主要用户:金融分析师、自然语言处理研究人员及从事金融数据开发的工程师。
训练数据
训练数据集:模型在自定义金融通讯文本数据集上进行了微调。数据集划分如下:
训练集:10,918,272个标记
验证集:1,213,184个标记
测试集:1,347,968个标记
预训练数据集:FinBERT在总计49亿标记的大型金融语料库上进行预训练,包括:
公司报告(10-K和10-Q):25亿标记
财报电话会议记录:13亿标记
分析师报告:11亿标记
评估结果
- 测试准确率 = 0.908469
- 测试精确率 = 0.927788
- 测试召回率 = 0.908469
- 测试F1值 = 0.913267
- 标签说明:0 -> 中性;1 -> 积极;2 -> 消极
使用示例
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
tokenizer = AutoTokenizer.from_pretrained("fuchenru/Trading-Hero-LLM")
model = AutoModelForSequenceClassification.from_pretrained("fuchenru/Trading-Hero-LLM")
nlp = pipeline("text-classification", model=model, tokenizer=tokenizer)
# 预处理输入文本
def preprocess(text, tokenizer, max_length=128):
inputs = tokenizer(text, truncation=True, padding='max_length', max_length=max_length, return_tensors='pt')
return inputs
# 情感预测函数
def predict_sentiment(input_text):
# 对输入文本进行标记化
inputs = tokenizer(input_text, return_tensors="pt", truncation=True, padding=True)
# 执行推理
with torch.no_grad():
outputs = model(**inputs)
# 获取预测标签
predicted_label = torch.argmax(outputs.logits, dim=1).item()
# 将预测标签映射为原始情感标签
label_map = {0: '中性', 1: '积极', 2: '消极'}
predicted_sentiment = label_map[predicted_label]
return predicted_sentiment
stock_news = [
"市场分析师预测未来几周将保持稳定态势。",
"今日市场表现平稳,股价波动极小。",
"潜在贸易协议消息传出后,投资者情绪有所改善。",
.......
]
for i in stock_news:
predicted_sentiment = predict_sentiment(i)
print("预测情感倾向:", predicted_sentiment)
预测情感倾向: 中性
预测情感倾向: 中性
预测情感倾向: 积极
引用文献
@misc{yang2020finbert,
title={FinBERT:面向金融通讯的预训练语言模型},
author={杨毅、马克·克里斯托弗·Siy UY、艾伦·黄},
year={2020},
eprint={2006.08097},
archivePrefix={arXiv},
}