Python用langchain、OpenAI大语言模型LLM情感分析苹果股票新闻数据及提示工程优化应用...

全文链接:https://tecdat.cn/?p=39614 

本文主要探讨了如何利用大语言模型(LLMs)进行股票分析。通过使用提供的股票市场和金融新闻获取数据,结合Python中的相关库,如Pandas、langchain等,实现对股票新闻的情感分析。利用大语言模型构建情感分析模型,通过提示工程等技术优化模型,最终通过可视化展示股票市场的情感倾向,为股票投资决策提供参考点击文末“阅读原文”获取完整代码数据)。

关键词

大语言模型;股票分析;情感分析;API

一、引言

在当今的股票市场中,及时了解新闻和事件对于做出战略决策至关重要。认识到市场情绪对市场趋势的影响,是相应调整投资策略的关键。首先,我们需要从各种来源获取大量的市场新闻数据。这其中,数据质量(如来源数量、数据更新率等)和使用便捷性是重要的考量因素。
虽然数据在网上易于获取,但对于我们的需求来说,最便捷的方法之一是使用API端点将市场数据和新闻直接集成到代码中。有许多金融数据提供商提供API连接,它们在数据套餐、支持方式和数据质量上各有不同。
在本文中,我们将使用由提供的股票市场和金融新闻API。在我看来,该API在质量和价格之间达到了很好的平衡。该API提供了一个从金融新闻中提取见解的端点,便于进行市场情绪分析。由于其易于使用,用户可以查询和检索新闻文章,动态评估市场的积极或消极基调。
通过展示该API的功能,旨在展示其在情感分析中的无缝集成,使我们能够根据市场情绪做出明智的决策。在快速变化的股票市场环境中,获得这样的资源有助于我们采取更灵活和策略性的投资方法。

二、导入包

首先,我们需要在Python环境中导入所需的包。在本文中,我们将使用三个主要的包:Pandas用于处理数据帧,用于提取数据,langchain用于构建大语言模型。此外,我们还将使用其他辅助包,如config和re。

在导入之前,请确保使用命令行安装这些包。现在我们已经将所有所需的包导入到Python环境中,可以进行下一步,即激活API密钥。

三、API密钥激活

为了使用API的功能,必须注册API密钥。

四、数据提取

我们将通过访问:

response = client.financial\_news(s="AAPL.US", from\_date='2024-01-01', to_date='2024-01-30', limit=100)
data_frame = pd.DataFrame(response) # 将json输出转换为数据帧
data_frame.tail()

下面解释一下API中的参数:

  • s:字符串类型。如果未设置参数t,则此参数为必填项。表示要获取新闻的股票代码。

  • t:字符串类型。如果未设置参数s,则此参数为必填项。表示获取特定主题新闻的标签。可以

  • api_token:字符串类型。必填项。访问API的令牌,注册后可获得。

  • fromto:格式为YYYY-MM-DD。如果需要2021年3月1日至2021年3月10日的数据,则应使用from=2021-03-01to=2021-03-10

  • limit:数字类型。可选参数。表示查询应返回的结果数量。默认值为50,最小值为1,最大值为1000。

  • offset:数字类型。可选参数。表示数据的偏移量。默认值为0,最小值为0。例如,要从第200个开始获取100个符号,应使用limit=100offset=200
    数据如下所示:
    0e403be8bd063a5672718d620a3a549d.png
    输出数据包含以下字段:

  • date:文章的日期和时间。

  • title:文章的标题。

  • content:文章的全文。

  • link:文章来源的链接。

  • symbols:文章中提到的股票代码数组。

五、数据清洗

现在获取到的数据并不干净,包含许多换行符和不同的命令。因此,我们需要对其进行清洗:

# 清洗文本数据的函数
def clean\_textual\_data(text):clean_text = re.sub(r'\\s+','', text)return clean_text.strip()
# 将清洗函数应用到整个列
data\_frame\['content'\] = data\_frame\['content'\].apply(clean\_textual\_data)

现在我们已经将清洗函数应用到所有数据,可以继续构建我们的聊天机器人(这里指后续基于这些数据进行的分析流程类似聊天机器人调用数据的过程)。

六、大语言模型(LLM)

现在我们将使用Langchain与OpenAI模型形成一个大语言模型链。

language_model = ChatOpenAI(model="gpt-3.5-turbo",openai\_api\_key='YOUR OPENAI API KEY', 
temperature=0)

这段代码片段通过实例化gpt-3.5-turbo并将温度设置为0来初始化语言模型。选择温度为0可确保模型的确定性,防止其偏离主题,并保持专注和一致的生成结果。
现在,我们将使用不同的技术使其更精确地适用于我们的下游任务,即情感分析。有很多不同的方法可以实现:

6.1 提示工程

提示工程是一个不断发展的领域,涉及设计和优化提示,以最大限度地提高像GPT这样的大语言模型的性能。随着这些模型的不断发展,我们对其进行提示的方式变得越来越重要。最近的研究表明,精心设计的提示可以显著提高可靠性,并使模型能够处理比以前认为更复杂的任务。
常用的提示工程技术如下:

  • 零样本提示:这种方法使大语言模型(LLMs)能够处理新任务,即使没有先前的示例或对任务的理解。它通过一种称为“提示”的技术运作,即只需向大语言模型提供所需任务的自然语言描述。

  • 少样本提示:虽然大语言模型展示出卓越的零样本能力,但在使用零样本设置时,它们在处理更复杂的任务时仍存在不足。少样本提示可以作为一种技术,实现上下文学习,即在提示中提供示例,引导模型获得更好的性能。这些示例作为后续示例的条件,我们希望模型为后续示例生成响应。

  • 思维链提示:思维链提示是一种有助于人工智能系统将复杂任务分解为可管理步骤的技术。这种方法不是一次性解决具有挑战性的问题,而是通过将解决方案分解为一系列较小的增量步骤来促进推理过程的解释。它首先明确定义最终目标,然后考虑实现该目标所需的逻辑前提和子任务。

6.2 微调

微调是一个有用的过程,它允许用户针对特定任务定制预训练的语言模型(LLMs)。通过在包含特定任务数据的小数据集上对模型进行微调,可以在保持其整体语言理解能力的同时,提高其在该特定任务上的性能。
主要的两种微调方法如下:

  • 全指令微调:全指令微调是一种用于使大语言模型(LLMs)适应特定任务的技术。该过程涉及使用特定任务的数据调整大语言模型的所有参数。这种调整使模型能够在特定任务上更有效地执行,可能会导致性能提升。之所以需要全指令微调,是因为即使是最强大的预训练大语言模型也可能无法直接满足特定需求。例如,一个应用程序可能需要独特的结构或风格,或者预训练的大语言模型可能缺乏对该应用程序至关重要的特定文档的知识。此外,某些领域、行业甚至特定企业通常具有在一般预训练数据中未显著体现的独特术语、概念和结构。因此,全指令微调是使大语言模型适应更特定用例的有价值方法。

  • 参数高效微调:参数高效微调(PEFT)是一种用于使大型预训练模型适应各种下游应用而无需微调模型所有参数的技术。这是因为微调所有参数的成本可能过高。相反,PEFT方法仅微调少量(额外的)模型参数。这显著降低了计算和存储成本,同时产生与完全微调模型相当的性能。PEFT解决了诸如在消费级硬件上进行全量微调不可行、为每个下游任务独立存储和部署微调模型成本高昂等问题。它还克服了在大语言模型(LLMs)全量微调期间观察到的灾难性遗忘问题。
    在本文中,我们将利用提示工程技术,利用Langchain模板功能,构建一个优化的提示,用于在股票市场中进行情感分析。目标是创建一个提示,不仅提供情感分析,还能为模型的推断提供解释。

template = """
从新闻文章中识别对苹果(AAPL)股票的情绪,情绪评分范围为-10到+10,其中-10表示最负面,+10表示最正面,0表示中性。
同时给出你的答案的合理解释,以及它将如何影响不同股票的价格。
文章:{statement}
"""
# 使用Langchain PromptTemplate功能形成提示
prompt = PromptTemplate(template=template, input_variables=\["statement"\])
llm\_chain = LLMChain(prompt=prompt, llm=language\_model)

现在我们已经建立了大语言模型链,下面给出一个推理示例。

6.3 运行大语言模型链

输出如下所示:
c80f17fad34d0d4bf3bd9af6ed62f80e.png


点击标题查阅往期内容

42904705b141e12066c506f148f52e46.jpeg

【视频】LSTM模型原理及其进行股票收盘价的时间序列预测讲解|附数据代码

outside_default.png

左右滑动查看更多

outside_default.png

01

48943aca66ab47a82151a1c2f0821637.png

02

0cb6b4ac1da5ea5884ae0e8a5b6b2838.png

03

e8e5325e2ed885c1656c20695dac8c10.jpeg

04

534df45a202f7df36cf7c1378b7bb3dc.png

七、分析

为了分析苹果(AAPL)股票的市场状况,我们将分析100篇文章并得出一些结论。
首先,我们必须确保不超过模型的令牌限制,我的模型限制是4097。因此,我们将过滤掉令牌数小于3500的文章:

# 计算令牌数量的函数
def count\_token\_numbers(text):tokens = text.split()return len(tokens)

现在,我将更改提示模板,以便获得简洁的输出:

template_2 = """
从新闻文章中识别对苹果(AAPL)股票的情绪,评分范围为-10到+10,其中-10表示最负面,+10表示最正面,0表示中性。
仅用一个单词回答,且该单词应为分数。
文章:{statement}
"""
# 使用Langchain PromptTemplate功能形成提示
prompt\_2 = PromptTemplate(template=template\_2, input_variables=\["statement"\])

让我们形成新的大语言模型链:

下面展示一个推理:

print(new\_data\_frame\['content'\]\[2\])
print('')
print('新闻情绪:', llm\_chain\_2.run(new\_data\_frame\['content'\]\[2\]))

结果如图:
5c82bee35f124aac265888e8319c15bf.png
很好,我们现在能够得到简洁的输出。现在,我们将创建一个for循环,遍历数据并获取每条新闻的情绪:

results = \[\]
for i in range(0, new\_data\_frame.shape\[0\]):results.append(llm\_chain\_2.run(new\_data\_frame\['content'\]\[i\]))

八、可视化

现在让我们绘制一些饼图,以查看AAPL股票的市场情绪:

import matplotlib.pyplot as plt
data = pd.DataFrame(results) # 转换为数据帧
col_name = 0 # 这是我的列名,你应根据你的数据进行更改
counts = data\[col\_name\].value\_counts()
# 绘制饼图
plt.pie(counts, labels=counts.index, autopct='%1.1f%%', startangle=140)
plt.title(f'饼图')
plt.axis('equal') # 等比例确保饼图绘制为圆形
# 显示饼图
plt.show()

结果如图:
b374264a6331e70203d1a316b8549c41.png

饼图表明,大量文章是中性的。然而,为了确保准确性,我们应该过滤数据,只关注分析非中性信息。

8.1 删除中性值

value\_to\_delete = '0'
# 删除列中出现指定值的所有行
new\_data = data\[data\[0\]!= value\_to_delete\]

8.2 可视化新数据

counts = new\_data\[col\_name\].value_counts()
# 绘制饼图
plt.pie(counts, labels=counts.index, autopct='%1.1f%%', startangle=140)
plt.title(f'饼图')
plt.axis('equal') # 等比例确保饼图绘制为圆形
# 显示饼图
plt.show()

结果如图:
41083643d4a9b6cebe145492e782ab61.png

观察趋势,+5和+7的组合占数据的近40%。考虑到+10、+8和+3等其他值,正面文章的累积百分比上升到52.5%。这种模式表明普遍存在乐观情绪,意味着在最近的文章中对苹果公司的看法良好。所确定的积极前景可能对塑造苹果市场表现的整体情绪产生潜在影响。

九、结论

在本研究中,我们使用了API收集股票市场新闻文章,并利用OpenAI的情感分析模型评估这些文章中传达的情绪。


资料获取

在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。

10a4f64c691dcc21a04a25180b55a7e6.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python用langchain、OpenAI大语言模型LLM情感分析AAPL股票新闻数据及提示工程优化应用》。

点击标题查阅往期内容

Python生成对抗神经网络GAN预测股票及LSTMs、ARIMA对比分析ETF金融时间序列可视化

Python深度强化学习智能体DDPG自适应股票交易策略优化道琼斯30股票数据可视化研究

MATLAB贝叶斯优化混合Bayes-CNN-RNN分析股票市场数据与浅层网络超参数优化

Python用CEEMDAN-LSTM-VMD金融股价数据预测及SVR、AR、HAR对比可视化

Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用CNN-LSTM、ARIMA、Prophet股票价格预测的研究与分析|附数据代码

【视频讲解】线性时间序列原理及混合ARIMA-LSTM神经网络模型预测股票收盘价研究实例

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列

R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

0b08429b5131b93fc40a2933efafa71f.jpeg

04d9377ee203526f9891243fb8a6be71.png

4b0678eb3a3b6a10080df2b54571780c.png

3972cbed2599112f6bc51033e9dd9179.jpeg

ccf224aa3cd81993bd9f2dc59d6dd1d4.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第19章 Future设计模式(Java高并发编程详解:多线程与系统设计)

1.先给你一张凭据 假设有个任务需要执行比较长的的时间,通常需要等待任务执行结束或者出错才能返回结果, 在此期间调用者只能陷入阻塞苦苦等待, 对此, Future设计模式提供了一种凭据式的解决方案。在我们日常生活中,关…

[Android] 全球网测-版本号4.3.8

[Android] 全球网测 链接:https://pan.xunlei.com/s/VOIV5G3_UOFWnGuMQ_GlIW2OA1?pwdfrpe# 应用介绍 "全球网测"是由中国信通院产业与规划研究所自主研发的一款拥有宽带测速、上网体验和网络诊断等功能的综合测速软件。APP突出六大亮点优势&#xff1a…

判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0

要判断您的Mac当前使用的是Zsh还是Bash,可以使用以下方法: 查看默认Shell: 打开“终端”应用程序,然后输入以下命令: echo $SHELL这将显示当前默认使用的Shell。例如,如果输出是/bin/zsh,则说明您使用的是Z…

MYSQL第四次

目录 题目分析 代码实现 一、修改 Student 表中年龄(sage)字段属性,数据类型由 int 改变为 smallint 二、为 Course 表中 Cno 字段设置索引,并查看索引 三、为 SC 表建立按学号(sno)和课程号&#xff…

MATLAB | 基于Theil-Sen斜率和Mann-Kendall检验的栅格数据趋势分析

最近看到一些博主分享关于 SenMK 检验的代码,对于新手来说可能有点复杂。我们编写了一段 MATLAB 代码,能够一次性解决这些问题,简化操作流程。我们还准备了几个关于趋势检验的空间分布图,供大家参考。 一、Sens Slope和Mann-Kenda…

72.在 Vue3 中使用 OpenLayers 进行 Drag-and-Drop 拖拽文件解析并显示图形

在 WebGIS 相关的开发中,我们经常需要加载各种地理数据文件,如 GeoJSON、KML、GPX 等。而 OpenLayers 提供了 DragAndDrop 交互组件,使得我们可以通过拖拽方式加载这些文件,并将其中的地理要素渲染到地图上。 本文将详细介绍如何…

VM虚拟机安装群晖系统

下载群晖系统 https://download.csdn.net/download/hmxm6/90351935 安装群晖连接软件 synology-assistant-6.2-24922(在上面的压缩包里面) 准备好VM虚拟机 创建群晖虚拟机 打开下载下来的虚拟机 添加硬盘 选择类型 创建新的磁盘 指定容量 指定存储文件 完成硬盘添加…

瞬态分析中的时域分析与频域分析:原理、对比与应用指南

目录 一、核心概念区分 二、时域分析:时间维度直接求解 1. 基本原理 2. 关键特点 3. 典型算法 4. 应用案例 三、频域分析:频率维度的等效映射 1. 基本原理 2. 关键特点 3. 典型方法 4. 应用案例 四、对比与选择依据 1. 方法论对比 2. 工程…

基于LMStudio本地部署DeepSeek R1

DeepSeek R1 DeepSeek R1是由DeepSeek团队开发的一款高性能AI推理模型,其开源版本包括完整的DeepSeek R1 671B权重,以及基于其蒸馏出的多个小型模型。 DeepSeek R1通过蒸馏技术将推理模式迁移到更小的模型中,显著提升了这些模型的推理能力。…

2.攻防世界 ics-06

题目描述处给出提示 进入题目页面如下 发现只有报表中心能进入下一个页面 页面内容: 发现有传参 改变日期也没有变化 更改id数值页面也没有回显 猜测应该有一个特定id对应的页面即为那一处入侵者留下的数据 下面使用burp suite爆破id值 先用burp suite抓包 右键…

Linux 的使用

补充内容:EasyHPC - Linux基础入门【笔记】 文章目录 文档与教程终端命令 文档与教程 Linux 操作系统目录结构解释 - Linux迷 (linuxmi.com) 一个专注于Linux和开源技术的在线平台:It’s FOSS (itsfoss.com)理解各种命令:explainshell.com -…

机器学习-线性回归(最大似然估计)

机器学习任务可以分为两类: 一类是样本的特征向量 𝒙 和标签 𝑦 之间存在未知的函数关系𝑦 h(𝒙),另一类是条件概率𝑝(𝑦|𝒙)服从某个未知分布。最小二乘法是属于第一类&#xff0c…

数据完整性与约束的分类

一、引言 为什么需要约束?为了保证数据的完整性。 (1)数据完整性 数据完整性指的是数据的精确性和可靠性。 为了保证数据的完整性,SQL对表数据进行额外的条件限制,从以下四方面考虑: ①实体完整性&…

autMan奥特曼机器人-对接deepseek教程

一、安装插件ChatGPT 符合openai api协议的大模型均可使用此插件,包括chatgpt-4/chatgpt-3.5-turbo,可自定义服务地址和模型,指令:gpt,要求Python3.7以上,使用官方库https://github.com/openai/openai-pyt…

@[TOC](优先级队列(堆)) 【本节目标】 1. 掌握堆的概念及实现 2. 掌握 PriorityQueue 的使用

优先级队列(堆) 1. 优先级队列1.1 概念 2. 优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式2.3 堆的创建2.3.1 堆向下调整2.3.2 堆的创建2.3.3 建堆的时间复杂度 2.4 堆的插入与删除2.4.1 堆的插入2.4.2 堆的删除 2.5 用堆模拟实现优先级队列 【本节目…

【Linux网络编程】之守护进程

【Linux网络编程】之守护进程 进程组进程组的概念组长进程 会话会话的概念会话ID 控制终端控制终端的概念控制终端的作用会话、终端、bash三者的关系 前台进程与后台进程概念特点查看当前终端的后台进程前台进程与后台进程的切换 进程组 进程组的概念 当我们使用以下命令查与…

11.PPT:世界动物日【25】

目录 NO12​ NO34 NO56​ NO789视频音频​ NO10/11/12​ NO12 设计→幻灯片大小→ →全屏显示(16:9)确定调整标题占位符置于图片右侧:内容占位符与标题占位符左对齐单击右键“世界动物日1”→复制版式→大小→对齐 幻灯片大小…

Java项目: 基于SpringBoot+mybatis+maven+mysql实现的智能学习平台管理系(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismavenmysql实现的智能学习平台管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、…

Odoo免费开源ERP最佳业务实践:主生产计划概论

Odoo主生产计划(Master Production Schedule, MPS)是确定每一个具体产品在每一个具体时间段的生产计划。 文|开源智造Odoo亚太金牌服务 老杨 概述 Odoo是全球排名第一的免费开源ERP系统,以其强大的功能和模块化设计著称,适用于各…

TOTP实现Google Authenticator认证工具获取6位验证码

登录遇到Google认证怎么办? TOTP是什么?(Google Authenticator) TOTP(Time-based One-Time Password)是一种基于时间的一次性密码算法,主要用于双因素身份验证。其核心原理是通过共享密钥和时间同步生成动态密码,具体步骤如下: 共享密钥:服务端与客户端预先共享一个…