人机问答的系统中自然语言理解(natural language understanding, NLU)是基础任务, 在意图识别环节如果可以得到准确结果, 可以降低整体自然语言理解的复杂度, 给予问句的文本对应标签后再进行处理. 相较于没有或者效果不佳的意图识别环节, 准确的分类可以极大程度的减轻后续的任务量. 而意图识别任务从输入和输出结果上来看, 可以将该功能模块划分到自然语言处理(natural language processing, NLP)的文本分类任务中, 模块的目标是将用户输入的对话文本经过算法、模型得到概率分数, 最终将这句文本分类到对应的意图标签中, 为下游的任务做铺垫.
随着神经网络技术的不断进步, 以卷积神经网络为基础的意图识别模型已得到大量的研究, 各类模型也取得了较好的成果, 但是卷积神经网络仅使用局部特征, 忽略了文本全句带来的信息. 因此, 为了进一步结合语料的局部特征和全局特征来分析问句, 本文提出了一种多池化类型的TextCNN和BiGRU-att相结合的双通道短文本意图识别模型AB-CNN-BGRU-att (ALBERT-TextCNN-BiGRU-attention)模型. 利用双通道得到不同特征, BiGRU-att得到文本的全局特征, 同时在TextCNN的传统池化层中, 使用不同大小卷积核和不同池化策略相结合, 得到更加丰富的局部特征. 实验结果证明了使用AB-CNN-BGRU-att模型进行意图分类任务, 相比于其他现流行的意图识别模型在THUC-News_Title数据集上性能有所提升.
1 相关工作人机问答中存在大量的短文本, 询问句通常是口语表述, 整句字数少, 包含信息不够丰富, 这使一般的意图识别模型很难达到一个让人满意的结果. 以医疗问答为例, “我头疼去哪找医生?”这种简短的、口语表达在询问医生的时候, 表达对应的意图是希望知道“所属科室”而不是问“医院”或者一个地名. 自然语言理解的结果会直接给整体问答的答案带来影响, 如果上游对问句理解不准确就会导致答非所问的结果.
Kim[1]将用于计算机视觉的卷积神经网络用于对文本的处理上, 提出后来作为文本分类经典的TextCNN模型. 将句子矩阵用向量表示, 不同尺寸的卷积核进行卷积操作类似n-gram的特征抽取, 将得到的特征进行一个下采样的操作, 将压缩后的特征放入全连接层得到分类的标签. 在TextCNN提出以后, 大家发现适用于图像处理的神经网络在文本领域也可以有不错的效果, 也是给了众多学者一个新的方向和灵感. 代令令[2]提出针对中文文本分类使用fastText不仅可以提高系统准确度同时还可以缩短分类时间, 这对问答系统很重要. 张倩[3]也同样意识到缩短意图识别的时间十分重要, 张倩提出结合自注意力机制的GRU用于意图识别, 在保险问题数据集上对比其他方法不仅准确度达到最佳, 所用时间也大幅缩短. 侯雪亮等[4]和Wang等[5]意识到经典的TextCNN模型无法很好地处理短文本问题. 侯雪亮等选择将短文本关键词重构后得到的特征作为FastCNN的输入, 将原始的特征值作为TextCNN模型的输入, 使用多神经网络混合的方法提高模型对短文本的分类能力. Wang等则是提出了采用无线性滑动法和n-gram语言模型获得丰富的文本特征, 经实验表明, 作者提供的方法可以显著改善短文本分类过程中的分类结果. 马思丹等[6]对Word2Vec进行改进, 先得到文本关键词的重叠部分和非重叠部分, 再通过计算文本的相似度用KNN来进行分类. 实验表明, 马思丹等提出的方法, 对比传统的分类模型效果有所提升. 孙红等[7]和迟海洋等[8]在输入的词向量模型上, 认为静态词向量无法很好地表征句子, 所以在提出的BBGA模型中, 对嵌入层没有选择Word2Vec来表示词向量, 而是选用语义表征能力更强的BERT来训练, 在嵌入层让模型得到更加丰富的信息, 将训练得出的词向量放入BiGRU得到句子的全局特征, 最后利用注意力机制突出关键信息得到分类标签. 孙红等的模型在THUCNews数据集上的分类效果优于TextCNN模型, 迟海洋等的模型也在自己的数据集上证明了该方法能提高意图识别的准确性. 郭云雪[9]提出了将BERT模型和Word2Vec模型融合作为词嵌入层的模型, 丰富的语句特征同样提升了模型的分类性能. 温超东等[10]提出了ALBERT-BiGRU模型, 同样, 作者在词向量的选择上, 也没有选择传统的静态词向量, 但是在动态词向量的选择上, 作者考虑到复杂的BERT模型对硬件的要求, 从而选用了更为轻减的ALBERT语言模型. 同时, 作者考虑到所涉及领域的多为中长距离词, 选择了使用BiGRU为模型主体, 保留长语句的语义信息. 在效果上, ALBERT作为嵌入层的效果和BERT类似, 同样明显优于Word2Vec和GloVe. 李飞鸽等[11]和黄星宇[12]使用更为轻减的ALBERT语言模型获取动态词向量, 将向量送入TextCNN层处理适应各自领域的意图识别任务. 曾诚等[13]也同样使用ALBERT模型做为嵌入层, 将得到的特征作为BiGRU层的输入, 以3大视频软件的弹幕为数据集进行对比实验, F1值优于其他模型.
但是, 在现在的研究中, 有学者[14–18]意识到, 虽然短文本语料更在意局部特征, 但是也不能完全忽视了全局特征对结果的影响, 提出了多通道的方法, 同时兼顾了局部特征和全文的信息, 双通道分别对来自嵌入层的输入进行处理, 再融合特征进行分类. 吴迪等[19]提出在双通道的模型基础上, 改进嵌入层, 同时使用ELMo和GloVe, 将静态词向量和动态词向量相结合. 实验表明, 该方法在IMDB等数据集上相比其他常用模型均有提升.
在以上的研究基础上, 我们首先结合文献研究提出一种适合意图识别的双通道模型, 兼顾文章局部特征和全局特征, 嵌入层使用ALBERT预训练语言模型让模型整体更加轻便. 其次, 在双通道模型中, 提出一种改进的TextCNN模型, 结合多种池化策略混合池化方式得到更丰富的局部特征. 最后通过实验验证了本文提出的算法相比其他算法具有一定的优越性.
2 AB-CNN-BGRU-att模型结构以常见的BERT-TextCNN模型为例, TextCNN主要在卷积层和池化层提取信息, 在卷积层使用卷积核滑过大小为取词长短, 在池化层使用不同池化策略得到局部特征. 但是TextCNN忽略了问句整句文字的信息, 为了得到全局特征, 本文在BERT-TextCNN的基础上, 添加了BiGRU网络, 同时用更加轻量化的ALBERT代替了原模型中的预训练语言模型BERT, ALBERT在减少了模型参数的同时, 也能像BERT一样输出丰富语义的词向量, 这些丰富的向量分别传入TextCNN和BiGRU中, 在TextCNN中通过不同大小卷积核和不同池化策略提取丰富的局部特征, 在BiGRU中得到全局特征, 得到局部特征和全局特征后, 进而将两种特征融合, 经过Dropout和Softmax输出概率值实现多分类. 模型架构如图1所示.
2.1 词嵌入层
常用的词嵌入模型有很多, 比如Word2Vec、GloVe和BERT等, 其中BERT已经在大量NLP学者的实验中得到肯定, 是最优的几种模型之一. ALBERT预训练语言模型是BERT的变种, 简化了原生的BERT, 但两者效果相似. 例如在ALBERT官方论文中给出的数据显示, 在几个具有代表性的现有任务中, ALBERT-large的性能已经和BERT-base接近, 但是后者参数量却是前者的6倍, 时间也是前者的近3倍. 所以, 本文在选取模型的词嵌入层时选择了ALBERT, 其模型结构如图2所示.
输入的文本进入词嵌入层, 会在开始和结尾分别打上[CLS]和[SEP]的标签, 用于确定一句话的位置. 将文本序列化得到的En向量经过Transformer编码器提取向量特征得到Tn. ALBERT和BERT相同, 两者均使用了Transformer中的编码部分, 该部分由多个相同的网络层组成, 每层都是由残差网络连接“Multi-head attention”层和“FeedForward”层组成. 该环节中, “Multi-head attention”层是核心模块, 文本序列中的每一个query、key和value组成输入向量 Q、K、V, 经过“Multi-head attention”, 具体计算公式如式(1)–式(3)所示.
$ hea{d_t} = {\text{Attention}}(QW_t^Q, KW_t^K, VW_t^V) $ | (1) |
$ {\text{Attention}}(Q, K, V) = \text{Softmax}\left(\frac{{Q{K^{\mathrm{T}}}}}{{\sqrt {({d_t})} }}\right)V $ | (2) |
将输出矩阵拼接:
$ MultiHead(Q, K, V) = {\text{Concat}}(hea{d_1}, hea{d_2}, \cdots, hea{d_h}){W^0} $ | (3) |
其中,
为获取文本语料的全局特征, 得到模型对文本大意的了解, 本文在ALBERT得到词向量后连接BiGRU层, 在该层针对全句获取更多特征信息. GRU和LSTM均是针对RNN梯度消失问题提出的改进模型, 两者皆提出利用门控机制来选择记忆或者遗忘信息, 从而解决RNN存在的梯度消失问题.
同时GRU又是LSTM的改进模型, 在LSTM的3个门的基础上进行改进, 将门的个数减为两个, 用更新门来代替LSTM输入门和遗忘门的功能. 大量实验验证在数据量不是特别庞大时, GRU的性能和LSTM相差不大, 同时因为门个数减少, 参数更少的GRU训练的时间更短, 具体实验详见第3.5节, 在实验数据的支持下, 文本模型在提取全局特征的工作上, 选择了GRU网络为基础. GRU更新门和重置门的相关计算公式如式(4)和式(5)所示:
$ {{\textit{z}}_t} = \sigma ({W_{\textit{z}}} \cdot [{h_{t - 1}}, {x_t}]) $ | (4) |
$ {r_t} = \sigma ({W_r} \cdot [{h_{t - 1}}, {x_t}]) $ | (5) |
其中,
GRU模型当前时刻的输出与上一时刻有关, 具体计算公式如式(6)所示:
$ {\tilde h_t} = \tanh (W \cdot [{r_t} * {h_{t - 1}}, {x_t}]) $ | (6) |
其中,
GRU模型最后输出的结果与当前时刻的输出和上一时刻的隐藏状态都有关系, 具体计算公式如式(7)所示:
$ {h_t} = (1 - {{\textit{z}}_t}) * {h_{t - 1}} + {{\textit{z}}_t} * {\tilde h_t} $ | (7) |
其中,
GRU中的隐藏状态是单向传递, 只在意输入的当前状态, 但是文本信息中上下文对当前的状态都有影响, 不能单纯地考虑当前的输出, GRU的单向传播无法得到后来信息对先前状态的影响, 为了得到完备的输出信息, 本文使用GRU的变体 BiGRU. BiGRU由两个方向相反的GRU叠加实现, 输出信息受前后两个方向的结果影响, 最后的输出结果如式(8)所示, BiGRU的模型结构如图3所示.
$ h_t^{(i)} = [\overrightarrow h _t^{(i)}, \overleftarrow h _t^{(i)}] $ | (8) |
其中,
注意力机制是为了给文本中的词对应的权重, 使对用的结果可以根据权重的大小做出对重要特征的偏向, 让模型将关注度聚焦在权重得分更高的词上提高模型分类的准确性. Attention层首先对每个BiGRU模型输出向量相应位置计算各自的词语权重, 该部分最终的句子表示为所求出的权重与对应位置特征向量的加权和. BiGRU-att层让BiGRU模型在本身的基础上更好的聚焦了句子中权重得分高的重点词, 从而更好地获得输入文本的全局特征.
2.3 改进的TextCNN层原始的TextCNN模型有嵌入层、卷积层、池化层和全连接层. 改进的TextCNN模型由多个大小不一的卷积层、不同池化策略的池化层和全连接层组成, 模型结构如图4所示.
图4中改进的TextCNN层的卷积部分通过大小不同的卷积核对文本特征进行卷积, 卷积核的宽度和Token Embedding的维度一致, 向量矩阵的行信息代表词, 当卷积核的宽度和Token Embedding的维度不一致时, 卷积核就无法提取完整的词信息. 该矩阵通过非线性激活函数得到特征映射矩阵
$ {c_i} = f(w \cdot {x_{i:i + h - 1}} + b) $ | (9) |
其中,
短文本的问句中, 句子本身长度有限, 由于双通道的结构, TextCNN模型更在意对文本的局部特征提取. 询问词一般长度较短, 本文模型在卷积时, 对局部特征提取选取的卷积核大小也没有使用通用的3、4、5, 而是选取了大小分别为2、3、4的卷积核, 同时, 对于大小不一的卷积核在卷积时进行调整, 采取不同的池化策略.
在卷积核大小为2的卷积操作后, 模型采用K-Max-pooling池化方法, 卷积后的特征经过K-Max-pooling层进行池化, 获取采样过程中得分前K个的较大值. 在这里本文没有选用文本分类中最常见的最大池化方法, 因为在卷积核大小为2, 步长为1的卷积操作中, 得到的信息是最丰富的, 最大池化方法忽视了一些可能多次出现的特征, 对于这些特征最大池化方法只能看到一次. 在K-Max-pooling池化方法中, 可以保留得分较高的K个特征, 同时还可以保留部分特征间的相对顺序信息.
在卷积核大小为3的卷积操作后, 模型采用最大池化方法, 得到卷积后产生的最大特征, 忽略文本中不重要的信息, 抛弃弱的特征, 减小噪音影响, 突出关键词.
在卷积核大小为4的卷积操作中, 模型分别采用最大池化策略和平均池化策略, 然后将两次得到的特征拼接. 在池化操作中, 最大池化和平均池化信息是互补的, 平均池化策略考虑到每一个词的信息, 最大池化策略只考虑得分最高的特征.
在通过3个大小不一的卷积核和对应的池化操作后, 得到了向量不同的局部特征, 为了避免过拟合, 模型在TextCNN的池化层后设置Dropout层, 提高泛化能力. 将改进的TextCNN层得到的组合特征和BiGRU-att层得到的全局特征拼接融合得到最终的特征向量, 通过最后的全连接层得到分类结果, 计算公式如式(10)所示:
$ Z=\text{Softmax}({W}_{Z}\cdot F+b) $ | (10) |
其中,
AB-CNN-BGRU-att算法通过将输入的文本语料经过模型处理, 得到对应意图标签的概率进行意图识别. 具体算法流程如算法1所示.
算法1. AB-CNN-BGRU-att算法
输入:
输出: 意图识别标签结果.
1. 数据预处理, 导入训练集, 测试集
2. 加载ALBERT模型, 获得动态词向量Token //Token简写为T
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13. END
3 实验与结果分析 3.1 实验数据集实验使用第1个数据集为THUCNews_Title数据集, 该数据集抽取了THUCNews的标题集合, 共计20万条, 文本长度大多数不超过30字符合短文本的要求. 数据集包含体育类、时政类、教育类、科技类等总计10个类别, 数据量分布平均.
实验选择的第2个数据集是阿里天池实验室的医疗搜索检索词意图分类数据集(KUAKE-QIC)来验证模型性能. 在医疗搜索中, 对搜索问题的意图分类可以极大提升搜索结果的相关性, 特别是医学知识具备极强的专业性, 对问题意图进行识别也有助于融入医学知识来做增强搜索结果的性能, KUAKE-QIC就是针对这样的背景产生. 该数据集共有病情诊断、病因分析、治疗方案、就医建议、疾病描述等11种分类, 训练集数据6931条, 验证集数据1955条, 测试集数据1994条. 经过统计, 有6684条数据的长度小于30字, 约占总数据集的96%, 符合实验数据集对短文本医疗数据的期待.
3.2 实验设置AB-CNN-BGRU-att模型中改进版TextCNN参数设置如表1所示.
AB-CNN-BGRU-att模型中BiGRU-att参数设置如表2所示.
3.3 实验结果
通过对上述模型超参数的调节, 使用THUCNews_Title对模型进行训练和验证, 模型的loss和accuracy均能很好的收敛.
验证结果如图5所示, THUCNews_Title测试集数据分布平均, 模型得到每一类别的结果并进行对比, 由图5可知, 模型对每一类的分类结果各评价指标均不低于90%, 其中科技类, 股票类, 社会类3种分类下的文本各项评价指标较低, 分析数据集可以得出原因, 科技类的文本更加复杂不常见, 股票的文本以及社会文本和其他标签下的文本相近容易混淆, 导致了分类准确性不高.
对于KUAKE-QIC数据集, 实验共训练20个epochs, 模型的loss和accuracy均能很好地收敛. 测试集准确率达到86.02%, 在CBLUE3.0排行榜中, 可以排到前三.
3.4 对比实验为了验证本文模型选取的BiGRU-att层相比BiLSTM-att层效果更好, 本研究设置对照实验, 分别使用两层网络加入本文模型, 在网络隐藏层个数, Dropout大小, epoch个数等其他参数保持一致的基础上, 对每个epoch消耗的平均时间、训练总时间、最后的准确度和F1值进行对比, 两个网络每个epoch消耗的时间对比如图6所示, 两个网络总体对比如表3所示.
在训练模型所需时间上, 使用BiGRU-att层明显优于使用BiLSTM-att层, 模型分别使用两个网络层得到最后的准确度和F1值也相近. 在考虑到训练代价和训练结果之后, 本文选取了BiGRU-att层作为提取全局特征的网络层.
同时, 为验证本文模型与其他模型在同等条件下的优越性, 本文设置对比实验进行对比, 对比实验模型信息如下.
1) SAttBiGRU: 先使用BiGRU网络得到全局特征, 再使用Self-Attention对上游输出的特征进行加权达到增强文本特征的目的, 最后得到更加丰富的特征信息后进行分类.
2) Self-Attention-CNN: 在基础的TextCNN上结合Self-Attention, 对TextCNN的嵌入层得到的向量使用Self-Attention进行加权, 让卷积层得到的文本信息更加紧密, 使用Max-pooling进行池化, 再通过全连接层经过
3) BiGRU-MCNN: 分别使用BiGRU模型提取全局特征, 多通道CNN模型提取细致局部特征, 将两类特征融合, 再通过全连接层经过
4) MC-AttCNN-AttBiGRU: 首先采用注意力机制分别对多通道CNN和BiGRU 进行加权, 再将得到的文本特征向量进行拼接后通过全连接层经过
对比实验结果如表4所示, 使用准确率(Acc)、精度(Pre)、召回率(Recall)和F1值作为评价指标. 结果表明, AB-CNN-BGRU-att模型在各项性能上相较于其他模型均有一定优势. 对比现流行模型在使用相同数据集THUCNews_Title的实验中, 本文模型的各项指标相对其他模型的最优仍有1–2个百分点的提升, 对比实验的数据证明了本文提出的AB-CNN-BGRU-att模型具有一定优越性.
3.5 消融实验
为了验证本文提出模型针对短文本分类的有效性, 对模型设置了消融实验, 分解了各个局部网络, 分别设置了TextCNN、改进的TextCNN、BiGRU-att、AB-CNN-BGRU-att, 消融实验的词嵌入层均为ALBERT. 消融实验结果如表5所示.
由表5可以看出, 基础的TextCNN模型在分类结果上效果并不理想, 各项指标均没有达到90%, 原因可能在于基础的TextCNN对于短文本的处理效果不佳, 改进的TextCNN模型各项指标有了明显的提高, 实验数据证明, 使用不同大小卷积核和不同池化策略相结合, 可以得到更加丰富的局部特征, 从而提高模型性能. BiGRU-att模型的效果略逊于改进的TextCNN模型, 但实验也得到了较为理想的结果, 证明了全局特征在意图识别任务中也同样重要. AB-CNN-BGRU-att模型结合了局部特征和全局特征, 实验结果比改进的Text-CNN和BiGRU-att都有近两个百分点的提升.
4 结论与展望
本文结合ALBERT、BiGRU-att以及改进的TextCNN模型, 提出一种结合CNN和BiGRU-att的双通道短文本意图识别模型. 该模型将ALBERT得到的向量分别送入BiGRU-att网络模型和TextCNN模型, 在BiGRU-att网络模型得到全局特征, 在采用了多种池化策略混合池化方式的TextCNN得到局部特征, 将两种特征融合后经过全连接层输入
虽然本文的模型可以有效地识别出短文本的意图, 但是算法模型仍然离不开大量已标注的数据集作为基础, 未来的工作希望可以使用半监督甚至无监督的模式来训练模型, 做到在减少人工标注工作量的同时, 提高模型性能.
[1] |
Kim Y. Convolutional neural networks for sentence classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha: ACL, 2014. 1746–1751.
|
[2] |
代令令. 基于fastText的问答系统用户意图识别与关键词抽取研究 [硕士学位论文]. 南宁: 广西大学, 2018.
|
[3] |
张倩. 基于问答系统的问句意图识别方法研究 [硕士学位论文]. 重庆: 重庆大学, 2020.
|
[4] |
侯雪亮, 李新, 陈远平. 基于多神经网络混合的短文本分类模型. 计算机系统应用, 2020, 29(10): 9-19. DOI:10.15888/j.cnki.csa.007493 |
[5] |
Wang HT, He J, Zhang XH, et al. A short text classification method based on n-gram and CNN. Chinese Journal of Electronics, 2020, 29(2): 248-254. DOI:10.1049/cje.2020.01.001 |
[6] |
马思丹, 刘东苏. 基于加权Word2Vec的文本分类方法研究. 情报科学, 2019, 37(11): 38-42. |
[7] |
孙红, 陈强越. 融合BERT词嵌入和注意力机制的中文文本分类. 小型微型计算机系统, 2022, 43(1): 22-26. |
[8] |
迟海洋, 严馨, 周枫, 等. 基于BERT-BiGRU-Attention的在线健康社区用户意图识别方法. 河北科技大学学报, 2020, 41(3): 225-232. DOI:10.7535/hbkd.2020yx03004 |
[9] |
郭云雪. 基于深度学习的人机对话中短文本意图识别 [硕士学位论文]. 哈尔滨: 哈尔滨理工大学, 2020.
|
[10] |
温超东, 曾诚, 任俊伟, 等. 结合ALBERT和双向门控循环单元的专利文本分类. 计算机应用, 2021, 41(2): 407-412. |
[11] |
李飞鸽, 王芳, 黄树成. 基于ALBERT与TextCNN的中文文本分类研究. 软件导刊, 2023, 22(4): 27-31. DOI:10.11907/rjdk.221591 |
[12] |
黄星宇. 基于ALBERT的医疗问答系统设计与实现 [硕士学位论文]. 成都: 电子科技大学, 2022.
|
[13] |
曾诚, 温超东, 孙瑜敏, 等. 基于ALBERT-CRNN的弹幕文本情感分析. 郑州大学学报(理学版), 2021, 53(3): 1-8. |
[14] |
李洋, 董红斌. 基于CNN和BiLSTM网络特征融合的文本情感分析. 计算机应用, 2018, 38(11): 3075-3080. |
[15] |
李启行, 廖薇, 孟静雯. 基于注意力机制的双通道DAC-RNN文本分类模型. 计算机工程与应用, 2022, 58(16): 157-163. DOI:10.3778/j.issn.1002-8331.2101-0196 |
[16] |
邢鑫, 孙国梓. 基于双通道词向量的ACRNN文本分类. 计算机应用研究, 2021, 38(4): 1033-1037. |
[17] |
康雁, 李晋源, 杨其越, 等. 基于双通道词向量的卷积胶囊网络文本分类. 计算机工程, 2019, 45(11): 177-182. |
[18] |
宋中山, 牛悦, 郑禄, 等. 多尺度CNN卷积与全局关系的中文文本分类模型. 计算机工程与应用, 2023, 59(20): 103-110. DOI:10.3778/j.issn.1002-8331.2209-0093 |
[19] |
吴迪, 王梓宇, 赵伟超. ELMo-CNN-BiGRU双通道文本情感分类模型. 计算机工程, 2022, 48(8): 105-112. |