1. 引言
餐饮业作为“永不落幕的黄金行业”,近年受网络发展与疫情的影响,呈现“堂食”与“外卖”并存之势,用户评论的情感倾向对于消费者选择餐饮商家的发展发挥着至关重要的作用,对于商家的发展和改善提供了有力的支撑。
2017年7年国务院发布的《新一代人工智能发展计划》表明中国目前人工智能技术发展迅速,涉及领域包括计算机视觉与自然语言处理,如图像理解 [1] 、语音识别 [2] [3] 、机器翻译 [4] 以及无人系统 [5] 等。本文所涉及的情感倾向分析实际上属于自然语言处理中的文本分类,20世纪90年代,对于文本分类的机器学习方法相继提出,如朴素贝叶斯算法 [6] [7] 主要针对特征条件的独立假设学习联合概率分布模型,再在此模型的基础上结合贝叶斯的定义计算后验概率的最大输出;K近邻 [8] [9] 模型主要通过计算待分类文本与已知类别文本之间的距离,通过返回K个距离最小点所在类别的出现概率,预测分类结果;支持向量机 [10] [11] 通过寻找尽可能将两种类型文本分开最大间隔的线性分类器预测分类结果。
机器学习在对于特征提出上存在一定的欠缺,面对语义复杂的情形,机器学习模型的鲁棒性存在一定的挑战性,因此Hin Ton et al. [12] [13] 于2006年开创了深度学习元年,引入人工智能算法,对文本分类提供了有力支撑。2016年Liu et al. [14] 提出了TextRNN模型,能够处理序列问题但不能很好地处理文本数据的上下语义信息;1997年Hochreiter et al. [15] 提出了LSTM模型,在RNN的基础上加入记忆细胞,缓解了文本数据的长期记忆问题;2015年Tang et al. [16] 提出了GRU模型,在RNN的基础上增加了Reset门和Updata门,相比LSTM模型减少了训练参数,并且优化了模型的训练时间。
RNN能够保留时序数据的顺序性,但其复杂度较高,相反,CNN能够更加有效地提取局部信息特征并且节约训练成本。2014年Kim [17] 将卷积神经网络引入文本文类中,提出了TextCNN,将文本转化为词向量,通过卷积核捕捉文本特征;CNN能够较好地捕捉文本的局部特征,但缺少对文本全局信息的观察,因此通过结合RNN和CNN两种类型的模型,可以优化模型结构,2015年Zhou et al. [18] 提出CNN-LSTM模型,通过CNN结构提取文本的局部特征,再经过LSTM模型对于文本的全局信息进行捕捉,能够达到较好的效果。
随着深度学习的发展,注意力机制成为提高模型精确度的必要手段之一,一些学者尝试将注意力机制融入到网络模型结构当中去。2018年提出的残差注意力机制 [19] 通过对不同通道赋予不同的权重,抑制非必要的通道,从而更加突出所需要的特征;此外,Li et al. [20] 在残差注意力机制的基础上进行改进,通过自适应调整感受野大小选择卷积核大小;2017年Vaswani et al. [21] 提出自注意力机制,并在此基础进行改进提出多头自注意力机制,针对文本分类,当神经网络的输入是多个大小不一样的向量,并且可能因为不同向量之间有一定的关系,因此自注意力机制通过关注内部信息改善模型效果。
目前文本分类面临的问题包括:1) 文本信息过长,难以提取特征;2) 难以赋予反映语义特征的词语一定权重;3) 难以同时关注文本的全局与局部信息。在现有研究成果中,基于以上问题一些学者针对文本分类融合了不同的网络结构,得到了较好的效果。2023年于庆洋气 [22] 提出将注意力机制融入LSTM模型当中,缓解了在文本长度较长的情况下特征关注不足的问题;针对难以提取语义特征的问题,2023年冯宇航 [23] 等人提出一种基于门控单元特征融合的BERT-CNN情感分析方法,具有强大的语义捕捉能力;2023年王佳慧 [24] 提出基于CNN与Bi-LSTM的混合模型,该模型很好地对文本的全局信息以及局部信息进行融合,生成包含丰富语义信息的特征向量。
现有研究成果难以将关注文本上下信息、同时关注全局与局部信息以及提取语义特征等效果同时结合,针对文本分类问题,本文通过构建K近邻分类模型、LSTM长短时记忆模型、BiLSTM模型,以及CNN-Multi-BiLSTM模型对餐饮服务评价情感倾向进行分类,并通过评估指标对模型进行评估。将单向LSTM模型改善为双向LSTM模型,即BiLSTM模型,并在此基础上并联增加CNN结构以及多头注意力机制,提出CNN-Multi-BiLSTM模型,缓解了以下问题:1) BiLSTM模型的引入缓解了由于未能关注文本的未来信息而导致的文本特征提取错误问题;2) CNN结构的引入能够更加关注反映情感倾向的词语;3) 多头注意力机制的引入缓解了由于忽略文本内部局部信息对于词语的情感倾向判断错误的问题。
2. 网络模型
2.1. K近邻
K近邻分类模型是比较传统的机器学习模型,作为目前使用比较广泛的算法之一,可以为回归和分类任务提供一定的支撑。
如图1所示,已知蓝色矩形与红色三角形代表两类已知数据,其标签及位置分布已知,求绿色圆形(代表未知分类的数据)分类结果,K近邻分类模型的做法是寻找与该绿点相邻最近的K个点,然后通过多数表决的方式把绿点划分到这K个最近点出现频数最高的类。
假设输入训练集为
,实例特征向量为x,总共有N个样本,
为实例的特征向量,
为实例的类别,
,输出为实例x所属的类别y。算法流程如下所示:
Step1 根据给定的距离度量,在训练集T中找出与x最近的K个点,涵盖这K个点的x的邻域记为
。
Step2 在
中根据决策规则(如多数表决)决定x的类别y,数学原理如下:
(1)
其中i为指示函数。

Figure 1. K schematic diagram of nearest neighbor classification model
图1. K近邻分类模型示意图
其中,多数表决法即
到
得到的指示函数和的值排序,选择最大值对应的类别
作为输出。假设
为最大值的类别,则最终输出为
。
由两个方面决定,其中一个为计算各点与输入实例x的距离,即
(2)
(当
时,为曼哈顿距离;
时,为欧式距离;
时,为切比雪夫距离);还有一个为K值,K值越小,模型越复杂,越容易过拟合,反之模型越简单。这两个值都为超参数,本文采取遍历选取合适的超参数。
2.2. LSTM长短时记忆模型
本文选择LSTM长短时记忆模型对数据进行训练,理由如下:句子每个词语前后都存在一定的逻辑关联,因此可以作为“时间序列”进行处理,LSTM作为RNN的一种变体,通过记忆细胞可以解决长期记忆问题,寻找前后词语或者句子之间的逻辑关系。
2.2.1. LSTM层网络结构
LSTM层结构如下图所示,每次输入一个句子,按照划分的数据集中的样本顺序依次输入句子进入LSTM层,每个句子中的词语转化为词向量之后,分别进入每个记忆细胞,即图2所示:

Figure 2. Network Structure of LSTM Layer
图2. LSTM层网络结构
2.2.2. 记忆细胞网络结构
这里的记忆细胞相互串联,每个记忆细胞中包含了遗忘门、更新门和输出门,记忆细胞结构如图3所示:
遗忘门
如图4红框部分所示,遗忘门会丢弃输入不需要的信息。表达式如下公式(3),其中
为上一个记忆细胞的输入,
为当前细胞的输入,
是Sigmoid函数,以下同理,故省略:
(3)
输入门
如图5红框部分所示,输入门会选择新输入的信息,决定需要输入多少新的信息。表达式如下公式(4)、公式(5):
(4)
(5)
输出门
如图6红框部分所示,输出门会决定输出哪些信息,以及规范输出信息的格式。表达式如下公式(6)、公式(7):
(6)
(7)
通过LSTM层之后,再接着Dropout层,Dropout层的作用是随机丢弃神经元,以此达到防止过拟合的作用,最后接着全连接层,通过激活函数Softmax进行输出。
2.3. BiLSTM模型
由于传统单向LSTM模型在处理自然语言问题上只是通过依赖前期的文本信息来对接下来的文本信息进行预测,而实际上可能未来的文本信息也会之前的文本信息产生影响,即未来的文本信息对预测信息产生了影响。BiLSTM结构如图7所示。
如上图所示,有两层LSTM层,其与之前所介绍的LSTM层网络结构相似。第一层网络结构理解为正向从第一个词语输入句子,第二层网络结构理解为负向从最后一个词语反向输入句子。
2.4. CNN + BiLSTM模型
针对情感倾向而言,一个句子中的部分词语恰好反映了情感信息,BiLSTM模型很好地对句子中前后词语的关联性进行了关注,但忽略了局部信息,CNN卷积神经网络能够通过不同大小的卷积核从而提取多个局部特征,因此具有较强的局部特征提取能力,因此BiLSTM结合CNN卷积神经网络能够很好还原句子蕴含的信息。CNN + BiLSTM模型网络结构如图8所示。

Figure 7. Network Structure of BiLSTM
图7. BiLSTM网络结构

Figure 8. Network Structure of CNN + BiLSTM
图8. CNN + BiLSTM网络结构
其中,在CNN层中,句子分词后得到n个词,表示为:
,其中
表示句中第i个词,向量化可得
(8)
表示S由组成n个词构成,每个词转为d维向量,构成向量矩阵,分类时把词向量当作独立个体,采用
(9)
维卷积与向量矩阵进行卷积计算,分别表示k个词之间的局部联系,特征提取表示为
(10)
其中
为经过卷积提取过后的特征值,f为RELU函数,
表示卷积核,b为偏置,经过卷积操作之后得到局部特征向量:
,然后再通过池化函数对特征向量降维,再通过Softmax激活函数输出。
2.5. CNN + Multi + BiLSTM模型
通过CNN + BiLSTM模型可以对句子中的特征更加关注,但是不同词语对于情感分类的贡献度并不相同,因此这里考虑通过文本的内部信息对不同词语施加权重,引入多头自注意力机制,插入到CNN层之后与BiLSTM层并联,多头自注意力机制网络结构如图9所示:

Figure 9. Network Structure of Multi-head attention
图9. 多头注意力机制网络结构
首先自注意力机制减少外部信息依赖,针对信息内部对不同信息赋予权重 [8] ,在文本分类中,通过计算词语之间的相关程度赋予不同词语权重,通常可以通过查询向量(Q)、键向量(K)以及值向量(V)向量描述,这三类向量通过每条评论句子形成的词向量矩阵X乘以3个不同的权值矩阵
,
,
得到。
获取信息时,即通过Q向量查询所有待选位置,每个位置有一对K和V向量,即Q向量会和所有待选位置的K向量点积,然后经过Softmax函数加权到各自V向量,最终求和得到自注意力结果,过程如下所示:
Step 1计算Q和K的相似程度,
(11)
Step 2对相似度Softmax操作,得到权重系数,
(12)
Step 3针对权重,对V向量加权求和,
(13)
Step 4对step3中的结果放缩,提高收敛速度,
(14)
而多头自注意力相当于h个不同的自注意力的集成,如
,即加入位置信息后的词向量矩阵X分别输入到N个自注意力模块中,得到N个加权后的新矩阵
,然后按照列进行向量拼接,得到新的文本特征矩阵
。
2.6. 词向量转化
本文需要根据每位用户的评论内容对其表示的情绪进行分类,在此之前需要将中文字符转化为计算机可识别的数字,本文通过构建词向量对数据进行处理,首先我们先统计句子长度及频数,统计结果如图10所示:

Figure 10. Sentence length and frequency statistics
图10. 句子长度及出现频数统计图
从上图可以发现句子长度基本都在0~100之间,这将对后续输入模型的最长句子长度提供一定的辅助,本文直接通过构造字典,形成汉字与数值之间的映射,再产生词向量,如图11、图12所示:

Figure 11. Mapping between Chinese Characters and Numerical Values
图11. 建立汉字与数值的映射示意图

Figure 12. Schematic diagram of word vector establishment
图12. 建立词向量示意图
3. 实验
3.1. 数据集
本文通过人工筛选的方式选取某平台17,953条不同餐饮服务评价,积极情绪标注为0,消极情绪标注为1,选取数据集的80%作为训练集、20%作为测试集。由于英文字符、标点符号以及图像字符并没有评价和情感属性,因此对模型会造成一定的干扰,因此这里会对于非中文字符进行剔除;其次,由于文章中部分句子分词错误,比如未分词等情况,为了词向量的生成,那么这里需要剔除非中文字符过后的句子进行重新分词,并且由于分词过后的一些词语诸如量词、连词和语气词并不包含情感倾向,因此是无效的,因此对类似词语建立停用词表进行剔除,剔除后的数据格式如表1所示。

Table 1. Example of data format after word segmentation
表1. 分词后数据格式实例
最后对最终生成的不同情感倾向的标签数量进行统计,如表2所示:
3.2. 实验参数与环境
为了保证实验的公平性,本文通过控制变量法保证每个实验中的超参数相同,每个句子长度根据之前的句子长度的统计皆设置为100,每个词向量的维度设置为50,5个实验均将初始化学习率设置为0.005,学习率下降方式选择余弦下降方式,优化器选择Adam优化器,动量设置为0.9,weight decay设置为0.0001,Batch Size设置为32,由于迭代次数过多会导致过拟合,因此迭代次数设置为10次。实验在Linux系统中执行,实验平台为Python3.9,深度学习框架为Tensorflow2.8,利用CPU进行训练,CPU运行内存为8.00GB,处理器为AMD Ryzen 5 5625U with Radeon Graphics。
3.3. 评价指标
本文选择三种类型的指标对模型进行评估:精确率(Precision)、召回率(Recall)以及F1-Score,其中本文中TP为正确分类的积极情绪,FP为错误分类的积极情绪,FN为错误分类的消极情绪,TN为正确分类的消极情绪。
(15)
(16)
(17)
3.4. 实验结果
本文首先通过对K近邻分类模型、LSTM长短时记忆模型、BiLSTM模型以、CNN-BiLSTM模型以及CNN-Multi-BiLSTM模型进行评估,再将效果最好的CNN-Multi-BiLSTM模型与现有主流网络TextCNN、GRU以及Transformer进行对比,最终不同模型评估结果如表3、表4所示。

Table 3. Classification model evaluation
表3. 分类模型评估

Table 4. Comparative evaluation of models
表4. 模型对比评估
从上表可以观察到K近邻法作为传统机器学习算法,在分类问题上存在很大的不准确性,而在深度学习模型中,由于CNN中池化层的加入,使得训练参数减少,由于多头自注意力机制的加入,CNN-Multi-BiLSTM模型在对于情感倾向分类问题上效果最好,精确率、召回率以及F1-Score分别达到了91.5%、91.35%、91.45%,在此基础上与现有主流网络比较,部分指标均有一定提升,效果良好。
本文实际上属于自然语言的二分类问题,本文采用不同的分类模型进行分类并进行评估,择优选择模型。通过对问题一处理后的数据结果建立词向量,首先采用传统的机器学习算法K近邻居算法进行分类,效果欠佳;由于K近邻法属于传统机器学习算法,在鲁棒性以及模型的性能方面欠佳,这里考虑使用深度学习算法,首先选择LSTM长短时记忆模型,由于一个句子的前后单词都存在一定的关联性,由于单向LSTM模型没有对未来的信息加以关注,因此对LSTM进行改进,通过BiLSTM模型进行训练,对文本的未来信息给予关注,诸如“给这家餐厅点赞,因为____很温馨”,横线上的选择项可能是“送餐”、“服务态度”、“环境”,根据后面的形容“温馨”来看,排除“送餐”和“服务态度”两种类型的词语;通过加入CNN卷积神经网络,提取能够反映情感倾向的词语,比如“我很喜欢这家餐厅”这一句子当中能够反映情感倾向的词语为“喜欢”,因此CNN结构首先将这些词语转换为词向量,再通过卷积核去提取这些能够反映情感倾向的局部信息;最后,在CNN-BiLSTM模型的基础上增加多头自注意力机制,使得模型能够通过文本的内部信息反映词语的情感倾向并给予其相应的权重,比如“这家餐厅很好,我很喜欢”以及“这家餐厅不好,我不喜欢”,我们要反映词语“好”的情感倾向,通过文本的内部信息,即前句为“我很喜欢”,后句为“我不喜欢”,反映出前句的“好”反映的是积极情绪,而后句是消极情绪。
通过上述实验可以表明CNN-Multi-BiLSTM模型效果良好,能够对餐饮服务评价情感倾向分析提供有力的支撑。
3.5. 模型优缺点
1) 对于K近邻分类模型,首先k近邻算法原理容易理解,较容易实现,其次K近邻算法不需要进行训练,可以直接加入模型进行分类,并且K近邻居算法对一些异常值存在比较高的容忍度;但K近邻分类模型无法给出数据的内在含义,当正负样本不平衡时容易出现较大的偏误,并且其只选择了K个临近点作为分类的参考,因此舍弃了部分的样本,导致准确性较低。
2) 使用LSTM长短时记忆模型避免了主观判断耗时长的影响,该模型易于理解,收敛快,并且在序列建模的问题上有一定的优势,具有长时记忆功能,解决了长期依赖的问题,同时缓解了深度学习中由于网络过深导致的梯度消失和梯度爆炸的问题;但利用该模型容易产生过拟合,因此需要不断微调网络结构,其次LSTM网络结构比较复杂,训练时间相对普通网络长,如果LSTM的时间跨度很大,并且网络又很深,计算参数量将会增大,对CPU和GPU造成一定的负荷,通过对LSTM模型改善,BiLSTM模型在一定程度上更好地联结了文本上下文词语之间的关系,但是并没有提取句子中比较明显特征,并且参数量较大,因此并联CNN卷积提取特征,并加入多头自注意力机制为不同词语赋权,但自注意力模型本质在对当前位置的信息进行编码时,会过度的将注意力集中于自身的位置信息。
4. 结束语
本文针对5种分类模型进行评估,择优选择了适用于文本分类处理的CNN-multi-BiLSTM模型,精确率、召回率以及F1-Score分别达到了91.5%、91.35%、91.45%,具有较高准确性,该方法可为餐饮服务的发展以及良好转型提供一定的支持。
在未来的工作中,可以通过对不同类型问题建立更加具体的停用词表提炼更加精准的分词结果,并且可以通过对深度学习网络结构的进一步改进提高情感倾向分类的准确性和有效性。