一种基于深度表示学习的实体情感分析方法
技术领域
本方法涉及自然语言处理和机器学习领域,特别是涉及一种基于实体属性提取识别的情感分析方法。
背景技术
情感分析是自然语言处理领域较为基础但又十分必要的一项任务,是对用户参与的、对于诸如人物、事件、产品等有价值的评论信息中带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。在传统文本情感分析技术中,单纯地将句子中情感词加以区分来判断句子的情感极性,例如出现“高兴”等正向词就会认为这句话是正向情感,出现“讨厌”等负向词会认为带有负面情感,其他则认为是中立状态。
现阶段情感分析的研究主要集中在以下三个方面:(1)篇章级。篇章级情感分析认为每一篇文档都表达了作者对某一个特定对象的情感倾向,从整体上对文本的情感倾向进行分析。主要应用在用户评论,新闻和微博等文本分析领域。(2)句子级。篇单独的文档中可能包含作者对同一事物的多种观点,为了更细粒度的挖掘不同观点,就需要进行句子级的情感分析。句子级别的情感分析,一般的做法是先将句子分为主观句和客观句,然后再对主观句的情感倾向做出判断。(3)词级。词级的情感分析,就是判断出该词是褒义词、贬义词或是中性词。词级情感分析中,情感倾向的判别方法主要有基于语料库的方法和基于词典的方法两种。
而随着文本量扩大和句子规模增加,一段话中可能出现多个实体对应的多个不同情感,而现实生活中往往需要针对某一特定实体进行分析,这时就需要排除其他实体评价的干扰。由此就提出了基于实体的情感分析来解决同一句话中出现多个实体的情况。例如“我买了一个新相机,它的画质很好,但续航很差”,这句话中针对实体“画质”是正向情感,而针对“续航”是负向情感,这个任务的主要目的就是针对不同的实体区分不同的情感极性。
正因为有了深度学习的发展,与之相结合的基于深度学习的文本情感分析方法也随之增多,并且受到广泛关注。进一步而言,基于实体的情感分析等细颗粒度情感分析方法也在深度学习的加持下有了更广阔的发展。将情感词嵌入与情感分析相结合进行分析;通过长短期记忆网络(LSTM)对情感文本进行分类,实现了针对不同属性划分不用情感的任务;利用一种多特征融合策略,在深度学习模型实现多模态情感分析。这些研究成果都与情感分析以及基于实体的情感分析相关,并为其发展奠定基础。
通过实体情感分析,可以解决实际应用中的很多问题。例如,电商平台通过后台对产品的评论内容进行收集汇总,之后采用深度学习算法结合的方式对商品好坏进行描述或对产品进行画像等后续工作,而这一切的基础就是对其商品进行实体情感分析。实际应用中,有可能针对一个产品的多个方面有着不同的评价,例如买家可能对照相机的画质比较满意,而对其续航不喜欢,这时候就需要利用实体情感分析的手段判断出画质属于正向情感,而续航属于负向情感,进而可以在商品展示页面针对这两个不同的属性进行满意度百分比统计或是针对性描述。因此实体情感分析具有很高的实际应用价值。
现有基于实体属性的情感分析主要存在以下几点问题:
1、单纯使用传统机器学习方法构建的模型不能满足对上下文语义的深度理解,尤其在中文这样的上下文关联度较强的文本中效果不尽人意;
2、针对同一实体属性包含多个单词或汉字的情况下,多数模型采用将所有词向量化后取平均的方式得到词表达,并没有计算其内部的权重,这使得该属性用于后续过程中的词表示程度并不高;
3、现有模型几乎很少考虑使用加载预训练的词向量模型的方法来提升词表示程度,尤其现在基于上下文的词表示所生成的预训练模型已经很普及的情况下;
4、现有的模型基本都基于英文语句进行实体情感分析,很少有针对中文语料进行,并且中文语料缺乏统一的数据集,这也是难以统一的主要原因之一。
发明内容
基于现有技术,本发明提出了一种基于深度表示学习的实体情感分析方法,通过基于上下文的词表示作为预训练词向量的模型,使用BiLSTM+attention作为下游模型,同时使用人工标注的2万条中文手机评论语料作为数据集进行训练,从而实现专门针对中文的实体属性情感分析,旨在解决现有模型对中文实体属性情感分析过程中准确度不高的问题。
本发明的一种基于深度表示学习的实体情感分析方法,具体包括以下流程:
步骤1、判断句子的实体属性,将给定长度为n的句子s的输入序列表示为s={t1,t2,...,a1,a2,...,tn},每个句子由一系列的词语ti组成,将句子s中包括实体属性情感目标词表示为a1、a2,每个句子包含有一个或多个实体情感目标词;首先识别句子s中不同的实体情感词,所述实体情感词涵盖“外观”、“拍照”、“屏幕”、“待机时间”、“运行速度”这五个方面的实体属性,并根据所识别到的实体属性划分成不同句子,每个句子的输入序列均将实体属性前置,后再接输入的句子s,形成每一个实体属性对应的输入序列s={a|t1,t2,...,a,...,tn},其中a表示该句实体属性词,ti表示第i个词语;
步骤2、在得到每一个实体属性对应的输入序列后,依序将输入序列s中的实体属性词和语料内容分别输入ELMo模型和BERT模型以及ALBERT模型,得到基于这三个模型的预训练词向量,并且分别利用三种预训练模型生成的词向量输入到下游模型中分别进行预测,生成基于三个预训练模型的不同预测结果;输入到下游模型之前,判断基于哪一种预训练模型生成的词嵌入;
步骤3、经过步骤2产生的预训练词向量作为BiLSTM层的输入,其输出的隐层中包含一定的上下文语义信息,并将其作为本层的输出,以及作为下一层的输入向量;
步骤4、利用attention层计算句子s中每个词与其他所有词注意力得分,来判断该词与其他词语的关系权重,首先将输入语料s中每个词t
i都标识成为词向量w
i,随后将s输入到Bi-LSTM中得到对应h
t,假设LSTM有u个隐层,则h
t∈R
2u,并且用H
t∈R
n*
2u表示所有的隐层状态h的集合,其公式表示为H={h
1,h
2,...,h
n},此时自注意力机制的权重计算公式表示为a=softmax(W
s2tanh(W
s2tanh(W
s1H
T)))其中,
H
TεR
2u*n,
最终向量a的形状为R
1*n,最终找到针对某一特定属性词所对应的情感;
步骤5、依据得到attention层的结果A作为Softmax层的输入,Softmax函数计算公式为y^=softmax(WsA+bs),其中,Ws∈Rc^d和bs∈Rc表示训练参数,c表示最终情感倾向分类的标签数;随后y^再经过一层全连接层,此时的y^变为1*c维度的向量,其每个对应维度都代表在相应情感标签上的可能概率;在训练阶段,y^与正确标签y进行对比,如相同则预测正确,否则预测错误,并记录误差进行反向传播,通过不断正向和反向传播来达到训练模型参数的目的,从而提高模型性能;在测试阶段,y^直接输出一个预测值来代表模型的预测结果。
本发明提出的技术方法的有益效果包括:
(1)提高了基于实体属性的情感识别的准确率,在中文数据集上可以达到91%的准确度,具有一定的代表性;
(2)让模型在中文数据集上的表现得到了提升;
(3)不仅可以用于实体属性的识别,也可以针对不包含属性词的语料进行对应情感分析,强化了模型的泛化能力。
附图说明
图1为本发明的一种基于深度表示学习的实体情感分析方法整体流程图。
具体实施方式
以下结合附图和实施例对本发明进行详细说明。
本发明的一种基于深度表示学习的实体情感分析方法,其中:预训练词模型采用基于上下文的词表示,以ELMo和BERT以及ALBERT三个模型为例,下游模型得到的结果为三分类问题,即给定一句中文语料,模型会根据不同实体属性进行针对性的情感分类,并根据分类结果产生正向、中性、负向三类不同结果。如图1所示,为本发明的一种基于深度表示学习的实体情感分析方法整体流程图。具体流程如下:
步骤1、判断句子的实体属性:将给定长度为n的句子s的输入序列表示为s={t1,t2,...,a1,a2,...,tn},每个句子由一系列的词语ti组成,将句子s中包括实体属性情感目标词表示为a1、a2,每个句子包含有一个或多个实体情感目标词。首先识别句子s中不同的实体情感词,由于数据集主要集中于手机类评论,因此实体情感词主要涵盖“外观”、“拍照”、“屏幕”、“待机时间”、“运行速度”这五个方面的实体属性,并根据所识别到的实体属性划分成不同句子,每个句子的输入序列均将实体属性前置,后再接输入的句子s={a|t1,t2,...,a,...,tn},其中a表示该句实体属性词,ti表示第i个词语;
步骤2、在得到每一个实体属性对应的输入序列后,分别采用主流的ELMo、BERT以及ALBERT这三个模型进行预训练:将输入序列s中的实体属性词和语料内容分别输入ELMo模型和BERT模型以及ALBERT模型,得到基于这三个模型的预训练词向量,并且分别利用三种预训练模型生成的词向量输入到下游模型中分别进行预测,生成基于三个预训练模型的不同预测结果。由于三种模型输出向量维度不同,因此再输入到下游模型之前,需要判断基于哪一种预训练模型生成的词嵌入;
(1)利用ELMo模型(Embeddings from Language Models)对词的复杂特征(包括句法和语义)和词在语言语境中的变化进行建模,其每一个对应词汇的表征都可以当做是整句话的函数,对某一时刻的运算可以当做是基于前面所有已知信息进行,因此整句语料的输出也就是每一层模型得到的表征对应的函数,其训练结果的不再只是一个词向量,而是得到每一个句子所包含的多层BiLSTM模型,分别获得每个时间步在每个层的输出。
具体而言,ELMo依赖于双向语言模型(Bidirectional Language Models)。将给定输入序列设为长度为N的语料t1,t2,…,tN,前向语言模型会根据前面的所有词汇预测当前位置词汇的概率,该过程表示为:
在这个过程中,可能前向模型会由多个单向LSTM组成,但并非每一层LSTM都参与最终运算,而是只有最后一个时间步的LSTM对结果进行预测。而后向模型则和前向模型预测顺序相反,即采用后文全部词汇信息预测本词汇信息,该过程表示为:
其中,tk表示当前任一输入词,tk-1表示出现于当前任一输入词前面的词,tk+1表示出现于当前任一输入词后面的词。
双向语言模型则会将前向模型和后向模型相结合,直接最大化这两个模型的对数概率,该过程表示为:
其中,ΘLSTM和ΘS表示向量矩阵和全连接层的共享参数。
假设经过训练的BiLM模型有L层,对于每个输入词汇tk,经过BiLM后会有2L+1个向量,包括前向和后向的输出,以及最开始的词嵌入层,因此将其输出内容表示为:
其中,
表示初始词嵌入向量,并且
同时,针对不同的下游任务,也会有不同的加权,以此通过线性加权的方式将每一个权重区分到具体任务中,其具体公式为:
其中,stask表示经过激活函数之后的权重向量,一般用softmax函数进行,γtask表示缩放参数。事实证明,ELMo这样的计算方式更有利于信息的提取,为下游任务的性能提升有了很大帮助。
(2)BERT(Bidirectional Encoder Representations from Transformers)相比较于ELMo有所改进,是一个经过预训练的双向语言模型。BERT主要通过预先对于大量语料上进行的无监督训练,从而达到为下游任务学习更多句法、语言、词语等信息的目的,并将其运用到下游训练过程中。
BERT的基本结构依赖于Transformer,借鉴了Transformer中Encoder部分并加以改进,主要在词向量、注意力机制等方面做出了一定的改变,同时遮挡语言模型和下一句预测任务也是BERT的特色所在。
(3)与BERT类似,ALBERT也是基于Transformer的编码结果进行下一步运算,但在模型设计上有了三个方面的改进。
第一是词嵌入矩阵的因式分解。BERT词嵌入的维度E都与由编码输出的结果H维度保持一致均是768,而由Transformer输出的编码结果已经包含很多上下文关联信息,单纯的词嵌入并没有,因此应当使H的维度远大于E,以实现信息的更大利用。ALBERT采用的方法是因式分解降低参数量。具体而言,先将词嵌入矩阵分为V*E和E*H两个不同维度的矩阵,并将其利用One-hot向量映射到更低维度的空间中以降低向量维度,随后再将其重新投射到高维空间H中,这样可以将其参数量从O(V*H)减少到O(V*E+E*H),从而当H大于E时能确保其参数量不会过多。
第二是跨层共享参数。在BERT中,由于全部采用Transformer的Encoder结果,使得其在参数共享层面只共享注意力层参数或全连接层参数,这就导致每一部分参数量都十分庞大,而ALBERT则对多层参数进行共享,以达到大规模减少参数的目的。具体而言,ALBERT对于全连接层和注意力层的全部参数都实现共享,这就让编码部分的共享参数量大大增加,从而达到减少总参数量的目的。
第三是句间连贯性改善。在BERT中,采用负采样方式预测句子A对应的下一句是否是原本的句子B,这样的方式实际是二分类问题,在一定程度上解决了上下文关联度问题,但实际操作中并不能够达到很好的性能提升,主要原因是当AB两句话并不是针对同一主题时,BERT更倾向于将两个句子分开,即便两者具有一定的关联性。因此ALBERT针对这一点也作出了改进,提出一个新的任务sentence-order prediction(SOP),这个任务忽略了主题对于两句话关联度的影响,单纯依赖于上下文的联系去判断。SOP任务的正例与BERT的获取相同,但其负采样的负例则采用将正例样本顺序颠倒的方式进行,这就使得正例和负例样本均来源于同一语料中,因此是基于同一主题,只考虑顺序问题来判断上下文联系,经过实验其对模型性能有一定的提升。
本发明利用ELMo模型、BERT模型和ALBERT模型这三个预训练模型对于中文语料所具有的上下文紧密联系程度所展现出的较强性能,从而进一步加强模型效率。
步骤3、经过步骤2产生的预训练词向量作为BiLSTM层的输入,其输出的隐层中包含一定的上下文语义信息,并将其作为本层的输出,以及作为下一层的输入向量;
步骤4、利用attention层计算句子s中每个词与其他所有词注意力得分,来判断该词与其他词语的关系权重,首先将输入语料s中每个词ti都标识成为词向量wi,随后将s输入到Bi-LSTM中得到对应ht,假设LSTM有u个隐层,则ht∈R2u,并且用Ht∈Rn*2u表示所有的隐层状态h的集合,其公式表示为H={h1,h2,...,hn},此时自注意力机制的权重计算公式表示为a=softmax(Ws2tanh(Ws2tanh(Ws1HT)))其中,Ws1εRda*2u、HTεR2u*n,Ws2εR1*da,最终向量a的形状为R1*n,最终找到针对某一特定属性词所对应的情感;
步骤5、依据得到attention层的结果A作为Softmax层的输入,Softmax函数计算公式为y^=softmax(WsA+bs),其中,Ws∈Rc*d和bs∈Rc表示训练参数,c表示最终情感倾向分类的标签数,在本文中c为3,分别是“正向”、“中性”和“负向”。随后y^会再经过一层全连接层,此时的y^变为1*c维度的向量,其每个对应维度都代表在相应情感标签上的可能概率。在训练阶段,y^会与正确标签y进行对比,如相同则预测正确,否则预测错误,并记录误差进行反向传播,通过不断正向和反向传播来达到训练模型参数的目的,从而提高模型性能。在测试阶段,y^则会直接输出一个预测值来代表模型的预测结果。
上述流程表明,本发明通过使用基于上下文的词表示,并以ELMo和BERT以及ALBERT为例生成预训练词向量,提升了模型对于输入语句的上下文信息联系程度;经过下游模型多次迭代,在使用预训练词向量的基础上,提升了属性词与上下文的结合程度,使用人工标注的2.4万条手机评论类中文数据,弥补了在中文实体情感分析方面的不足,同时由于中文数据中包含了一定的未含属性词的情感分析语料,并且通过模型训练也具有一定的可识别度。
以下为本发明实施例及其实验结果的描述:
本实施例采用的数据主要源于爬取的10万余条手机评论数据,经过去除无用数据、删除重复内容等数据清洗工作,并且进过人工标注针对手机的包括“外观、拍照、屏幕、运行速度、待机时间”在内的主要实体属性词以及每个属性对应的情感极性,并同时添加了4千条并不包含实体属性的无属性情感语料,最终生成2.4万条实验数据,分为1.6万条训练集数据,4000条验证集数据以及4000条测试集数据,如表1所示为数据格式。
表1
数据内容 |
实体属性 |
对应情感极性 |
整体不错,除了拍照很差,在车里播放音乐噪声大。 |
拍照 |
负向 |
外观细腻,色彩渐变,拍照给力 |
外观 |
正向 |
总体来说还不错。挺流畅的。屏幕还可以。电池也挺耐用。 |
屏幕 |
中性 |
太惊喜了,第一次用苹果手机给了我非常好的体验太好了 |
无 |
正向 |
神经网络在训练过程中,超参数的设置具有重要的意义。相同数据、相同神经网络结构的情况下,实验结果证明:学习率、迭代次数对识别效果有很大影响。通过评价对象提取实验结果来验证结论,选取迭代次数与学习率作为关键的超参数进行实验,实验结果是对预测标签与初始标签对比后计算总体准确度的百分数,以下几个实验中,默认采用的预处理模型为BERT。如表2所示,超参数设置实验结果如下:
表2
可以看到,在学习率的选择上,学习率lr=0.01对应的模型整体效果优于lr=0.001,(虽然在迭代次数e=40是出现了一定的反差,但认为这样的情况属于偶发现象,并不具有一定代表性),因此总体而言学习率lr选择0.01的模型效果还会更好。除此之外可以看出,无论学习率设置为多少,当迭代次数e大于50后,准确率的变化幅度明显下降,由此可以看出模型基本已经收敛,可见并非迭代次数越大,模型效果会越好。
与此同时,考虑到批处理尺寸batch_size的大小也会对实验结果有一定的影响,于是也同时验证了在相同情况下,不同batch_size对实验结果的影响,如表3所示为批处理大小实验结果。
表3
可以看到,批处理大小b的确会对实验结果有一定影响,很显然,随着批处理大小的上升,模型效果相对会更好,但到达b=256时出现了一定程度的下降,说明b=256值过大,已经对准确度的提升效果并不明显,甚至产生了削弱效果。鉴于实验过程由两组批处理大小相差不大,因此本实验最终采取b=64和b=128不同大小进行下一步实验。
3、模型性能对比实验:
由以上两组实验决定采用学习率lr=0.01、批处理大小b=64和b=128,并分别采用ELMo和BERT作为预处理模型做进一步分析,探究预处理模型的性能,如表4所示为ELMo和BERT对比实验具体结果。
表4
可以看出,相同条件下,不使用任何预处理模型比使用两个预处理模型处理后的词向量效果要差5%以上,尤其使用BERT之后对模型的性能提升有很大作用。当使用BERT之后,与ELMo相比,其预测准确定能够达到更高的程度,可以证明的确BERT在识别语义信息和上下文信息方面具有很好的效果,能够减轻下游模型对文本的理解处理。
如表5所示为不同拼接方式对比实验结果。来验证之前提出的两种不同拼接策略性能如何。
表5
虽然在英文语料中采用以属性词为分界,将句子分为左右两个分句分别计算向量的方式较为普遍和常用,但在中文中效果并不是很好,分析原因可能是中文属于黏着语系,两个字之间的联系更加紧密,不像英文单词之间所表达的含义并不完全相同,拆分之后对整句的理解影响不大。因此对于中文还是需要采取直接拼接的方式进行。