白晓雷,霍瑞雪
(国家计算机网络与信息安全管理中心河北分中心,河北 石家庄 050000)
目前,微博作为一个典型的自媒体社交工具,其每天会产生海量的话题与评论。如何利用自动化方法对其进行情感判定并提高准确率成为一个重要问题,尤其是针对反讽这一特殊的情感类别。笔者在前期工作中使用了融合微博语言特征的词袋模型进行训练,但仍存在准确率、召回率不高的问题。因此,本文在前期工作的基础上,基于微博数据采用融合微博融合语言特征的卷积神经网络模型对中文反讽识别进行了研究。
Konstantin 等研究人员[1]基于英文语料在各种分类模型下结合各种反讽特征进行研究,发现人工选取的特征提高了反讽识别准确率。Aniruddha Ghosh[2]等研究人员率先基于英文语料采用卷积神经网络(Convolutional Neural Networks,CNN)和长短期记忆人工神经网络(Long Short-Term Memory,LSTM)来识别反讽,并得出深度学习方法优于传统机器学习方法的结论。国内山西大学卢欣等研究人员使用深度学习的方法对中文反讽识别进行了研究[3],但实验结果依然存在准确率等指标不高的问题。
本文在收集和分析海量微博反讽语句后,得出了主要4 种类型的语言特征[4]。
(1)固定搭配,如“再……一点”,例子“重庆可以再湿一点吗?我的衣服晾了两天一件都没干”。
(2)特定副词,如“真有你的”,例子“欠钱逾期不还,找你要还这种态度,真有你的”。
(3)特定的语气词,如“呵呵”等,例子“呵呵,你竟然是这种人”。
(4)网络梗。微博的用户以年轻人为主,含有大量年轻人熟知的网络梗,如“看这大神犀利的操作,我也是醉了”等。
本文在前期工作的基础上先后共爬取了8 万余条微博的数据,主要内容为用户评论信息,但这些文本信息存在大量的噪声,如不规范的字符等。为滤除这些噪声,本文在进行训练前对文本数据进行了预处理,如去掉特殊字符等。文本预处理后,人工对其进行标注。标注方法仅区分反讽与非反讽(反讽标1,非反讽标0)。标注完成后,统计其中有3 000 余条反讽语句。为平衡数据集,本文从反讽语句与非反讽语句中各抽取3 000 条共6 000 条作为数据集。
文本分类通常使用卡方检验或者TF-IDF 的方法进行特征选择,本文选择使用卡方检验的方式进行特征选择。卡方检验是通过对特征进行打分后排序,最后选择排名靠前的特征来表示文本。
卡方检验公式为:
式中,A为实际值,T为理论值。
针对反讽数据集进行深入分析,人工提取了若干个特征,再通过计算这些特征卡方值得到的TOP5 如表1 所示。
表1 特征卡方统计值
词嵌入向量是指把一个词转换为一个对应的词向量的过程。由于计算机无法识别文本信息,因此在利用机器学习的方式进行文本训练时,需要提前将文本转化为词向量。目前,常用的词向量训练模型为Word2Vec 模型,其包含CBOW 模型和skip-gram 模型。本文选择使用skip-gram 模型训练词向量。
skip-gram 模型是从目标词w的上下文中选择一个词,将其词向量组成上下文的表示。
对于整个语料而言,skip-gram 模型的目标函数为:
式中,w为中心词,Context(w)为文本环境,W为整个语料库的词语集。
3.4.1 卷积神经网络在文本处理上的应用
卷积神经网络在文本上的应用一般使用卷积操作处理词向量,生成多个特征向量。对这些特征向量进行最大或平均池化操作,得到相对应的句子重要特征,最后池化操作得到的特征组合即为文本的向量表示。对于本文的反讽识别问题,将其连接至softmax 层或sigmoid 层,即可构建出完整的模型。
卷积神经网络一般由输入层、卷积层、池化层、全连接层和输出层构成。输入层一般将文本分词并进行词向量转换后形成的矩阵输入至卷积神经网络,如x(x1,x2,…,xn),其中xi∈Rk表示句子中的第i个词的词向量,向量维度为k。卷积层使用卷积核对x(x1,x2,…,xn)进行运算,卷积核矩阵为w∈Rh,k,其中h为卷积核处理词的数量。卷积层运算为:
式中,f为激活函数,xi:i+h-1表示从第i到第i+h-1 个词语,b表示偏置量。经过单个卷积核操作后得到特征向量c(c1,c2,…,cn-h+1),c的维度为n-h+1。
池化层采用最大池化的方式获取特征向量c中数值最大的元素,每个特征向量池化后取其中一个最大值并舍弃其他值。经过池化层操作后,得到特征信息c'(c'1,c'2,…,c'm):
全连接层将特征向量映射到向量z(zj)上,并输入分类器进行分类。根据softmax 公式得到各个类别的概率分布p(yi|z;θ):
式中,θ为变量参数,bj为偏置参数,yi为分类类别。输出层输出概率最大的分类类别作为预测值。
3.4.2 模型结构
本文使用的模型结构如图1 所示。该模型共分为6 个层,分别为输入层、融合层、卷积层、池化层、全连接层和输出层[5]。下面将对模型结构进行详细介绍。
图1 模型结构
(1)输入层。该层主要是把数据清洗后的微博句子与经卡方检验后选取的TOP20 的微博语言特征分别进行分词与词向量转换形成句子矩阵与特征矩阵,最后输入到该模型。
(2)融合层。将特征矩阵与句子矩阵进行融合。
(3)卷积层。对特征数据使用多个卷积核进行卷积操作,由于CNN 处理文本时在矩阵的行方向移动卷积核窗口无任何作用,因此卷积核的宽度即为特征向量维度。
(4)池化层。池化层用于接收卷积层提取的特征向量。选择对这些特征向量进行最大池化处理,以提取特征向量中更加重要的特征。采用最大池化处理能够有效降低网络训练参数和模型的过拟合程度。
(5)全连接层。全连接层在整个卷积神经网络中起到“分类器”的作用,主要将学到的“分布式特征表示”映射到样本标记空间。
(6)输出层。使用sigmoid 函数对待判定句子进行反讽二分类识别,输出概率大于等于0.5 则打标签“1”(判定为反讽),若输出概率小于0.5 则打标签“0”(判定为非反讽)。
3.5.1 模型参数
数据集中最长的句子包含116 个词,词向量为300 维,数据集中的80%作为训练集,20%作为测试集。模型卷积窗口大小为3、4、5,每种窗口512个,迭代次数为20 次,batch size 为32。由于模型按照此参数设置出现了过拟合现象,且无论如何调整这些参数过拟合现象均未得到改善。因此,加入dropout 参数(drop=0.5)与正则化,最终解决了过拟合问题。以上所有参数均为多次调参后的最优结果。
3.5.2 模型评估结果及分析
前期实验中,融合微博反讽特征的词袋模型分别使用随机森林分类器、朴素贝叶斯分类器、支持向量机分类器的实验评估结果,分别如图2、图3和图4 所示。本文使用的融合微博反讽特征的卷积神经网络模型评估结果如图5 所示。如表2 所示,与融合微博反讽特征的词袋模型使用传统机器学习分类器评估结果相比,本文使用的融合微博反讽特征的卷积神经网络模型精确率与召回率均有明显提高,改善了反讽识别率较低的问题。
图2 融合反讽特征的随机森林分类器词袋模型评估结果
图3 融合反讽特征的朴素贝叶斯分类器词袋模型评估结果
图4 融合反讽特征的支持向量机分类器词袋模型评估结果
图5 融合反讽特征的卷积神经网络模型评估结果
表2 融合反讽特征前后训练结果对比
本文主要研究融合微博语言特征的卷积神经网络反讽文本识别模型,与前期工作中提出的融合微博语言特征使用传统机器学习分类器的词袋模型相比,准确率、召回率等指标均有明显提升。