本发明涉及人工智能技术领域,更具体地说,它涉及一种方面级情感分类模型。
背景技术:
方面级情感分类是细粒度的情感分析任务,也是nlp的基本任务。先前是通过基于情感词典或手工特征的方法来解决该任务。基于情感词典的方法是利用情感词典的先验信息识别文本所表达的情感,因情感词典大小有限且忽略语义信息,从而模型的分类往往不准确。基于手工特征的方法是通过研究者设计的特征,利用支持向量机等机器学习方法作为分类器,对文本情感极性进行分类。在一个数据集上设计的特征因泛化能力不强,往往不能直接应用到另一个数据集上,需要重新设计新的特征,这就需要大量的人工。面对日益增长的文本数据分析需求,先前的方法难以高效的应对。于是研究者开始提出自动化的方法来解决方面级情感分类问题。
近年来,基于神经网络的方面级情感分类已成为主流。例如,dong等人提出的adarnn根据上下文和它们之间的句法关系将词的情感自适应地传递到给定方面。这类依赖句法解析的模型对有噪声的数据(例如,twitter),容易受到句法解析错误的影响。相比之下,因序列处理能力突出的循环神经网络在情感分析也被广泛应用,并证明了其有效性。例如,tang等人提出tc-lstm模型利用两个长短时记忆网络lstm分别对给定方面与其左侧上下文和右侧上下文进行建模。基于神经网络的方法能够自动学习特征进行情感极性分类,对文本中的每个词做同样的处理,但文本中只有一部分词与给定方面的情感表达有关,无法区分词之间的重要性。例如semeval2014restaurant数据集的数据:
“fromthebeginning,weweremetbyfriendlystaffmembers,andtheconvenientparkingatchelseapiersmadeiteasyforustogettotheboat.”
上下文中“met”与给定方面“staffmembers”的情感极性毫无关系,而“friendly”与给定方面的情感极性紧密相关。上述基于神经网络的模型无法区分上下文中词对给定方面的重要性,于是注意力机制被引入了神经网络模型。
在神经网络模型中引入注意力机制取得了较好的分类效果,并得到了广泛应用。神经网络中的注意力机制能够自动识别源句子中给定方面的相关信息,直接提高神经网络模型提取特征的质量。例如,zeng等人提出基于注意力的lstm模型,利用注意力机制进一步获得文本特征,分析不同上下文词的权重。wang等人提出将方面表示与词嵌入拼接,并在计算注意力时加入方面表示进行建模。以及li等人利用双向lstm和多注意力层进行方面级情感分类。因此,注意力机制对于方面级情感分类任务甚至实际应用是必不可少的。
基于注意力的神经网络模型在方面级情感分类任务中基本令人满意,但还有进一步提高的可能。这些模型通常是将注意力机制与循环神经网络相结合(例如,lstm),但它不能并行处理数据。于是vaswani等人提出多头注意力模型能够并行处理数据且效果很好。上述方法通过生成给定方面的表示来提高模型的准确率,可见给定方面对于情感分类是相当重要的。只有通过给定方面与上下文相互协调才能提高模型分类的准确率。
技术实现要素:
本发明目的在于针对上述现有技术的不足,提出一种方面级情感分类模型。
本发明的上述技术目的是通过以下技术方案得以实现的:
一种方面级情感分类模型,包括嵌入层、神经网络层、注意力层和输出层;
嵌入层用于将句子转化为对应的词向量表示;
神经网络层用于将句子的词向量表示转化为相应的隐藏状态序列;
注意力层用于从句子的隐藏状态中捕获对于识别给定方面的情感极性来说重要的信息;
输出层用于对注意力层的输出进行变化,输出句子对于给定方面表达的情感分类。
其中,包括以下分类方法:
s1:给定一个句子对(s,a),其中m个词组成的方面词a={t1,t2,…,tm}是n个词组成的句子s={c1,c2,…,cn}的子序列;
s2:对于给定的句子对(s,a),将整个句子的每个词在预训练词向量矩阵中找到对应的词向量,然后将这些词向量按照句子中词的顺序组合起来形成对应的词向量矩阵
s3:将s2得到的词向量矩阵输入到神经网络层,神经网络层将词向量读入,接着编码词向量,获得相应的隐藏状态:
其中,词向量wci读入神经网络层后,输出隐藏状态
s4:经s3处理后,获得隐藏状态序列
其中,s3过程中,神经网络层选择门控循环单元gru,其详细的计算过程详细如下:
gru由重置门和更新门两部分构成,更新门用于决定删除和添加的内容,重置门用于决定遗忘以前信息的程度,计算过程如下:
其中,
其中,s4过程中,计算过程如下:
其中,在注意力层
注意力层的输出传入输出层,通过分类器识别句子对于给定方面标的情感极性是积极、中性或消极,计算过程如下:
(15)将句子的加权表示r进行线性变换,将其长度转换为类别数|c|,softmax函数将其归一化为0-1的条件概率分布
其中,包括以下分类方法:
t1:给定一个句子对(s,a),其中m个词组成的方面词a={t1,t2,…,tm}是n个词组成的句子s={c1,c2,…,cn}的子序列;
t2:对于给定的句子对(s,a),嵌入层将给定方面与句子分别在预训练词向量矩阵中找到对应的词向量,形成句子的词向量矩阵
其中,
生成句子隐藏状态序列
t4:将神经网络层的输出hc,ht,
其中,αi表示句子中第i个隐藏状态的注意力权重,α为评分函数,计算过程如下:
给定方面的注意力权重计算过程如下:
最终得到句子与给定方面隐藏状态的加权表示
其中,将注意力层的rc与rt输入注意力层拼接为r,通过softmax分类器进行分类,计算过程如下:
r=[rc;rt](25)
将句子的加权表示r进行线性变换,将其长度转换为类别数|c|,softmax函数将其归一化为0-1的条件概率分布
其中,包括以下分类方法:
u1:给定一个句子对(s,a),其中m个词组成的方面词a={t1,t2,…,tm}是n个词组成的句子s={c1,c2,…,cn}的子序列;
u2:对于给定的句子对(s,a),嵌入层将给定方面与句子分别在预训练词向量矩阵中找到对应的词向量,形成句子的词向量矩阵
u3:对给定方面词向量矩阵与句子词向量矩阵进行编码,提取给定方面与句子的特征;将句子词向量矩阵x输入多头自注意力mhsa中,同时将句子词向量矩阵和给定方面句词向量矩阵输入mha中,然后对mhsa和mha中的输出分别进行卷积运算;
u4:经u3处理后,利用方面词隐藏状态和上下文隐藏状态的平均池化来监督方面词的注意力权重生成,上下文隐藏状态和方面词隐藏状态的平均池化来监督上下文的注意力权重生成。
其中,u3过程中,注意力机制的计算可以分为两个部分:第一部分,根据query和key来计算注意权重系数,首先根据query和key计算它们之间的相似性或者相关性,再对其原始分值进行归一化处理;第二部分,根据权重系数对value进行加权求和;注意力分布为:
attention(k,q)=softmax(α(k,q))(27)
其中,α表示计算两者相似性或相关度的评分函数,具体计算如下:
α=ktanh([ki;qj]·wa)(28)
特定的参数设置中,head为8,head之间参数不共享,将获得的不同表示连接在一起,通过线性变换获得mha的最终结果,计算过程如下:
headi=attention(k,q)(29)
其中,wo是需要学习的权重矩阵;
句子词嵌入矩阵对应q和k的值计算过程如下:
为加强上下文与方面词之间的交互,将上下文与方面词输入mha中处理,这时,q与k的值不同,上下文为k,方面词为q,计算过程如下:
多头注意力机制输出后进行卷积运算,保证每个位置的隐藏维度最终都保持相同大小;卷积部分的完整连接层有两层密集层,第一层是relu激活函数,第二层是线性激活函数,通过卷积核大小为1的卷积运算生成相应的权重;使用卷积运算对其进行转换,计算过程如下:
conv(h)=relu(h*w1+b1)*w2+b2(35)
其中,*表示卷积运算,卷积运算中的权重
通过隐藏层的处理,获得了有利于该任务的隐藏状态。
其中,u4过程中,计算过程如下:
将注意力层的rc与rt输入注意力层拼接为r,通过softmax分类器进行分类,计算过程如下:
r=[rc;rt](44)
上式将句子的加权表示r进行线性变换,将其长度转换为类别数|c|,softmax函数将其归一化为0-1的条件概率分布
一种基于多头注意力的方面级情感分类模型,基于上述的方面级情感分类模型,包括嵌入层、隐藏层、交互层和输出层;
隐藏层与神经网络层作用相同;交互层与注意力层作用相同;
嵌入层是利用glove词嵌入将句子和给定方面转化为词向量表示形式;
隐藏层是将句子的词向量利用多头自注意力捕获上下文内部联系,对给定方面的词向量利用多头注意力捕获句子与给定方面间联系,再分别利用卷积运算保证每个位置的隐藏维度最终都保持相同大小,获得隐藏层最终的隐藏状态;
交互层是句子与给定方面交互建模,分析不同词对于给定方面的情感极性的重要性,利用方面词隐藏状态和上下文隐藏状态的平均池化来监督方面词的注意力权重生成,上下文隐藏状态和方面词隐藏状态的平均池化来监督上下文的注意力权重生成;
输出层是将交互层的输出进行拼接后输入到函数中,得到情感极性的概率分布,最大概率为最终结果。
综上所述,本发明具有以下有益效果:
(1)本发明提出的方面级情感分类模型利用多头注意力机制与卷积运算获取隐藏状态,利用多头注意机制对上下文和方面词进行建模,增强了方面信息与句子的关联度,提高了模型对给定方面的情感极性分类;
(2)本发明提出的方面级情感分类模型在不同领域数据集上的分类准确率和macro-f1值均有不同程度的提高,且达到了较高的水平。
附图说明
图1是本发明实施例的scbma模型框架图;
图2是本发明实施例的基于注意力的方面级情感分类模型框架图;
图3是本发明图lstm(左)与gru(右)模型结构对比图;
图4是本发明实施例的基于交互注意力的方面级情感分类模型框架的结构示意图;
图5是本发明实施例的多头注意力机制结构示意图。
具体实施方式
本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包括”为一开放式用语,故应解释成“包括但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。
假设给定一个句子对(s,a),其中方面词是由n个词组成的句子的序列,模型的目的是预测句子s关于给定方面a的情感极性是积极、消极或中性。基于多头注意力的方面级情感分类模型(scbma)主要分为四层:嵌入层、隐藏层、交互层和输出层,其模型结构如图1所示。嵌入层是利用glove词嵌入将句子和给定方面转化为词向量表示形式。隐藏层是将句子的词向量利用多头自注意力捕获上下文内部联系,对给定方面的词向量利用多头注意力捕获句子与给定方面间联系,再分别利用卷积运算保证每个位置的隐藏维度最终都保持相同大小,获得隐藏层最终的隐藏状态。交互层是句子与给定方面交互建模,分析不同词对于给定方面的情感极性的重要性。利用方面词隐藏状态和上下文隐藏状态的平均池化来监督方面词的注意力权重生成,上下文隐藏状态和方面词隐藏状态的平均池化来监督上下文的注意力权重生成。输出层是将交互层的输出进行拼接后输入到softmax函数中,模型得到情感极性的概率分布,最大概率为最终结果。
基于注意力的方面级情感分类模型scba(sentimentclassifierbasedonattention)是本申请提出的第一个基线模型,该模型是基于注意力的神经网络模型的基础版本,通过该模型进而了解交互注意力的方面级情感分类模型以及多注意力头的方面级情感分类模型。scba模型与交互注意力和多注意力模型不同的是,它是直接将整个句子输入模型进行编码,但未对给定方面进行处理。严格来说,scba模型可以看做句子级的情感分类模型。scba模型如图2所示。
从图2可以看出scba模型结构由嵌入层、神经网络层、注意力层、输出层四部分构成。假设输入为一个句子和给定方面,嵌入层的作用是将句子转化为对应的词向量表示;神经网络层的作用是将句子的词向量表示转化为相应的隐藏状态序列;注意力层的作用是从句子的隐藏状态中捕获对于识别给定方面的情感极性来说重要的信息。输出层的作用是对注意力层的输出进行变换,通过softmax函数输出句子对于给定方面表达的情感极性是积极、消极还是中性。下面对scba模型按照嵌入层、神经网络层、注意力层、输出层的顺序进行详细描述。
首先给定一个句子对(s,a),其中m个词组成的方面词a={t1,t2,…,tm}是n个词组成的句子s={c1,c2,…,cn}的子序列。scba模型首先将整个句子的每个词在预训练词向量矩阵中找到对应的词向量,接着将这些词向量按照句子中词的顺序组合起来形成对应的词向量矩阵
其中,词向量wci读入神经网络层后,输出隐藏状态
lstm和gru的核心是“门”结构,其中lstm还包括细胞状态。在lstm中“门”控制信息添加以及删除,细胞状态是信息传输的路径,保证信息在序列中传递。lstm中的“门”是由遗忘门、输入门和输出门三部分构成,“门”里sigmoid函数的值在0~1范围,利于更新和遗忘信息。在这里,任何数乘以0为0,表示该部分信息将会被遗忘;任何数乘以1为1,表示该部分信息将会被保留。遗忘门是将当前输入信息和前一个隐藏状态信息传递到sigmoid函数,决定遗忘或保留哪些信息。输入门是将当前输入信息和前一个隐藏状态信息传递到sigmoid函数,决定更新哪些信息;其次还将前一个隐藏状态信息和当前输入信息传递到tanh函数,创造新的候选值向量;最后将tanh函数和sigmoid函数的输出值相乘,tanh函数的输出值被sigmoid函数的输出值决定哪些信息重要需要保留下来。细胞状态是将前一个细胞状态与遗忘门输出的向量相乘,然后再与输入门输出的向量相加,最终获得新的细胞状态。输出门是将前一个隐藏状态信息和当前输入信息传递到sigmoid函数;另外,新获得的细胞状态传递给tanh函数;最后将sigmoid和tanh函数的输出值相乘,获得新的隐藏状态。lstm模型的计算公式如2~7所示。
其中,
gru由重置门、更新门两部分构成,更新门与lstm中遗忘门和输入门的作用类似,决定删除哪些和添加哪些,重置门决定遗忘以前信息的程度。lstm与gru模型结构的对比如图3所示。
gru模型的计算公式如8~11所示。
其中,
gru模型将整个句子读取后,获得隐藏状态序列
其中,在注意力层
注意力层的输出传入输出层,通过softmax分类器来识别句子对于给定方面标的的情感极性是积极、中性或消极。计算过程如公式15:
上式将句子的加权表示r进行线性变换,将其长度转换为类别数|c|,softmax函数将其归一化为0-1的条件概率分布
上述算法中涉及循环神经网络gru和注意力机制,假设句子的长度为n,词嵌入维度为d(n<d)。注意力机制的时间复杂度为ο(n2·d),gru的时间复杂度为ο(n·d2)。因此,算法的时间复杂度为ο(n·d2)。
scba是一个简单的句子级情感分类模型,没有将给定方面信息纳入模型中。因此,scba模型无法解决句子中包含多个方面,但每个方面的情感极性不同的情况。例如,“thefalafelwasratherovercookedanddriedbutthechickenwasfine.”句子,给定方面为“falafel”和“chicken”。句子对于给定方面“falafel”的情感极性是消极的,但对于给定方面“chicken”的情感极性是积极的。scba模型识别给定方面“falafel”和“chicken”的情感极性是一致的。jiang等人指出情感分类任务中40%的错误是因为在情感分类中没有考虑给定方面造成的,近期研究往往加强给定方面在上下文模型中的作用。
上下文与给定方面相互作用,才能提高情感分类模型的性能。例如,“it'sfast,light,andsimpletouse.”句子,“fast”与电脑反应搭配时,表达的情感是积极的。但与使用时间搭配时,表达的情感是消极的。如果将给定方面与上下文联系起来,交互学习,共同建模,就能够清晰了解上下文中的词指的是哪方面,给定方面所处的上下文是什么。因此,提出一种上下文与给定方面相互协调的基于交互注意力的方面级情感分类模型scbia(sentimentclassificationbasedoninteractiveattention)。scbia模型为了更好的模拟给定方面的意义,使用gru对给定方面建模。为了将给定方面和上下文更好地获取重要信息,给定方面与上下文分别计算注意力权重。为了识别给定方面在上下文的情感极性,结合给定方面表示和上下文表示。scbia模型如图4所示。
首先给定一个句子对(s,a),其中m个词组成的方面词a={t1,t2,…,tm}是n个词组成的句子s={c1,c2,…,cn}的子序列。嵌入层将给定方面与句子分别在预训练的词向量词典中找到对应的词向量,形成句子的词向量矩阵
其中,
将神经网络层的输出hc,ht,
上式中αi表示句子中第i个隐藏状态的注意力权重,α为评分函数,其计算过程如公式21所示。
同理,给定方面的注意力权重计算如公式22所示。
最终得到句子与给定方面隐藏状态的加权表示
将注意力层的rc与rt输入注意力层拼接为r,通过softmax分类器进行分类,计算过程如公式25~26所示。
r=[rc;rt](25)
上式将句子的加权表示r进行线性变换,将其长度转换为类别数|c|,softmax函数将其归一化为0-1的条件概率分布
上述算法中涉及循环神经网络gru和注意力机制,假设句子的长度为n,词嵌入维度为d(n<d)。注意力机制的时间复杂度为ο(n2·d),gru的时间复杂度为ο(n·d2)。因此,算法的时间复杂度为ο(n·d2)。
scbia模型利用了方面信息,上下文与方面相互协调交互学习,相比于scba模型更加适合方面级情感分类任务。但是传统的神经网络注意力不能并行处理数据,模型的效率得不到提升。为了提升模型的效率,提出基于多头注意力的方面级情感分类模型scbma(sentimentclassificationbasedonmulti-headattention)。与scbia模型相比,scbma模型多次采用多头注意力mha(multi-headattention),传统的神经网络由多头注意力和卷积运算来代替捕获上下文与方面的特征,注意力层也采用多头注意力实现上下文与方面的交互。图1给出了scbma的模型框架示意图,这里不再重复给出。下面对scbma模型的具体实现方法进行详细的解释。
首先给定一个句子对(s,a),其中m个词组成的方面词a={t1,t2,…,tm}是n个词组成的句子s={c1,c2,…,cn}的子序列。嵌入层与scbia模型相同,将给定方面与句子分别在预训练的词向量词典中找到对应的词向量,形成句子的词向量矩阵
注意力机制的计算可以分为两个部分:第一部分,根据query和key来计算注意权重系数,首先根据query和key计算它们之间的相似性或者相关性,再对其原始分值进行归一化处理;第二部分,根据权重系数对value进行加权求和。相应的注意力分布可用公式27表示。
attention(k,q)=softmax(α(k,q))(27)
其中,α表示计算两者相似性或相关度的评分函数,其具体计算如公式28所示。
α=ktanh([ki;qj]·wa)(28)
与传统注意力机制不同的是,mha能够并行计算数据,因为mha允许模型在不同位置共同关注不同表示子空间的信息,如果只有一个注意力头,平均值就会受到抑制。特定的参数设置中,head为8,head之间参数不共享,将获得的不同表示连接在一起,通过线性变换获得mha的最终结果。计算过程如公式29~30所示。
headi=attention(k,q)(29)
其中,wo是需要学习的权重矩阵。
根据不同的情况,注意力机制可以分为mha和mhsa,它们的区别在于q与k的值是否相同,mhsa是在特殊情况q=k的典型注意力机制,模型中上下文是通过mhsa处理的,句子词嵌入矩阵对应q和k的值,计算过程如31~32所示。
为了加强上下文与方面词之间的交互,将上下文与方面词输入mha中处理,这时,q与k的值不同,上下文为k,方面词为q。计算过程如公式33~34所示。
多头注意力机制输出后进行卷积运算,保证每个位置的隐藏维度最终都保持相同大小。卷积部分的完整连接层有两层密集层,第一层是relu激活函数,第二层是线性激活函数,通过卷积核大小为1的卷积运算生成相应的权重。为了进一步分析上下文与方面词的信息,使用卷积运算对其进行转换。计算过程如公式35所示。
conv(h)=relu(h*w1+b1)*w2+b2(35)
其中,*表示卷积运算,卷积运算中的权重
通过隐藏层的处理,获得了有利于该任务的隐藏状态。实验证明,该方法的效果远优于仅使用神经网络最终结果。
为了加强上下文与方面词之间的联系,隐藏层输出后进入交互层。交互层目的是分析不同词对于给定方面的情感极性的重要性。利用方面词隐藏状态和上下文隐藏状态的平均池化来监督方面词的注意力权重生成,上下文隐藏状态和方面词隐藏状态的平均池化来监督上下文的注意力权重生成。计算过程如40~43所示。
将注意力层的rc与rt输入注意力层拼接为r,通过softmax分类器进行分类,计算过程如公式44~45。
r=[rc;rt](44)
上式将句子的加权表示r进行线性变换,将其长度转换为类别数|c|,softmax函数将其归一化为0-1的条件概率分布
上述算法中涉及多头注意力和卷积运算,假设句子的长度为n,词嵌入维度为d(n<d),卷积运算的内核大小为1。多头注意力的时间复杂度为ο(n2·d),卷积运算的时间复杂度为ο(n·d2)。因此,算法的时间复杂度为ο(n·d2)。
本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。