一种通过评价类别分类提升评价对象抽取性能的方法
2023-01-09崔伟琪徐广义
崔伟琪,严 馨,滕 磊,陈 玮,徐广义
(1.昆明理工大学 信息工程与自动化学院,昆明 650504;2.昆明理工大学 云南省人工智能重点实验室,昆明 650504;3.湖南快乐阳光互动娱乐传媒有限公司,长沙 410000;4.云南南天电子信息产业股份有限公司,昆明 650040)
0 概述
评价对象抽取任务作为方面级情感分析任务的一个关键子任务,旨在抽取用户评论语句中评价对象的实体[1]。评价对象抽取包括以下子任务:抽取评论语料库中所有的评价对象;对语义相似的评价对象实例进行聚类,保证每个类别中包含相似的多个评价对象实例,即保证评价对象的一致性。
传统评价对象抽取任务的方法大概分为三类:基于规则的方法,有监督的方法和无监督的方法。从用户评论中抽取评价对象的工作最早由文献[2]提出,主要介绍了显性评价对象和隐性评价对象的区别,运用一套基于统计观察的规则处理显性的评价对象。文献[3]通过计算名词短语和产品类之间的逐点互信息来检测名词或名词短语是否为产品特征,提升了评价对象抽取任务的效果。文献[4]介绍了基于常见信息和依赖信息挖掘的特征,使用WordNet 查找意见种子词的同义词和反义词来提取意见词,从而对产品评价对象进行抽取。这些方法都严重依赖预先制定的规则,并且只要当评价对象在很小的一组名词范围内时模型才表现得很好。在基于规则的方法中,大多需要构建句法依存树等预处理工作并需要人为构建隐式评价对象字典、情感词典和名词规则[5-6]。该类方法的缺点在于:并不会将抽取的评价对象进行聚类,抽取的评价对象缺少高度的一致性。
在有监督学习方法中,文献[7]提出基于条件随机场的可以自动学习特征的神经网络模型进行评价对象抽取。另外,卷积神经网络作为该任务最有效可行的方法之一用于各个模型的构建。例如,文献[8]使用七层卷积神经网络对评价对象进行抽取。文献[9]使用双嵌入加卷积神经网络的结构得到当时最好的结果。文献[10]介绍一种卷积神经网络和主题模型相结合的监督学习模型,该模型通过动态滤波器来对评价对象进行抽取,并考虑到评论具有潜在话题结构,引入一个神经主题模型,将潜在主题集成到基于卷积神经网络的模块中,以帮助识别评价对象特征,该模型能够有效地识别评价对象的各个方面,并产生可解释的主题。此外,文献[11]提出了领域自适应策略,将知识从一个足够标记的源域转移到未标记的目标域,并提出了多层次的词交互转移模型(MSWIT),MSWIT 构造了细粒度组件和粗粒度组件两个交互式组件,细粒度组件为单词级特征表示,粗粒度组件为句子级向量表示。模型不需要显式地将评价对象与相应的类别对齐,而是通过注意机制以及源域中的评价对象类别和评价对象实例的监督标签来学习对齐,显著提高了领域自适应方法的性能。但监督学习方法的缺点在于:一方面需要大量标注文本,标注文本的来源需要耗费大量的人力和财力;另一方面该方法会遇到领域适配问题,即在一个领域内训练的模型,使用其他领域的数据进行预测时表现的结果并不理想。基于以上两点原因,大部分学者通常选择无监督方法进行评价对象抽取任务。
在无监督模型中,LDA 主题模型[12]的应用最为广泛。该类模型的使用大多基于以下3 个假设:评论具有潜在的话题结构;话题可以从单词评论共现中推断出来;单词与话题相关,话题也与评论相关。模型可以识别大规模语料库中潜藏的主题信息,其原因在于摆脱了对标签的依赖,模型通常将评价对象看做主题,使用模型去预测主题的分布并进行抽取。因此,基于LDA 的模型可以发现更多的评价对象,但是通过评价对象实例推断标准评价对象的效果却差强人意,原因在于该方法抽取出的评价对象实例通常是松散且无关联的。文献[13]首先使用LDA 模型去学习多个领域的主题也就是评价对象实例,取交集作为共享的评价对象特征知识库,然后基于LDA 提出了AKL 模型处理先验知识库中的错误信息,最终给出自动从网络中获取先验,并对评论文本进行评价对象抽取的系统。文献[14]提出嵌入式主题模型(ETM),ETM 是一种生成式文档模型,将传统的主题模型与单词嵌入相结合,并使用一个分类分布来表示每个单词,其自然参数等于一个单词嵌入和它被分配到主题的嵌入的内积,即使使用大量包含不常见词和停止词的词汇,ETM 也能找到可解释的主题。在主题质量和预测性能方面,ETM 优于以前的文档模型。文献[15]提出一个新的生成模型,认为全局潜在主题是跨文本共享的,隐藏语义和全局潜在主题用于构建上下文单词。主题和单词嵌入一起训练,训练后的模型将单词映射到主题相关嵌入,解决了单词多义的问题。根据实验数据,该模型在词汇相似度评估和词义消歧方面都优于词级嵌入方法。此外,文献[7]将词向量引入到评价对象抽取任务中,将词嵌入与依存路径联合训练,最后通过CRF 序列标注来提取出评价对象,但该方法中依存路径是多样化的,人为设置相同的依存路径会在模型聚类时受到其他词汇干扰,导致模型性能下降。文献[16]提出的模型将主题嵌入与词嵌入联合训练来丰富词汇的潜在语义信息,从而得到词汇的向量表示,最后将向量作为输入送入注意力机制模块中,在注意力模块中训练出k维嵌入矩阵,并通过注意力机制提高评价对象的权重,从而提高模型提取性能。文献[17]运用基于注意力机制的无监督的自编码模型对评价对象进行抽取,该模型摒弃了传统主题模型,使用统一的词嵌入空间训练评价对象嵌入矩阵。一方面该方法无需人工标注语料,节省了大量人力成本,另一方面,相比于主题模型,自编码模型使得抽取的评价对象实例具有更高的一致性。
评价对象的多样性遭遇到瓶颈,而分类任务正好弥补了这些不足。首先,分类语料的获取自动包含了评价对象类别信息;其次,评价类别不仅对模型中基于评价对象的重建提供了更好的基准,而且对评价对象的领域特征具有很好的指示作用。例如:“2.88 的价格非常实惠,但是口味有点差强人意”。这句话中评价类别“价格”和“味道”对该句来源于餐厅评论具有良好的指示作用,而且有助于模型抽取更细粒度的评价对象“价格”和“口味”。再如:“交通方便,房间舒适卫生,感觉不错”。该句可以从评价类别“环境”和“感受”中轻而易举地判断评论来源于酒店,两类别更有助于模型探索细粒度的评价对象“交通”、“房间”和“感觉”。因此,上述评价类别信息均包含特定领域的评价对象特征,即相同评价类别的评价对象特征具有相关性,验证了通过分类任务可以对评价对象抽取任务进行提升的可能性。
本文提出一种通过文本分类改进基于注意力的自编码器(AATC)模型。基于注意力机制的长短期记忆(Long Short-Term Memory,LSTM)模型训练一个句子分类器,在分类任务下生成与评价对象类别相关的特征信息用于编码阶段,以提升模型在没有标注数据情况下自编码阶段的编码能力,增强自编码器的合理性和解释性。通过共享上述模型对文本输入进行编码,给句向量增强上下文语义信息的表达能力,同时在自编码器中对模型进行微调。最后本文AATC 模型可在没有任何手动特征抽取的情况下识别和抽取用户评价对象,并对多领域语料库中的抽取结果进行对比验证。
1 AATC 模型
1.1 问题描述
已知数据集D,其中任一评论句s=(w1,w2,…,wn)由n个单词组成,模型将句子s以单个词向量的形式输入到已训练好的基于注意力机制的LSTM 模型中得到句向量表示。本文使用文献[18]提出的分布式词嵌入表示词向量,词向量模型的嵌入矩阵表示为E∈RV×d,其中,d表示词向量维度,V表示词表大小。模型的最终目标是学习标准评价对象的嵌入矩阵T∈RK×d,其中,K表示预先设置的标准评价对象的个数,标准评价对象矩阵在嵌入空间中没有具体含义,其表征由最终获取的评价对象实例推理得出。由于词向量和评价对象矩阵在同一嵌入空间中,每个标准评价对象和单词可以通过计算余弦相似度的方式在词向量嵌入空间中寻找与标准评价对象最相似的单词作为评价对象。文献[19]提出的ABAE(Attention-Based Aspect Extraction)模型包括两个步骤:首先通过注意力机制给每个输入的词嵌入分配得分,使用加权平均来表示输入句子的句向量;然后通过一个自编码器来处理句向量,编码阶段使用简单的线性变换和softmax 函数进行降维,解码阶段使用评价对象矩阵对句向量进行重建。本文在该模型基础上,探索评论句中不同类别的评价对象对评价对象矩阵训练的关系,使含有语义信息的句向量通过包含不同评价类别特征的矩阵编码为中间层语义向量,本文利用句子分类结果进行评价类别的转移。
1.2 模型框架
本文AATC 模型如图1 所示。将评论句中的单词向量作为输入,首先在词嵌入空间中将所有单词使用计算余弦相似度距离的方法进行k-means 聚类,聚类得到的中心簇向量来初始化标准评价对象嵌入矩阵T∈RK×d,然后通过捕捉输入句中单词与评价对象矩阵的相关性来训练评价对象矩阵。AATC 模型分为两个部分:自编码器部分和句子分类器部分。首先,分类器是一个监督模型,它使用基于注意力机制的LSTM 网络通过softmax 分类器对句子进行评价类别分类,同时生成不同类别的特征信息。具体地,餐厅领域数据分为7 类,分别为食物、环境、服务、价格、味道、地点和其他;酒店领域数据分为6 类,分别为环境、服务、价格、地点、感觉和其他。在分类器训练数据时,所使用的数据集的每个句子均只包含一类评价对象,包含的评价对象类别即为句子类别。然后,自编码器模型的输入部分使用了和句子分类部分一样的模型参数初始化并进行无监督训练,使用该模型的优势在于:在输入时融合了输入句上下文的语义信息。在自编码器的编码阶段,模型使用了句子分类任务中包含类别信息的特征,将句向量表征以包含类别特征的转移矩阵的形式转化为中间层语义向量,转移矩阵形式上包含了不同评价类别的语义信息从而编码成更有意义的中间层向量。解码阶段使用评价对象矩阵与语义向量乘积的形式,旨在捕捉评价对象和语义向量之间的相关性。在自编码器训练数据中,评论语句可包含多个评价类别的评价对象实例,因为最终的转移矩阵是不同评价类别转移矩阵的加权平均。最后,将训练好的评价对象嵌入矩阵放回词向量嵌入矩阵中,通过相似度计算的方式获取更细粒度的评价对象实例。下文将详细介绍模型的各个部分。
图1 AATC 模型框架Fig.1 AATC model framework
1.2.1 句子分类
本文使用的基于注意力机制的LSTM 通过softmax 分类器对输入句子包含的评价类别进行分类。因为在分类器训练数据中,使用的数据集中每个句子均只包含一类评价对象,所以句子中的评价对象的类别即为句子标签。已知含有n个单词的句子s中所有词嵌入表示为,其中,E∈R|n×d|,d表示词向量维度。通过LSTM 中的3 个门控机制保留或丢弃信息来训练数据,其中可训练参数为θlstm,并且LSTM 的输出隐藏层序列表示为h={h1,h2,…,hn},其中,hi表示序列中第i个单词的隐藏层。接下来使用注意力机制得到句子表征zs表示如下:
其中:pi为给第i个隐层向量分配的权重。
pi计算如式(2)所示:
其中:hi∈Rd;参数W∈Rd×d为过渡矩阵。
然后将句向量zs通过softmax 分类器得到不同评价类别分布,具体如式(5)所示:
其中:vs∈R|c|表示对句子s预测的评价类别概率分布;|c|表示类别个数。
对于句子分类任务,本文使用交叉熵作为损失函数,故分类器部分的损失函数表示如式(6)所示:
其中:i表示在数据集D中的第i条评论句;pi表示句子的真实标签;qi表示预测标签。
1.2.2 自编码器
本文使用k-means 聚类得到的中心簇向量初始化了评价对象的嵌入矩阵T∈RK×d,其中,K表示评价对象的个数,该K个标准评价对象向量分别表达了在词嵌入空间中与其相似的评价对象的平均嵌入。在无监督学习任务中,评论语句可包含多个评价类别的评价对象实例,该阶段通过自编码器训练评价对象矩阵,增强了上下文语义信息的表达能力。模型使用句子分类训练好的基于注意力机制的LSTM 模型对自编码的输入进行初始化可得到输入句向量表征zs。对句向量zs进行降维编码,得到中间层的语义向量pt,如式(7)所示:
其中:转移矩阵Wγ可以捕捉句向量表示与评价对象之间的相关性,将句向量zs压缩转化为中间层语义向量pt;b为偏置向量。另外,希望编码器捕捉到评论句评价对象的类别信息与评价对象之间的相关性。受文献[19]的启发,本文在句子分类任务阶段引入|c|个子矩阵每个子矩阵分别对应不同评价类别,子矩阵由训练得来。由于每个句子有多种评价对象类别,因此会有多个子矩阵。基于从式(5)中得到的预测类别,这些子矩阵加权和后得到最终的转移矩阵,如式(8)所示:
其中:转移矩阵Wγ通过对每个类别的转移矩阵进行加权平均得到。然后,使用评价对象矩阵T进行解码,也就是对句向量进行重建,目的在于使用评价对象矩阵还原评论句类别信息和语义向量的相关性,具体如式(9)所示:
重建的目的在于捕捉评价对象矩阵和中间层语义向量之间的关系,使重建后的句向量rs和重建前的句向量zs无限接近。训练好的评价对象矩阵T∈RK×d可以表示为,其中任 一评价对象类别对应的评价对象向量可表示为αk,k∈{1,2,…,K}。每输入一句评论句s=(x1,x2,…,xn),AATC 模型会根据训练权重计算pt。pt作为评价类别的概率分布,取最大值确定评价向量类别i,i∈{1,2,…,K},其中T对应的评价对象向量为αi。同时,本文创建了推理出的评价类别与标准评价类别之间的映射关系,供验证阶段获取评价对象的标签。最后,通过计算αi与输入句子中每个单词xj的余弦相似度,获取相似度最高的单词作为该句中的评价对象,其中j∈{1,2,…,n}。
1.2.3 损失函数
对于自编码器部分,本文会根据类别个数分配多个转移矩阵,加权后放入自编码器训练评价对象。自编码器部分的损失函数本文沿用了最大边际对比损失[20-22],具体的损失函数如式(10)所示:
本文随机从训练集中抽取m个句子作为负样本,将负样本的平均值作为负样本的代表嵌入表示为ni。构建损失函数的目标是使得重建后的向量rs与句向量的表征向量zs相似,与负样本的代表嵌入不同。因此,使用合页损失的形式最大化rs与zs向量的点积,同时最小化rs与ni向量的点积。
1.2.4 正则项
本文模型可以学习到训练数据中最具代表性的向量,然而评价对象矩阵在训练过程中会产生冗余。为了确保评价对象嵌入的多样性,最终在损失函数中添加正则项,以保证每个评价对象嵌入的唯一性:
其中:I为单位矩阵;Tn是T矩阵每行规范化为1 后的矩阵,Tn·中任何非对角元素都对应两个不同的评价对象嵌入点乘。当任意两个不同评价对象嵌入点积为零时,U达到其最小值。因此,正则化项鼓励嵌入矩阵T的行之间的正交性,而惩罚不同嵌入向量之间的冗余。损失函数中加入正则化项后最终如式(12)所示:
其中:λ为控制正则项的超参数。
2 实验
2.1 数据集
本文在两个真实的数据集上进行模型评估,两个数据集详细信息如表1 所示。
表1 数据集信息Table 1 Dataset information
针对自编码器所进行的无监督任务,本文分别从大众点评和携程网爬取两万余条评论,并由专家标注餐厅领域5 000 条评论对应4 293 个句子,酒店领域4 500 条评论对应3 632 个句子用于评价对象的评估。针对有监督学习的评价类别分类任务,本文同样采用上述网站的爬取数据,并过滤单句中仅包含单个评价对象的评论句进行标注。餐厅领域数据集人工定义的评价对象类别标签为食物、环境、服务、价格、味道、地点和其他,总共7 个评价类别;酒店领域数据集人工定义的评价对象标签为环境、服务、价格、地点、感受和其他,总共6 个评价类别。数据集如表2 所示。
表2 句子分类任务训练样本数量Table 2 Number of training samples for sentence classification task
2.2 基线方法
为了验证AATC 模型的表现,本文使用以下5 个基线与其进行比较:
1)k-means 模型。本文首先在词嵌入空间中使用k-means 聚类,将每个簇的中心向量代表标准评价对象向量。然后使用与句子的平均词向量最接近的标准评价对象向量作为该句子的推理评价对象向量。最后同样以计算标准评价对象与输入句子中单词的余弦相似度的方式确定句子的评价对象。本文同样使用该方法初始化评价对象矩阵T,为了展示本文模型的表现,本文选择直接将k-means 算法的结果进行对比。
2)LocLDA 模型[23]。该模型使用了标准的主题模型实现。为避免模型对全局主题进行推理,LocLDA 模型将句子看做是分离的文档,将评价对象看为主题,使用模型去预测主题的分布并对评价对象进行抽取。
3)BTM 模型[24]。该模型是一个专门为短文本设计的主题模型。与LDA 模型方法相同,BTM 模型同样将评价对象视为主题,预测主题的分布并对评价对象进行抽取。BTM 模型的主要优点是可以直接对无序词对共现进行生成建模,缓解了短文档中数据稀疏的问题。
4)ABAE 模型[17]。ABAE 模型是完全基于无监督学习的,该模型基于自编码器,创建评价对象嵌入矩阵,通过先降维再重塑的方式训练评价对象嵌入矩阵。
5)SUAEx 模型[25]。该模型是无监督的,完全依赖于单词嵌入的相似性,其依赖向量相似性来模拟注意力机制,使模型能够专注于相关信息的抽取。
2.3 参数设置
在模型训练过程中,数据经过预处理(去除标点符号,去停用词,去除出现频率小于10 次的单词)后,使用Glove[26]生成300 维的词向量作为输入。使用k-means 算法初始化评价对象嵌入矩阵,其他参数均随机初始化。本文使用网格搜索验证了评价对象矩阵中评价对象个数K的取值,最终在餐厅领域中设置为14,而在酒店领域中将K设置为13~18 中的数字,但是结果相差无几,所以最终将其统一设置为14。评价类别个数c根据训练语料领域分别设置为7 和6。在训练过程中,本文固定词嵌入矩阵,使用Adam 算法进行优化。学习率设置为0.005,优化方法为Adam。Batch Size 设置为64,训练28 个Epoch。通过网格搜索最终将惩罚项系数λ 设置为1。最终计算结果为运行10 次后取平均。
2.4 实验结果与分析
本文从两个评价标准对模型训练结果进行评估。一方面看模型是否能够找到语义一致的评价对象,即评价对象质量评估;另一方面看模型是否能够改善评论数据集的评价对象识别性能,即评价对象的识别率。
2.4.1 评价对象质量评估
以餐厅领域数据为例,表3 所示为AATC 模型在该领域所推理出的14 个标准评价对象,与右边展示的评价对象类别相比粒度更细。例如本文可以从食物中分出主食、饮品、配菜等。
表3 餐厅领域评价对象抽取结果实例Table 3 Example of the result of restaurant field opinion targets extraction
从表3 可以看出,模型可以有效地对不同领域的评价对象进行抽取。针对不同评价类别,模型可以在此基础上抽取更细粒度的评价对象实例。抽取结果表明,模型具备了较好的评价对象抽取能力。虽然在个别评价对象中模型将形容词也视为评价对象进行了抽取,但是这种情况较为罕见。
2.4.2 评价对象实例识别率
本文使用精确率(P)、召回率(R)和F1 值这3 个度量指标来衡量预测结果与真实标签的准确程度。在当前任务中,给出一个评论句,首先指定一个推断的评价对象实例标签,该标签对应式(6)中pi最高权重实例,然后根据推断的评价对象和标准标签之间的映射,将标准标签赋给句子。精确率表示抽取正确的评价对象实例占所有抽取评价对象实例的比例,召回率表示抽取正确的评价对象实例结果占文本中正确的评价对象实例的比例,F1 值是调和精确率和召回率的一种综合评价指标。具体评价指标计算公式如式(13)~式(15)所示:
餐厅领域和酒店领域评价结果分别如表4 和表5 所示,其中加粗字体为最优结果。
表4 餐厅领域评价对象抽取结果Table 4 The results of restaurant field opinion targets extraction
表5 酒店领域评价对象抽取结果Table 5 Results of hotel field opinion targets extraction
在酒店数据中,本文选取了6 个评价类别。模型在其他类中表现较差,原因在于:其他类中抽取的评价对象的词汇没有明确的模式,这使得这些评价对象实例很难进行分类。根据以上结果可以看出,k-means 模型作为AATC 的初始化项已经有了较好的精确度,AATC 模型在k-means 模型的基础上,从某种程度上来说,提高了评价对象抽取的一致性。LocLDA 和BTM 同时作为主体模型,而BTM 专门为短文本设计,根据训练文本的属性,BTM 模型的效果好于LocLDA 模型。同时,SUAEx 模型作为一个很强的基线,在评价对象抽取能力方面和AATC 相当。SUAEx 模型依靠词语嵌入的相似性和参照词来模拟注意神经网络的注意机制。但是,SUAEx 模型仅限于处理表示为单个单词的评价对象,对于复合单词上的表现不如本文算法,如“酒单”“电池寿命”等,同时SUAEx 模型需要大量的先验知识,影响了模型的运行效率。此外,AATC 能够适应不同的领域。在许多情况下,AATC 在运行时间成本非常低的情况下取得了优于SUAEx 模型的最新技术成果。相比于ABAE 模型,AATC 依据句子分类任务分配了不同的转移矩阵,另外通过循环神经网络增强了编码器输入阶段上下文语义的关联度,这时模型不仅可以准确抽取单句中评价对象,而且通过观察可以发现,AATC 抽取的评价对象实例一致性更高。
3 结束语
本文提出一种通过评价类别分类提升评价对象抽取性能的方法。通过基于注意力的LSTM 模块,本文构建的AATC 模型能够克服数据稀疏的问题,捕捉到文本中的词共现模式,并运用分类器对评价类别进行分类,解决训练过程缺少评价类别多样性的问题。实验结果表明,与k-means、LocLDA 等主流模型相比,AATC 模型在餐厅领域和酒店领域的语料库中提升效果明显。但是由于评论数据属于非正式评论题材,可能会出现当前的流行词汇或该领域的特有词汇,另外在餐厅和酒店领域的评论数据中还可能出现拼写错误,而AATC 模型在该方面的识别能力有所欠缺,后续将考虑输入文本提炼核心词来进行抽取研究。