APP下载

基于LSTM的金融新闻倾向性

2018-11-17郑国伟吕学强夏红科周建设

计算机工程与设计 2018年11期
关键词:元组倾向性百度

郑国伟,吕学强,夏红科,周建设

(1.北京信息科技大学 网络文化与数字传播北京市重点实验室,北京 100101;2.首都师范大学 北京成像技术高精尖创新中心,北京 100048)

0 引 言

当前文本情感倾向性分析主要有基于统计[1,2]和基于规则[3,4]两大类。文献[1]中将情感、位置和关键词等属性作为抽取关键句的因子,然后把关键句群进行有监督和半监督的情感分类,该方法效果较好,但抽取关键句方法有待完善。文献[2]中方法利用含有否定词表、倾向性词表、程度词表的情感词表训练文本进行特征扩展,该方法相比其它方法可以获得比较好的结果,但没有考虑上下文,效果仍然可以提高。有针对性的对金融新闻文本分类在国内外研究相对较少,罗明等[3]提出了采用词汇和语义规则提取新闻文本中事件语义标注信息,并将该信息用于机器学习分类的特征,同时该方法融合了数据驱动和知识驱动在文本中的优点取得了相对较好的分类效果,但是方法过于复杂。吴江等[4]提出基于语义规则的web金融新闻文分情感分析,该方法通过机器学习方法Apriori抽取文本属性,构建情感辞典和语义规则,从而计算情感倾向,该方法复杂效果也一般。胡新辰[5]使用LSTM进行语义关系的分类,取得较好的效果。本文分析了现有的方法,提出了基于LSTM金融文本倾向性的方法:首先在前人基础之上增加百度百科查询和公司名与公司代码映射提出了公司名识别方法;然后使用doc2vec模型比较句子与标题相似度,同时综合考虑句子位置、领域动词、公司名信息提出关键句群的提取方法;接着使用word2vec和TFIDF表示句子,最后使用LSTM模型对关键句群进行分类的金融新闻倾向性分析的方法。

1 公司名识别

公司名识别是金融新闻关键句群抽取很重要的研究点,然而到目前为止,这方面的研究成果相对较少,据我们所知,对于公司名识别近几年常用方法有以下几种:哈寅晨等[6]总结公司名称的特点,分别对公司名全称和简称,设计了不同标注方式,提出基于条件随机场的双模型两次扫描策略,一次扫描识别公司名全称,第二次扫描利用之前扫描的公司名信息改善分词和优化词性标注结果,以此为基础识别公司名全称,虽然取得一定效果,但通过总结特点的方法并不能覆盖全部公司名特征,因此该方法仍需要完善。林也莉[7]提出了一种多策略学习算法,先从列表型的语料库中抽取出竞争对手公司名,然后将该结果作为种子对其它两种语料标注,最后用标注好的语料通过自动学习生成抽取模型,即boost地从其它两种类型的语料中抽取出公司名。文献[8]中利用互联网搜索和上市公司名信息进行识别,在数据测试集上正确率可达82.8%,召回率达68.93%。该方法取得了比较好的结果,但是该方法的公司名辞典没有考虑公司股票代码和百度百科查询的信息,同时有部分著名公司由于产品较多,在百度搜索返回结果里介绍产品的较多并未识别为公司名称。

根据以上对已有公司名识别方法的分析总结,大部分方法对于公司简称的识别准确率仍然比较低,有的方法中复杂规则和知识库的构建严重影响方法的应用,在文献[8]中提出的方法效果相对来说最好,通过对大量网上金融新闻文本的特征分析,本文在该文献的基础之上提出一种基于公司名简称辞典和百科查询的方法,即在原来方法的基础之上,对公司简称辞典加入公司简称和公司代码的映射,增加百度百科查询因子。该方法容易理解,实现方便,可扩展性强且对新公司名有着较好的识别效果。首先提取每个待处理文本中N元组(N-gram)集合作为候选公司名,结合基础辞典计算相似度、判断元组是否在含有六位公司代码的句子中、将每个元组进行百度百科和百度搜索进行综合评分,最后将N元组集合中得分高于阈值α的N元组作为公司名。

1.1 公司名基础辞典建立

在文献[8]中公司名库则是利用新浪财经开放接口获得公司简称,排除了人工过程中主观因素干扰,取得相对较好的效果,然而该方法仅以公司简称作为公司名库,标题或新闻文本中如果出现上市公司的公司代码,则没有识别出代码前一段字符串为公司名,实验中,我们对大量金融新闻文本研究发现,文本中有大约23.8%的公司名称会伴随着公司代码出现在金融新闻文本中,且这些公司名均出现在六位公司代码之前。本文从国内三大证券交易所获得公司代码和公司简称创建基础辞典且两者在词典里互为映射,如在基础词典中‘000027’和‘深圳能源’均代表深圳能源集团股份有限公司。

1.2 公司名称识别

首先初始化N元组集合得分,分别将N元组集合中N元组与以上所创建的基础公司名词典进行相似度匹配,得出候选公司名集合。一个N元组X和一个公司名Y相似度计算方法为

(1)

式中:α,β为权重,count为既属于X也属于Y字的统计,start表示N元祖X的以公司名Y开头,end表示N元祖X以公司名Y结尾,经过学习,其值分别设为0.4和1时取得最优结果。

将候选公司名集合进行进百度搜索和百度百科查询更新集合得分,如果百度搜索结果中出现“股票代码”,“公司”,“集团”,“企业”则被认为是一条有效的查询。如果单条百度百科查询结果中标题不为空,或者概要和基本信息中出现“股票代码”、“公司”、“集团”、“企业”,则该条查询被认为是有效查询,表1和表2分别是通过百度百科和百度搜索对关键词“百度”的查询结果。

表1 百科查询结果

根据上述两表可知,如果仅仅以表2百度搜索返回的结果来看,10条搜索数据仅有2条搜索结果证实“百度”是一家公司,结合表1百度百科查询则证明“百度”非常有可能是一家公司,结合百度百科查询和百度搜索更新候选公司名得分,互联网查询更新得分为

表2 百度搜索结果

search(X)=η*count(X∈search_list)+
γ*baike_query(x)

(2)

式中:η为百度搜索权重,count为百度搜索中有效的查询条数,γ为百度百科查询权重,baike_query为百度百科返回值。通过对数据学习,权重参数γ和η分别设为0.2和1.3取得最优解。

公司名识别总的计算方法为

name=λ*Sim+μ*search

(3)

式中:name为N元祖的最终得分,λ和μ为权重,Sim为计算N元组与公司名词典相似度,search为互联网搜索N元祖更新结果。经过学习,λ和μ分别设为1和1.12取得最佳效果。

公司名识别总的过程如下:

(1)将待处理新闻文本分解为N元组集合;

(2)在含有六位公司代码的句子中且在公司代码之前的N元组得分加1;

(3)将每个N元组依次和基础辞典进行相似度匹配更新得分;

(4)最后将候选公司名进行百度搜索和百度百科查询更新得分,得分高于α的N元组设为公司名。

2 关键句群抽取

相关文献多使用以下几种方法:在文献[9]中结合关键词,根据汉明距离计算新闻文本中每个句子与关键词的关联程度来提取关键句群,该方法虽然简单,但是抽取的效果较差。文献[10]中提出了基于改进文本情感关键句抽取的生成方法。充分利用TFIDF抽取文本的关键词,分析句子中的关键词数量,用情感词典分析句子的情感程度,采用余弦相似度计算句子与主题的相似度,从而实现情感关键句的抽取。文献[11]中使用支持向量机SVM(support vector machine)和深度学习方法递归神经网络RNN(recursive neural network)的结合,在句子和篇章两个级别上抽取特征,并在新闻和博客语料的基础之上分别对句子和篇章进行训练,综合两者的分类结果得出情感关键句。文献[8]中综合公司名、领域动词、标题相似度和语句位置4个特征的方法,该方法效果相比较其它方法比较好,但计算相似度时仅仅使用简单的匹配。根据我们对大量金融新闻文本分析发现,新闻标题承载着文本较重要信息。新闻的关键句多出现在文本的开始或者文本的结尾处,因此我们将文本开始和结束位置的句子设为有较高的权重。doc2vec是基于word2vec深度学习模型,它可以用实数值表示句子,用于句子之间相似度计算。本文提出基于深度学习框架doc2vec文本相似度匹配综合特征属性关键句群抽取方法:首先将新闻标题加入关键句群,使用doc2vec模型计算文本中句子与新闻标题相似度,同时综合句子在新闻文本中的位置、句子中是否含有公司名或者六位公司代码、是否含有领域动词信息再次更新句子集得分,得分高于阈值Φ的句子集作为新闻关键句群,如果没有句子得分高于阈值,则将得分最高的句子加入关键句群。句子位置的打分公式为

(4)

式中:Si为文本中第i个句子,abs为求绝对值,n是文本中句子总数,通过该机制,文本开始和文本结束位置的句子可以获得较高的得分,符合新闻文本中重点放在文本开始或者文本结束处的规律。句子总得分为

Score(Si)=∑Wj*Scorej(Si)i=1,2,3…n

(5)

式中:Score(Si)为句子Si的最终得分,Si为一篇新闻文本中第i个句子,j是句子打分特征集合,包含句子位置(position)、是否含有公司名(name)、是否含有领域词(field)以及句子和新闻标题的相似度(similarity),Wj为特征j得分权重,Scorej(Si)代表句子Si在特征j方面的打分。

关键句群抽取过程如下:

(1)将新闻标题加入关键句群;

(2)使用训练好的doc2vec模型进行每个句子与新闻标题的相似度计算,更新句子得分;

(3)用式(4)对候选句子位置信息更新得分,判断句子中是否有领域词信息如果含有则记为1否则为0、句子中是否含有公司名或者公司代码含有记为1否则为0,再次更新每个句子得分;

(4)根据句子的得分进行倒序排列,得分大于阈值Φ的句子作为新闻文本关键句群,如果候选关键句群中没有句子得分大于Φ,得分最高的句子加入关键句群。

3 基于LSTM关键句群分类

3.1 LSTM模型

LSTM网络模型可以学习长依赖信息,模型隐藏层之间有闭环,隐藏层之间的权重控制LSTM网络的记忆,负责记忆的调度,模型将隐藏层当前的记忆状态作为下一时刻计算的部分输入。模型将传统的RNN的输入层和隐藏层植入到记忆单元中,通过门结构管理细胞的状态,图1是LSTM门结构。

图1 LSTM单元门结构

Xt为t时刻LSTM单元的输入数据,ht是输出,C是不同时刻记忆单元的值。遗忘门决定信息的通过量,该门将Xt和上一时刻输出ht-1作为输入,输出值在0和1之间,值用来描述每个部分通过量的多少,0代表完全舍弃,1代表全部通过。ft值的计算公式为

ft=σ(wf[ht-1,xt]+bf)

(6)

式中:σ为sigmoid函数或称为“输入门层”,该结构决定应该更新的值,wf是遗忘门权重,bf为遗忘门偏执。

it=σ(wi[ht-1,xt]+bi)

(7)

(8)

(9)

sigmoid层决定当前状态的输出部分,状态通过tanh得到区间在-1和1的值,该值乘以sigmoid门的输出Ot,输出本时刻的输出值。Ot和ht的更新公式分别为

Ot=σ(wo[ht-1,xt]+bo)

(10)

ht=Ot*tanh(Ct)

(11)

式中:wo为更新输出值的权重,bo是更新输出值偏执,ht为最终输出值。

3.2 基于Word2vec和TFIDF的文本表示

Word2vec采用分布式方法表示文本[12],该模型表示文本既可以解决传统向量空间模型的高纬度稀疏问题,同时还补充了传统模型所不具备的语义表示,对短文本的分类有明显的优势[13]。TFIDF是一种词频统计方法,用于统计词或字在一类文本中的重要程度,该方法的引入解决了Word2vec无法区分词汇在文本中的重要程度问题。Word2vec和TFIDF的结合使文本向量的表示更加准确。

TFIDF是一种统计方法,其思想主要是:如果某个词或字在一类文本中出现的次数较高,同时很少出现在其它文本中,则认为该词或字具有很好的类区别效果。TFIDF即TF×IDF,TF代表词t在文档d中的概率,IDF为词t的区别类效果,即越少的文档中有词t,则IDF值越大,TF和IDF的计算公式分别为

(12)

(13)

式中:f(t,d)代表词t在文档d中出现的次数,dft为含有词t的文档数,N为所有文档数。词t在一篇文档中的权重计算公式为

tfidft=tf(t,d)*idft

(14)

Word2vec是一种深度神经网络概率模型,用来计算词向量,与传统方法相比,该模型可以充分利用上下文的语义信息。Word2vec有两种训练模型,分别为CBOW和skip-gram。本实验中采用CBOW训练模型,CBOW的表示为

p(wt|τ(wt-k,wt-k+1,…,wt+k|wt))

(15)

式中:wt是词典中的某个词,通过和wt相邻的上下窗口为k的词来预测词wt出现的概率,τ表示为将窗口左右相邻词的向量做相加运算的运算符。结合Word2vec和TFIDF,词t在一片文档中的词向量表示为

v(t)=word2vec(t)*tfidf(t)

(16)

式中:v(t)表示经两种模型加权后词向量表示,word2vec(t)为经word2vec模型训练出t的词向量,tfidf(t)是经TFIDF模型训练出t在文档中的词向量权重。句子向量的表示为使用式(16)的方法将句子中词的词向量相加。

3.3 基于LSTM关键句群倾向性分析

一篇新闻文本倾向性分析可以转化为判断其关键句群的整体倾向性,倾向性判断机制如下:用训练好的LSTM模型分别对每个关键句进行倾向性判断,如果正向的关键句数大于负向的关键句数,则该新闻文本被认为是正向的;如果负向的关键句数大于正向的关键句数,则认为新闻文本是负向的;如果正向和负向关键句数相同,则新闻文本的倾向取决于新闻标题倾向性,在对关键句进行倾向性分析时,我们使用jieba对句子进行分词并去除停用词,提高分类效果同时提高效率。新闻倾向性分析的流程如下:

(1)用LSTM模型训练已标注好的语料,直至满足各项参数要求;

(2)对第二节获得的关键句群进行分词,去除停用词;

(3)用Word2vec和TFIDF对句子进行训练,获得句子向量;

(4)使用训练好的LSTM模型对句子向量进行倾向性分类;

(5)使用倾向性判断机制分析一篇新闻文本中关键句群中的正、负向数,得出一篇新闻文本的倾向性。

4 实验结果与分析

本节主要从公司名识别、关键句群抽取和新闻文本倾向性三方面实验结果做分析。公司名识别和关键句群的评价指标主要分析其精确率、召回率,新闻文本倾向性主要从准确率分析其效果。

4.1 公司名识别结果分析

新闻标题里公司名比较多,因此本实验从实验数据中随机选择500条新闻标题,其中200条用于学习参数α的值,通过对实验数据学习,在α值设为2.3时可以取得最优效果,300条数据被等分3组进行公司名识别的验证。表3为测试结果。

表3 公司名识别效果

综合表3中3组测试数据,本文提出的公司名识别的准确率和召回率平均值可以达到83.81%和70.85%,百度百科查询加入方法中对新公司名称识别也有提高,词典中加入公司名与公司代码映射,在处理N元组时更有侧重。实验结果表明,本文提出的公司名识别方法效果更优且扩展性更好。

4.2 关键句群抽取结果分析

4.2.1 参数学习

实验中我们使用网格搜索方法学习各个特征属性权重Wposition、Wname、Wfield、Wsimilarity的值,设置步长为0.01,我们对人工标注好的500篇新闻文本进行训练,300篇用于测试,Wj均初始化为0.25,在满足0

图2 准确率和召回率变化

如图2所示,acc为准确率,recall代表召回率,随着Φ值的变化,准确率和召回率有着相反的变化,在Φ值取0.58时可以取得较好的效果,实验中我们把Φ值设为0.58。

4.2.2 结果分析

将900篇标注好的文本进行关键句群抽取测试,数据被等分为3组,表4为测试结果。

表4 关键句群抽取结果

根据对表4的各项指标分析,关键句群抽取效果比较好,平均准确率和召回率分别可以达到74.38%和71.75%。表中第一组数据中准确率和召回率均为最高值,其它两组实验结果相差不大,分析原因,由于新闻文本长度不同,所包含句子的条数不同,抽取结果也会有差异,实验结果表明,本文提出的关键句群抽取方法有效。

4.3 新闻倾向性结果分析

对新闻文本和其关键句群进行倾向性标注,4000篇语料中,3100篇用于训练,900篇新闻文本等分为3组作为测试数据。在相同实验数据情况下,本文方法分别针对SVM、CNN以及文献[4]中的SAFT-SR方法进行实验效果比对,其中SVM采用线性核函数以及梯度下降算法选取其参数,CNN模型采用含有128个神经元的一层卷积层以及含有128个神经元的一层池化层和两个神经元的全连接softmax层,本文分类模型则采用含有128个神经元的LSTM层和一个含有2个全连接的softmax层,分类结果见表5。

表5 不同分类方法的测试结果

表5中,分析得出,相比对照的方法,本文提出的新闻文本倾向性分析取得最高的准确率,本实验方法和CNN均为深度学习模型,其效果明显高于传统机器学习模型SVM,SAFT-SR方法基于复杂的语义规则,扩展性较差,该方法的准确率仅比SVM模型稍微高点,远低于深度学习模型。在对短文本分类时,LSTM性能优于CNN模型,在3组测试数据中本文实验方法准确率比CNN模型平均高3个百分点,比传统机器学习SVM分类方法高出8.79个百分点,同时比SAFT-SR方法高出8.7个百分点。本实验方法准确率高于所有对比方法,验证了本方法的有效性。

5 结束语

针对金融新闻的倾向性判定,本文提出了基于LSTM模型的判定方法。公司名识别、关键句群抽取和文本倾向性判断均取得较好的效果。关键句群抽取结果对新闻文本倾向性分析准确率有着关键的作用,抽取效果的好坏直接影响文本分类的效果,虽然已经取得不错的效果,但仍然有不小的提升空间,下一步的研究方向可以放在改善抽取关键句群的效果上。公司名识别已经取得了较高的准确率,如果下一步可以将深度学习用于公司名识别,这将是一个不错的尝试。

猜你喜欢

元组倾向性百度
基于模糊数学法的阿舍勒铜矿深部岩体岩爆倾向性预测
Python核心语法
Robust adaptive UKF based on SVR for inertial based integrated navigation
海量数据上有效的top-kSkyline查询算法*
基于减少检索的负表约束优化算法
百度年度热搜榜
关于医患冲突报道的倾向性分析——以“湘潭产妇死亡案”为例
“没准儿”“不一定”“不见得”和“说不定”的语义倾向性和主观性差异
百度医生
百度“放卫星”,有没有可能?