一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于推特和历史股价信息的股价趋势预测方法及系统与流程

2023-02-10 14:36:27 来源:中国专利 TAG:


1.本发明属于人工智能技术领域,涉及一种基于推特信息和历史股价的股票趋势预测方法及系统。


背景技术:

2.已有研究表明,社交平台上大众的评论与发言反映了大众对股市的看法,一定程度上反映出投资者的决策倾向。社交平台用户可以在各大社交平台随意地发表自己的意见与看法,其中最具代表性的平台就是推特。2020年4月推特的季度报表显示推特每日活跃用户量为1.26亿。因此在数目庞大的公共信息中,推特数据扮演了重要的角色,其囊括了许多有价值的信息。
3.而近年来,已有许多研究者将大众情感倾向作为预测股价走势预测任务的输入特征。现有的机器学习方法能够获取社交平台文本数据中的语义及情感信息,通过将推特上的大众评论信息纳入股市市场波动因素将会对投资者的投资决策和完善市场建设等方面具有理论和现实意义。目前根据推特或新闻文本进行股价走势预测的方法基本将文本用情感分析的方法为每天的舆论进行标注,也就是把不同的舆论文本独立来看,忽略了其内在联系,比如推特独有的社交平台的交互特性。


技术实现要素:

4.在以往的研究和技术应用中,tf-idf算法是用来提取文本关键词的,而node2vec多用于已有的图结构中的嵌入编码工作。在本发明中为了提取推特文本中的不同信息,融合了这两种不同算法进行提取:利用改进的tf-idf算法提取文本中的关键词并构建出推特节点关系图,利用node2vec来提取其推特节点的潜在表示。而在这两者的融合运用上,考虑到node2vec对目标图中的节点一视同仁,在生成游走序列后会对所有节点进行编码,而实际上在推特节点图中并不需要对关键词节点进行编码,这也是本发明需要克服的技术难点。
5.为了解决现有技术存在的只关注文本内情感倾向的不足,本发明的目的是提供一种基于推特和历史股价信息的股价趋势预测方法。通过提取推特数据中的语义信息、情感信息以及交互过程中的潜在信息,有效获得可能对股价趋势造成影响的信息。
6.具体步骤包括如下:
7.步骤(1)、收集目标股票相关的推特数据和历史股价信息,根据价格数据设置股票涨跌标签,并进行初步的数据处理;
8.步骤(2)、利用改进的tf-idf算法为分词后的推特文本提取关键词并打分;
9.传统的tf-idf算法由于文本长度偏差而影响不同推特中关键词的得分,从而影响后续的嵌入工作。因此,所述对tf-idf算法的改进主要是将原算法式子分子中文本中包含的词汇频度改为了文本中包含的词汇个数。
10.原本的tf-idf算法式子为其中tnidf
i,j
表示第i个词在第j个文本中的得分,n
i,j
是第i个词在第j个文本中出现的次数,k是第j个文本中的总词汇量,d为语料库中的文件总数,ti为第i个词汇,dj为第j个文本,j:ti∈dj表示包含词汇ti的文本数量。
11.改进后的算法式子为其中tnidf
e,j
记作推特关键词e在所处推特文本tj中的得分,t为选用的推特的总量,j表示推特文本序列号,n
e,j
表示第j个推特中关键词e的个数,tj表示第j个推特文本的内容。
12.步骤(3)、利用提取的关键词和推特之间的交互关系构建推特节点关系图g=(t,e,w)并利用node2vec将节点图中的推特映射到低维空间向量,获得与目标股票相关的推特嵌入向量。
13.其中,t表示本发明使用的推特合集,e和w分别表示步骤(2)中获得的推特的关键词合集及对应的得分。
14.步骤(4)、通过bert提取推特中的情感因素,并根据表达的情感强弱为每条文本分配相应的分值;
15.步骤(5)、将步骤(4)获得的推特情感得分和步骤(3)中提取得到的推特嵌入向量以及步骤(1)中获得的股票涨跌标签一起投入深度学习模型中进行训练,预测股价。
16.本发明中,所述步骤(1)的具体步骤包括:
17.步骤(11)、选定目标股票及待研究的时间区域,获取目标股票在这段时间中的代码、具体日期、开盘价、收盘价、最高价、最低价、成交量;将目标时间段内目标股票的价格数据计算股票的上涨或下跌变化趋势设置为标签;
18.步骤(12)、选定目标股票的检索关键词,利用推特官方的标签、关键词和推特间回复关系收集与股票相关的推特数据;
19.步骤(13)、对步骤(11)和步骤(12)获得的数据进行分词和名词短语提取。
20.本发明中,所述步骤(2)的具体内容包括:
21.本发明使用tf-idf算法的一个微小变化来提取推特的关键元素并计算它们的得分。tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文章中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降;与传统的tf-idf算法相比,所述改进的tf-idf算法将式子分子中的文本中包含的词汇频度改成了文本中包含的词汇个数。推特文本可以有多个词性词,包括动词、形容词、名词甚至专有名词。实际上,在推特分类中,形容词和名词对内容的贡献最大,因此本发明选择它们作为关键词的候选词。在推特上提到相同的名词或短语,往往是在讨论同一件事。因为大部分的推特数据都很短,同样的文字很难出现在同一条推特上,传统的tf-idf算法由于文本长度偏差而影响不同推特中关键词的得分。因此,本发明不考虑单个推特文本的长度。将tnidf
e,j
记作推特关键词e在所处推特文本tj中的得分,t为本发明选用的推特的总量,那么其中分母部分反映了包含关键词e的推特的数量,最终得分的范围为(0,1);选取每条推特得分前50%的关键词作为该推特的最终关键词,若该推特的关键词少于3个则选择全部的关键词作为最终关键词;
22.所述j表示推特文本序列号,n
e,j
表示第j个推特中关键词e的个数,tj表示第j个推特文本的内容。
23.本发明中,所述步骤(3)的具体步骤包括:
24.步骤(31)、通过步骤(2)得到推特的关键词合集e和对应的得分w,再联合推特合集t构建推特节点图g=(t,e,w),将推特节点和其中包含的关键词节点分别进行连接,并对连接的边赋予对应的权重即该推特中该关键词的得分。
25.步骤(32)、对于推特之间存在的交互关系也应该被反映在推特节点图中,利用推特数据中的可以区分推特的唯一id、是否为回复推文、回复原推特id这三个属性来提取推特之间的交互关系,对于有交互关系如评论、回复等的推特赋予相连的边,并设置边权重为1。
26.步骤(33)、得到推特节点图后,可以通过node2vec来对图中的节点进行嵌入编码,并将节点图中的推特映射到低维空间向量。node2vec算法综合考虑了深度优先游走和广度优先游走两种游走策略,引入了两个参数p和q来控制选择随机游走策略的概率。由于本发明只需要推特文本的嵌入向量,因此对于推特节点图中不同的节点类型(推特、关键词)区别对待,在生成游走序列时只考虑推特节点。
27.本发明中,所述步骤(4)的具体步骤包括:
28.利用bert来提取推特文本中的情感倾向并为其分配表示情感强弱的分值。所述bert是一种基于注意模型的机制,在一些自然语言处理任务中获得较好的结果。预先训练好的bert模型针对特定的任务(如文本分类)进行了微调,以便为特定场景创建最优先的模型。它使用transformers作为主要框架,并采用与传统注意模型类似的编解码器架构,可以更彻底地捕捉语句中的双向关系。
29.对bert进行微调训练:利用已有的标记好情感分值的语料库对bert模型进行微调,将其设置为针对情感分析任务的模型并进行训练,情感分值范围为(0,1),越接近0表示文本所表达的负向情感越多,越接近1表示文本所表达的正向情感越多;
30.通过bert为目标股票的每条推特文本分配情感得分;将推特数据文本输入到模型,得到每条推特文本的情感得分。
31.本发明中,所述步骤(5)的具体步骤包括:
32.步骤(51)、将步骤(3)中得到的推特嵌入向量和步骤(4)获得的推特情感得分进行合并,形成包含语义信息、交互信息以及情感信息的推特表示并对目标股票信息进行归一化。
33.所述归一化是指为了后续计算更加方便通过线性变换将股票数据映射到[0,1]的范围。
[0034]
步骤(52)、构建由lstm和自我注意力attention机制组成的深度学习模型,将由步骤(1)-(4)得到的目标股票相关的推特嵌入向量、推特情感得分以及股票涨跌标签输入建立好的深度学习模型中进行训练测试,并获得股价预测结果。
[0035]
本发明还提供了一种实现上述股票趋势预测方法的系统,所述系统包括:股票选择模块,股票实际价格展示模块,股票预测模块,股票预测结果展示模块。
[0036]
所述股票选择模块的功能为选择相应的目标公司;
[0037]
所述股票实际价格展示模块功能为显示所选股票的开盘价、收盘价、最高价、最低
价和交易量;
[0038]
所述股票预测模块的功能是利用所选股票相关的推特数据和历史股价进行股票趋势预测;
[0039]
所述股票预测结果展示模块的功能是以不同颜色进行展示股票预测结果。
[0040]
本发明的有益效果包括:本发明针对股票市场变化趋势预测任务不单单考虑了股票历史价格的影响,也将能够反映市场的社交平台舆论:推特数据纳入考虑。本发明通过提取推特文本中的语义信息和交互信息构建了推特节点图,并通过图嵌入编码的方式获取推特的潜在表示。另外计算推特的情感得分将其和由推特节点图得到的潜在表示输入到深度学习模型当中进行股票变化趋势预测。
[0041]
本发明可以广泛应用于股票预测应用领域,可以提高预测短时内股票涨跌的准确率。
[0042]
即本发明方法通过提取社交平台上的舆论信息,并对文本语义和情感因素进行挖掘分析,有效获得对股价趋势有影响的信息,证明了舆论信息对股市波动的影响力,使得除了历史股价信息之外的信息用于股票趋势预测任务,使得预测能够更为准确。与现有的股价预测方法相比,本发明所述方法通过构建推特节点网络,能够提取推特文本中的语义特征和交互特征,并用目前在自然语言处理领域效果突出的bert模型提取其中的情感特征补充表示每条推特,并辅以历史股价信息来预测未来的股价涨跌趋势。
附图说明
[0043]
图1为本发明推特和历史股价的股票趋势预测方法的流程图。
[0044]
图2为本发明实施例提供的一个推特节点图的例子。
[0045]
图3为本发明采用的深度学习模型。
[0046]
图4为本发明股票趋势预测系统结构图
具体实施方式
[0047]
结合以下具体实施例和附图,对本发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
[0048]
实施例
[0049]
如图1所示,本发明提出的基于推特和历史股价的股票趋势预测方法,包括以下步骤:
[0050]
步骤(1)、收集目标股票相关的推特数据和历史股价信息,根据价格数据设置股票涨跌标签,并进行数据初步处理。
[0051]
步骤(2)、利用改进的tf-idf算法为分词后的推特文本提取关键词并打分;
[0052]
步骤(3)、利用提取的关键词和推特之间的交互关系构建推特节点关系图g=(t,e,w)并利用node2vec将节点图中的推特映射到低维空间向量,获得与目标股票相关的推特嵌入向量;
[0053]
其中,t表示本发明使用的推特合集,e和w分别表示步骤(2)中获得的推特的关键词合集及对应的得分。
[0054]
步骤(4)、通过bert提取推特中的情感因素,并根据表达的情感强弱为每条文本分配相应的分值;
[0055]
步骤(5)、将步骤(4)获得的推特情感得分和步骤(3)中提取得到的推特嵌入向量以及步骤(1)中获得的股票涨跌标签一起投入深度学习模型中进行训练,预测股价。
[0056]
所述步骤(1)的具体步骤包括:
[0057]
步骤(11)、获取目标股票相关的若干推特数据包括:根据股票的成交量、股票上市的时间区间以及讨论程度来确定股票对象,并且获取目标股票的相关数据。首先应该考虑股票在研究时间范围内是否有有效数据、足够的推特讨论文本以及股票收益情况排名,以保证研究的股票存在较高的关注度,因而当推特等社交平台上大众的情感倾向有所变化时,其能够反映出投资者的投资心理或对投资者的投资决策产生影响。获取的股票信息包括股票代码简称、日期、开盘价、收盘价、最高价、最低价、成交量。根据目标时间段内目标股票的价格数据计算股票的上涨或下跌变化趋势,并将其作为标签。
[0058]
步骤(12)、根据目标股票生成推特检索关键词,比如股票名、公司相关产品名称等。提取的推特文本相关属性包括:可以区分推特的唯一id、发布时间、推特文本、用户名、用户id、是否为回复推文、回复原推特id、回复原推特用户id、点赞数、点踩数、转推数。另外,对推特文本数据做分词、名词短语标注等处理;
[0059]
步骤(13)、对步骤(11)和步骤(12)获得的数据进行分词和名词短语提取。
[0060]
所述步骤(2)的具体步骤包括:
[0061]
统计推特文本中形容词以及名词的数量,将这两种类型的词作为推特的关键词。统计目标股票相关的推特总量。不考虑单个推特文本的长度,对tf-idf算法进行改进,将tnidf
e,j
记作推特关键词e在所处推特文本tj中的得分,t为本发明选用的推特的总量,那么中的得分,t为本发明选用的推特的总量,那么其中分母部分反映了包含关键词e的推特的数量,最终得分的范围为(0,1)。选取每条推特得分前50%的关键词作为该推特的最终关键词,若该推特的关键词少于3个则选择全部的关键词作为最终关键词;
[0062]
所述j表示推特文本序列号,n
e,j
表示第j个推特中关键词e的个数,tj表示第j个推特文本的内容。
[0063]
所述步骤(3)的具体步骤包括:
[0064]
步骤(31)、利用步骤(2)中获得的每条推特的关键词合集e以及相应的得分w,联合推特合集t构建推特节点图g=(t,e,w)。将推特节点和其中包含的关键词节点分别进行连接,连接的每条边的权重即该推特中该关键词的得分。
[0065]
步骤(32)、利用推特数据中的可以区分推特的唯一id、是否为回复推文、回复原推特id这三个属性来提取推特之间的回复关系,将有回复关系的推特进行相连,由于回复关系是推特之间最直接的联系,因此赋予边权重为1。
[0066]
如图2所示为例,图2是一个含有三条推特、若干个关键词和他们之间的关系的推特节点关系图g。图中每条推特包含三种属性:用户名、推特文本内容和是否为回复推特(由o和t标识,o表示为原推特,t表示是一条回复推特);所述推特关系节点图中不同节点之间的边的类型有两种,分别为推特间的回复关系(rt)和推特与关键词chargers、laptops、iphone、batteries、apple、3months等之间的连接关系;rt边被赋予边权重1。
[0067]
步骤(33)、利用node2vec算法来对推特节点图中的节点进行嵌入编码,并将节点图中的推特映射到低维空间向量。具体过程是利用有偏的随机游走算法生成关于节点的游走序列,再将序列看做是自然语言处理任务中文本上下文,以做词嵌入的方法为节点生成嵌入向量。由于推特节点图中有不同的两种节点,包括推特节点和关键词节点,而本发明只需要对推特节点进行嵌入编码,但传统的node2vec算法对所有的节点一视同仁,因此需要在算法中添加一步对节点类型进行判断,得到游走序列的详细过程如算法1所示。
[0068]
算法1推特节点图中的node2vec
[0069][0070]
所述算法1中的输入g表示推特节点图,t为推特节点集合,e为关键词节点集合,w为图中的边权集合,u为开始节点、l为总游走长度。所述算法输出中的walk为推特节点序列。所述算法内容中的temp为临时存储节点序列,walk_iter为当前游走长度,curr为当前游走所在节点,v
curr
为curr在图g中的一系列邻居节点。p为与当前节点curr相连的各个节点的游走概率,由参数p和q和边权w控制,具体的计算方法如下:
[0071]
设t为curr的前序节点,x为curr实际上游走的后序节点,那么node2vec设置的游走偏移可通过来计算,其中d
tx
为t和x两个节点的跳数距离。那么对于当前节点curr来说后序节点是x的游走概率p则可用计算,其中ω
currx
是节点curr和节点x相连的边的权重,z是一个常量。
[0072]
本发明中,所述步骤(4)的具体步骤包括:
[0073]
步骤(41)、对bert进行微调训练。利用已有的标记好情感分值的语料库对bert模
型进行微调,将其设置为针对情感分析任务的模型并进行训练,情感分值范围为(0,1),越接近0表示文本所表达的负向情感越多,相对的,越接近1表示文本所表达的正向情感越多。
[0074]
步骤(42)、通过bert为目标股票的每条推特文本分配情感得分。将推特数据文本输入到模型,得到每条推特文本的情感得分。
[0075]
本发明中,所述步骤(5)的具体步骤包括:
[0076]
步骤(51)、将步骤(3)中得到的推特嵌入向量和步骤(4)获得的推特情感得分进行合并,形成包含语义信息、交互信息以及情感信息的推特表示并对目标股票信息进行归一化。
[0077]
所述归一化是指为了后续计算更加方便通过线性变换将股票数据映射到[0,1]的范围。
[0078]
步骤(52)、构建如图3所示的由自我注意力机制(attention机制)和lstm组成的深度学习模型。自我注意机制最开始应用于句子嵌入任务。它考虑单个句子中的单词和短语,并给出不同的注意权重来生成最终向量。本发明实施例将一天中的多条单条推文视为文字,组成一个“句子”,代表某个股票在一天内的推特情况。假设每个推特向量的大小是u,n是一天中与股票相关的推特数。同一天股票s的推特向量t
s,i
组成初始向量t,其大小为n
×
u,表示该股票在推特上的情况:t=(t
s,1
,t
s,2
,

,t
s,n
)。w
s1
是具有形状da×
u的权重矩阵,w
s2
是从具有大小da的参数向量扩展而来的矩阵,并且形状是r
×
da。其中,da是可以任意设置的超参数,r是从原始向量t中提取的不同分量的数目,以便注意力机制可以聚焦于各个部分。具体过程是首先将初始向量t送入自我注意层,然后生成权重矩阵a=softmax(w
s2
tanh(w
s1
t)),最后将初始向量传递给m=at,m为最终向量矩阵,a为权重矩阵。
[0079]
本发明实施例中使用的lstm为一种特殊的循环神经网络,它在算法当中加入了cell来判断信息是否需要被记住。其中用到了三种门分别为输入门、遗忘门和输出门,只有符合算法认证的信息才会被记住留下。遗忘门的模型为f
t
=σ(wf·
[h
t-1
,x
t
] bf),表示t时刻的节点对t-1时刻cell记忆的选择权重,其中σ为sigmoid激活函数,bf为偏置项,wf为参数,h
t-1
表示t-1节点的隐藏状态信息。输入门的模型为i
t
=σ(wi·
[h
t-1
,x
t
] bi),表示t时刻的节点对当前节点信息的选择权重,其中σ为sigmoid激活函数,bi为输入门的偏置项,wi为参数,x
t
表示t时刻的事件输入信息。当前节点的输入信息其中tanh表示tanh激活函数,为偏置项,为输入信息的参数矩阵。
[0080]
将这一方法应用于现实的推特数据和股票数据中,如下表所示,本方法在真实世界数据集中可以应用,并且能够达到不错的效果。
[0081][0082]
在上表中的模型分别是:average bow-lstm,利用平均词袋模型进行推特向量嵌
入,然后利用lstm进行预测任务;average bow-cnn,采用和前者相同的嵌入方式,但采用cnn进行预测任务;doc2vec-lstm,通过doc2vec算法进行推特向量嵌入,然后利用lstm进行预测;doc2vec-cnn采用和前者相同的嵌入方法,然后利用cnn进行预测;stocknet是一种最先进的可变自动编码器,直接从数据中学习相关信息来进行预测;te 是本发明提出的全装备模型,采用tweets节点模型;te-采用了本发明的方法,但没有由bert生成的情感属性。表中加粗部分是每只股票在应用不同模型算法的情况下对应的最高准确率。
[0083]
首先,从目前普遍使用的两种嵌入模型:平均词袋模型和doc2vec的实验结果来看,绝大多数股票能够达到50%以上的准确率,这意味着推特文本信息和历史股价信息的结合对股票预测任务有积极的影响。
[0084]
将表中的前两行与第三行和第四行进行比较,可以看出平均词袋嵌入模型可以提供更好的基准。平均词袋嵌入模型比doc2vec更好的原因可能是后者是利用句子之间的语义关系进行编码,而推特数据不像一篇文章可以形成一个上下文整体,所以平均的词袋模型可以更好地指示每条推特的意思。其次,通过比较本发明模型和上表中所述的基于其他方法的模型的结果,可以知道本发明模型在每个股票中的表现都优于或符合基准线,这证明了本发明模型的优越性。具体来说,本发明的全装备模型分别比$aapl、$spx、$pep和$amzn的最佳基线结果提高了9.5%、6.97%、4.65%、6.98%。此外,本发明模型的精确度与doc2vec cnn在$wmt上的一致。
[0085]
前四个模型从推特数据的文本中提取语义信息,而不考虑用户交互产生的推特之间的额外关系。这一实验结果还表明,用户之间的交互将产生仅通过分析文本语义无法获得的知识。因此,本发明嵌入方法考虑了不同的知识来源,能够覆盖更多的市场信息。
[0086]
本发明的保护内容不局限于以上实施例。在不背离本发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献