金融中的情感分析是了解市场趋势和投资者行为的有力工具。但是,由于其复杂性和细微差别,一般的情感分析模型通常不足于财务文本。该项目通过微调的轻量级语言模型进行微调GPT-4O Mini提出了解决方案。通过利用TRC2数据集,这是专家模特Finbert标记的路透社财务新闻文章的集合,我们旨在增强GPT-4O MINI捕捉财务情感细微差别的能力。
该项目为财务情感分析提供了一种有效且可扩展的方法,为更细微的基于情感的金融分析打开了大门。到最后,我们证明了GPT-4O Mini用特定于领域的数据进行微调时,可以作为在财务环境中像Finbert这样更复杂模型的可行替代品。
学习成果
- 了解使用特定于领域的数据进行微调的GPT-4O MINI进行经济情绪分析的过程。
- 了解如何以结构化且可扩展的方式进行预处理和格式化财务文本数据以进行模型培训。
- 了解对财务经文的应用程序的应用及其对市场趋势的影响。
- 发现如何利用芬伯特(Finbert)等专家标记的数据集来改善财务情感分析中的模型绩效。
- 探索在现实世界中的金融应用(例如市场分析和自动新闻情感跟踪)中进行微调的GPT-4O迷你模型的实际部署。
本文作为数据科学博客马拉松的一部分发表。
目录
- 探索数据集:情感分析的基本数据
- 研究方法:分析财务情绪的步骤
- 微调GPT-4O mini用于财务情感分析
- 结论
- 常见问题
探索数据集:情感分析的基本数据
对于此项目,我们使用TRC2(TREC REUTERS COPUS,第2卷)数据集,该数据集是路透社策划并通过国家标准技术研究所(NIST)提供的财务新闻文章的集合。 TRC2数据集包括路透社财务新闻文章的全面选择,该文章由于其广泛的覆盖范围和与财务事件的相关性而经常用于金融语言模型。
访问TRC2数据集
为了获得TRC2数据集,研究人员和组织需要通过NIST要求访问。该数据集可在NIST TREC REUTERS COPUS上获得,该数据集提供了有关许可和使用协议的详细信息。您将需要:
- 访问Nisttrecreuterscorpus。
- 按照网站上指定的数据集请求过程。
- 确保符合在研究或商业项目中使用数据集的许可要求。
获得数据集后,预处理并将其细分为句子进行情感分析,从而使您可以应用Finbert生成专家标记的情感类别。
研究方法:分析财务情绪的步骤
通过芬伯特(Finbert)得出的情感标签的微调gpt-4o mini的方法,包括以下主要步骤:
步骤1:Finbert标签
为了创建微型数据集,我们利用了在金融领域预先培训的金融语言模型Finbert。我们将Finbert应用于TRC2数据集中的每个句子,从而在三个类别中生成专家情绪标签:正,负和中性。此过程产生一个标记的数据集,其中TRC2的每个句子都与情感相关联,从而为培训具有可靠标签的GPT-4O Mini提供了基础。
步骤2:数据预处理和JSONL格式
然后将标记的数据进行预处理并格式化为适合OpenAI的微调API的JSONL结构。我们使用以下结构将每个数据点格式化:
- 系统消息指定助手作为财务专家的角色。
- 包含财务句子的用户消息。
- 助理回应指出了Finbert的预测情绪标签。
标记后,我们执行其他预处理步骤,例如将标签转换为小写以保持一致性并分层数据以确保平衡标签表示。我们还将数据集分为培训和验证集,保留80%的数据进行培训和20%的验证,这有助于评估模型的概括能力。
步骤3:微调GPT-4O mini
使用OpenAI的微调API,我们将使用预先标记的数据集微调GPT-4O mini。精细调整设置(例如学习率,批处理大小和时期数量)被优化,以在模型准确性和概括性之间达到平衡。该过程使GPT-4O Mini能够从特定于领域的数据中学习,并提高其在财务情感分析任务上的绩效。
步骤4:评估和基准测试
训练后,使用常见的情绪分析指标(如准确性和F1得分)评估了模型的性能,从而可以直接比较Finbert在相同数据上的性能。这种基准测试表明,GPT-4O Mini在金融领域内的情感分类如何概括,并确认它是否能够始终如一地超过Finbert的准确性。
步骤5:部署和实际应用
在确认出色的绩效后,GPT-4O Mini准备在现实世界中的财务应用中部署,例如市场分析,投资咨询和自动新闻情感跟踪。这种微调模型为更复杂的财务模型提供了有效的替代方法,提供了适合集成到金融系统的强大,可扩展的情感分析功能。
如果您想学习情感分析的基础知识,请使用Python查看有关情感分析的文章!
微调GPT-4O mini用于财务情感分析
遵循这种结构化的逐步方法,无缝浏览过程的每个阶段。无论您是初学者还是经验丰富,本指南都可以确保从头到尾的清晰度和成功实施。
步骤1:初始设置
加载所需的库并配置环境。
从变形金刚导入自动驱动器,AutomoDelforSequenceceCecrification 导入火炬 导入大熊猫作为pd 从TQDM导入TQDM tokenizer = autotokenizer.from_pretaining(“ prosusai/finbert”) 型号= automodelforSequencececrification.from_pretrated(“ prosusai/finbert”) 设备= torch.device('cuda'如果torch.cuda.is_available()else'cpu') 型号(设备)
步骤2:定义与Finbert生成情感标签的函数
- 此功能接受文本输入,将其化,并使用Finbert来预测情感标签。
- 标签映射:Finbert输出三个类别 - 阳性,负和中性。
def get_sentiment(文本): 输入= tokenizer(text,return_tensors =“ pt”,truncation = true,max_length = 512).to(device) 使用Torch.no_grad(): 输出=模型(**输入) logits = outputs.logits 情感= torch.argmax(logits,dim = 1).Item() sentiment_label = [“正”,“负”,“中性”] [情感] 返回情感_label
步骤3:数据预处理和采样TRC2数据集
您必须仔细预处理TRC2数据集,以仅保留相关句子进行微调。以下步骤概述了如何从TRC2数据集中读取,清洁,拆分和过滤数据。
考虑到不披露的限制,本节提供了使用Pseudocode的数据预处理工作流的高级概述。
- 负载和提取数据:使用标准文本处理方法加载并提取以压缩格式提供的数据集。每个文档的相关部分被隔离,以关注关键文本内容。
- 文本清洁和句子细分:隔离内容部分后,清洁每个文档以删除外部字符并确保格式化的一致性。这准备了将句子分成句子或较小文本单元的内容,从而通过提供可管理的情感分析段来增强模型性能。
- 结构化数据存储:为了促进流线处理,将数据组织为结构化格式,其中每一行代表单个句子或文本段。此设置允许有效的处理,过滤和标签,使其适用于微调语言模型。
- 相关文本段的过滤和屏幕:为了保持高数据质量,我们应用了各种标准来滤除无关紧要或嘈杂的文本段。这些标准包括消除过度短段,去除那些具有特定模式的那些表明非词性含量的模式,以及排除具有过多特殊特征或特定格式特征的段。
- 最终预处理:仅保留符合预定质量标准的段用于模型培训。过滤数据作为结构化文件保存,以便在微调工作流程中简化参考。
#从文件加载压缩数据集 打开compressed_file作为文件: #将文件的内容读取到内存中 data = read_file(文件) #提取每个文档的相关部分 对于数据中的每个文档: 提取document_id 提取日期 提取main_text_content #定义一个函数以清洁和细分文本内容 函数clean_and_segment_text(text): #删除不需要的字符和空格 cleaned_text = remove_special_characters(文本) cleaned_text = standardize_whitespace(cleaned_text) #将清洁的文本分为句子或文本段 句子= split_into_sentences(cleaned_text) 返回句子 #将清洁和分割功能应用于每个文档的内容 对于数据中的每个文档: 句子= clean_and_segment_text(document ['main_text_content']) 将句子保存到结构化格式 #为单个句子创建结构化数据存储 初始化结构化_data的空列表 对于句子中的每个句子: #将句子附加到结构化数据 structred_data.append(句子) #定义一个函数以根据特定条件过滤不需要的句子 函数filter_sentences(句子): 如果句子太短: 返回false 如果句子包含特定模式(例如,日期或符号过多): 返回false 如果句子与不需要的格式特征相匹配: 返回false 返回true #将过滤器应用于结构化数据 filtered_data = [如果filter_sentences(句子)在structred_data中的句子句子] #进一步根据最小长度或其他条件过滤句子 final_data = [efftered_data中的句子句子,如果MEDS_MINMIM_LENGTH(句子)] #为模型培训保存最终数据结构 将final_data保存为struction_file
- 随机加载数据集和采样1,000,000个句子,以确保可管理的数据集大小进行微调。
- 将采样句子存储在数据框架中,以启用结构化处理和易于处理。
df_sampled = df.sample(n = 1000000,Random_State = 42).Reset_index(drop = true)
步骤4:生成标签并准备JSONL数据以进行微调
- 通过采样句子循环,使用Finbert标记每个句子,并将其格式化为GPT-4O迷你微调的JSONL。
- JSONL的结构:每个条目都包含系统消息,用户内容和助手的情感响应。
进口JSON jsonl_data = [] 对于_,在tqdm中行(df_sampled.iterrows(),total = df_sampled.shape [0]): 内容=行['句子'] 情感= get_sentiment(内容) jsonl_entry = { “消息”:[ {“角色”:“系统”,“内容”:“助手是财务专家。”},, {“角色”:“用户”,“ content”:content},, {“角色”:“助手”,“ content”:情感} 这是给出的 } jsonl_data.append(jsonl_entry) 用open('finetuning_data.jsonl','w')作为jsonl_file: 要进入JSONL_DATA: jsonl_file.write(json.dumps(entry)'\ n')
步骤5:将标签转换为小写
- 通过将情感标签转换为小写,确保标签一致性,与OpenAI的格式对齐进行微调。
使用open('finetuning_data.jsonl','r')作为jsonl_file: data = [JSON.LOADS(line)在JSONL_FILE中的行] 对于数据输入: 输入[“消息”] [2] [“ content”] = entry [“ message”] [2] [“ content”]。lower() 使用new_jsonl_file: 对于数据输入: new_jsonl_file.write(json.dumps(entry)'\ n')
步骤6:洗牌并将数据集分为培训和验证集
- 调整数据:随机将条目的顺序随机,以消除排序偏差。
- 分为80%的培训和20%的验证集。
导入随机 随机种子(42) random.shuffle(数据) split_ratio = 0.8 split_index = int(len(data) * split_ratio) triench_data = data [:split_index] 验证_data = data [split_index:] 用open('triben_data.jsonl','w')作为train_file: 用于进入训练_data: train_file.write(json.dumps(entry)'\ n') 使用open('validation_data.jsonl','w')作为val_file: 要进入验证_data: val_file.write(json.dumps(entry)'\ n')
步骤7:执行分层采样并保存减少的数据集
- 要进一步优化,请执行分层采样以创建减少的数据集,同时保持标签比例。
- 使用分层抽样:确保在培训和验证集中平衡微调的标签平等分布。
来自sklearn.model_selection导入train_test_split data_df = pd.dataframe({ 'content':[输入[“消息”] [1] [“ content”]用于数据中的输入], 'label':[输入[“消息”] [2] [“ content”]用于数据输入] })) df_sampled,_ = train_test_split(data_df,stratefify = data_df ['label'],test_size = 0.9,Random_State = 42) train_df,val_df = train_test_split(df_sampled,stratefify = df_sampled ['label'],test_size = 0.2,Random_State = 42) DEF DF_TO_JSONL(DF,文件名): jsonl_data = [] 对于_,在df.iterrows()中行列: jsonl_entry = { “消息”:[ {“角色”:“系统”,“内容”:“助手是财务专家。”},, {“角色”:“用户”,“ content”:row ['content']},, {“角色”:“助手”,“ content”:row ['label']} 这是给出的 } jsonl_data.append(jsonl_entry) 用打开(文件名,'w')为jsonl_file: 要进入JSONL_DATA: jsonl_file.write(json.dumps(entry)'\ n') df_to_jsonl(train_df,'reduced_training_data.jsonl') df_to_jsonl(val_df,'reduced_validation_data.jsonl')
步骤8:使用OpenAI的微调API微调GPT-4O MINI
- 借助您准备好的JSONL文件,请按照准备好的培训和验证数据集进行OpenAI的文档,以微调GPT-4O mini。
- 上传数据并开始微调:将JSONL文件上传到OpenAI的平台,并按照其API说明启动微调过程。
步骤9:模型测试和评估
为了评估微调的GPT-4O Mini模型的性能,我们在Kaggle上可用的标有财务情感数据集上对其进行了测试。该数据集在财务环境中包含5,843个标记的句子,这可以在微调模型和Finbert之间进行有意义的比较。
芬伯特的精度为75.81%,而微调的GPT-4O MINI模型获得了76.46%,表明略有改善。
这是用于测试的代码:
导入大熊猫作为pd 导入操作系统 进口Openai 来自dotenv import load_dotenv #加载CSV文件 csv_file_path ='data.csv'#替换为实际的文件路径 df = pd.read_csv(csv_file_path) #将dataframe转换为文本格式 用open('sensences.txt','w',encoding ='utf-8')作为f: 对于索引,请在df.iterrows()中行列: 句子=行['句子']。strip()#干净的句子 情感=行['情感']。strip()。下()#确保情感是小写的 f.write(f“ {句子} @{情感} \ n”) #加载环境变量 load_dotenv() #设置您的OpenAI API密钥 openai.api_key = os.getEnv(“ openai_api_key”)#确保在您的环境变量中设置OpenAi_Api_Key #数据集文本文件的路径 file_path ='sensences.txt'#文本文件包含句子和标签 #从数据集读取句子和真实标签 句子= [] true_labels = [] 使用open(file_path,'r',encoding ='utf-8')作为文件: lines = file.readlines() #提取句子和标签 对于行中的行: line = line.strip() 如果'@'排队: 句子,label = line.rsplit('@',1) sensences.append(stone.strip()) true_labels.append(label.strip()) #功能以从微调模型中获取预测 def get_openai_predictions(句子,model =“ your_finetuned_model_name”):#用模型名称替换 尝试: 响应= openai.chatcompletion.greate( 模型=模型, 消息= [ {“角色”:“系统”,“内容”:“您是财务情感分析专家。”},, {“角色”:“用户”,“ content”:句子} ],, max_tokens = 50, 温度= 0.5 ) 返回响应['choices'] [0] ['消息'] ['content']。strip() 除例外为E: print(f“错误生成句子的预测:'{句子}'。错误:{e}”) 返回“未知” #生成数据集的预测 predicted_labels = [] 对于句子中的句子: 预测= get_openai_predictions(句子) #将“正”,“中性”,“负”的预测标准化 如果预测中的“正则”。lower(): predicted_labels.append('正面') elif'prediction..lower()中的“中性”: predicted_labels.append('中性') elif'panist'pretiction..lower(): predicted_labels.append('否定) 别的: predicted_labels.append('unknown') #计算模型的准确性 recripe_count = sum([[pred == true for pred,true in zip(predicted_labels,true_labels)])))))))) 精度= recript_count / len(句子) 打印(f'Accuracy:{精度:.4f}')#预期输出:0.7646
结论
通过将Finbert的金融领域标签的专业知识与GPT-4O Mini的灵活性相结合,该项目实现了高性能的财务情感模型,超过了Finbert的准确性。本指南和方法论为可复制,可扩展和可解释的情感分析铺平了道路,专门针对金融行业量身定制。
关键要点
- 使用特定领域数据的微调GPT-4O MINI增强了其捕获细微的财务情感的能力,超过了诸如Finbert的准确性。
- 由路透社策划的TRC2数据集为有效的情感分析培训提供了高质量的财务新闻文章。
- 使用Finbert进行预处理和标签,使GPT-4O Mini能够为财务文本产生更准确的情感预测。
- 该方法证明了GPT-4O MINI对于现实世界的财务应用的可伸缩性,提供了复杂模型的轻量级替代方案。
- 通过利用OpenAI的微调API,此方法优化了GPT-4O Mini,以进行有效有效的财务情感分析。
常见问题
Q1。为什么要使用GPT-4O Mini而不是Finbert进行财务情感分析?A. GPT-4O MINI提供了一种轻巧,灵活的替代方案,并且可以在通过微调的特定任务上胜过Finbert。通过对特定领域的数据进行微调,GPT-4O Mini可以在财务文本中捕获细微的情感模式,同时更加有效,更易于部署。
Q2。如何请求访问TRC2数据集?答:要访问TRC2数据集,请通过此链接的国家标准与技术研究所(NIST)提交请求。查看网站的说明,以完成研究和商业用途所需的许可和使用协议。
Q3。我可以使用其他数据集进行财务情感分析吗?答:您还可以使用其他数据集,例如财务短语银行或包含标记为财务文本的自定义数据集。 TRC2数据集适合培训情绪模型,因为它包括财务新闻内容,并涵盖了广泛的财务主题。
Q4。芬伯特如何产生情感标签?A. Finbert是一种特定于金融领域的语言模型,它可以预先培训财务数据和微型分析。当应用于TRC2句子时,它会根据财务文本中的语言上下文将每个句子分为正面,负面或中立的情感。
Q5。为什么我们需要将标签转换为JSONL的小写字母?答:将标签转换为小写,确保与OpenAI的微调要求一致,这通常会期望标签对病例敏感。它还有助于防止评估过程中的不匹配,并在JSONL数据集中保持统一的结构。
本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。
以上是微调GPT-4O mini用于财务情感分析的详细内容。更多信息请关注PHP中文网其他相关文章!
![无法使用chatgpt!解释可以立即测试的原因和解决方案[最新2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
ChatGPT无法访问?本文提供多种实用解决方案!许多用户在日常使用ChatGPT时,可能会遇到无法访问或响应缓慢等问题。本文将根据不同情况,逐步指导您解决这些问题。 ChatGPT无法访问的原因及初步排查 首先,我们需要确定问题是出在OpenAI服务器端,还是用户自身网络或设备问题。 请按照以下步骤进行排查: 步骤1:检查OpenAI官方状态 访问OpenAI Status页面 (status.openai.com),查看ChatGPT服务是否正常运行。如果显示红色或黄色警报,则表示Open

2025年5月10日,麻省理工学院物理学家Max Tegmark告诉《卫报》,AI实验室应在释放人工超级智能之前模仿Oppenheimer的三位一体测试演算。 “我的评估是'康普顿常数',这是一场比赛的可能性

AI音乐创作技术日新月异,本文将以ChatGPT等AI模型为例,详细讲解如何利用AI辅助音乐创作,并辅以实际案例进行说明。我们将分别介绍如何通过SunoAI、Hugging Face上的AI jukebox以及Python的Music21库进行音乐创作。 通过这些技术,每个人都能轻松创作原创音乐。但需注意,AI生成内容的版权问题不容忽视,使用时务必谨慎。 让我们一起探索AI在音乐领域的无限可能! OpenAI最新AI代理“OpenAI Deep Research”介绍: [ChatGPT]Ope

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显着提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

CHATGPT应用程序:与AI助手释放您的创造力!初学者指南 ChatGpt应用程序是一位创新的AI助手,可处理各种任务,包括写作,翻译和答案。它是一种具有无限可能性的工具,可用于创意活动和信息收集。 在本文中,我们将以一种易于理解的方式解释初学者,从如何安装chatgpt智能手机应用程序到语音输入功能和插件等应用程序所独有的功能,以及在使用该应用时要牢记的要点。我们还将仔细研究插件限制和设备对设备配置同步

ChatGPT中文版:解锁中文AI对话新体验 ChatGPT风靡全球,您知道它也提供中文版本吗?这款强大的AI工具不仅支持日常对话,还能处理专业内容,并兼容简体中文和繁体中文。无论是中国地区的使用者,还是正在学习中文的朋友,都能从中受益。 本文将详细介绍ChatGPT中文版的使用方法,包括账户设置、中文提示词输入、过滤器的使用、以及不同套餐的选择,并分析潜在风险及应对策略。此外,我们还将对比ChatGPT中文版和其他中文AI工具,帮助您更好地了解其优势和应用场景。 OpenAI最新发布的AI智能

这些可以将其视为生成AI领域的下一个飞跃,这为我们提供了Chatgpt和其他大型语言模型聊天机器人。他们可以代表我们采取行动,而不是简单地回答问题或产生信息

使用chatgpt有效的多个帐户管理技术|关于如何使用商业和私人生活的详尽解释! Chatgpt在各种情况下都使用,但是有些人可能担心管理多个帐户。本文将详细解释如何为ChatGpt创建多个帐户,使用时该怎么做以及如何安全有效地操作它。我们还介绍了重要的一点,例如业务和私人使用差异,并遵守OpenAI的使用条款,并提供指南,以帮助您安全地利用多个帐户。 Openai


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。