2. 移动健康管理系统教育部工程研究中心, 杭州 311121
Engineering Research Center of Mobile Health Management System, Ministry of Education, Hangzhou 311121, China
在自然语言处理(Natural Language Processing, NLP)领域, 文本分类是一项重要任务, 具有广泛的应用场景, 比如知识问答、文本主题分类、文本情感分析等. 很多专家学者提出不同方法来解决文本分类问题, 文献[1]提出基于规则特征的支持向量机(Support Vector Machines, SVM)模型对问答系统的问题进行分类, 文献[2]朴素贝叶斯(Naïve Bayes)与SVM相结合, 提出了一种简洁高效的情感和主题分类模型. 文献[3]使用三支决策方法提取文本特征, 提高了基于规则特征的文本分类模型的准确率. 随着深度学习技术发展迅速, 不同的神经网络模型开始被应用到文本分类任务当中, 以循环神经网络(Recurrent Neural Network, RNN)[4]为代表的序列模型(Sequence Models)被大规模使用[5,6]. 文献[7]把注意力模型添加到序列模型中, 完成文本分类任务并获得比较好的结果. 文献[8]将一直用于图像处理的卷积神经网络(Conventional Neural Network, CNN)[9]首次应用到文本分类领域, 并获得较好的结果. 之后, 文献[10–12]将卷进神经网络模型做了不同程度的改变, 用于文本分类任务. 本文对文本分类领域使用的RNN模型和TextCNN模型分别作介绍, 并提出一种组合RNN和TextCNN的混合模型, 在公开数据集上对这几种模型进行对比, 以评估不同类型模型的性能, 并验证了组合模型的性能要优于单独的模型.
1 文本表示文本表示, 即将字符文本通过某种形式表示成计算机可以处理的数值化数据. 由于机器学习和深度学习的算法模型都不能直接处理字符文本, 所以在使用机器学习或深度学习模型做NLP任务时, 需要将原始的字符文本做数值化表示, 转换成数值向量. 并且, 不同的文本表示形式对算法模型结果的影响也有所不同. 根据NLP任务和算法模型的不同, 可以将文本的字或词作为最小表示单位(本文中, 以字作为文本的最小表示单位), 进行数值向量化.
文本表示方法大致分为两种, 一种是One-Hot式编码. 这种方式是从待数值化的所有文本中建立一个全局的完备字典, 该字典包含文中出现的所有字, 用字典序的数字来表示一个字. 采用这种方法编码, 字典大小就是字的向量维度. 在向量中, 只有该字的字典序对应位置上的数字为1, 其他位置均为0. 这种方法有两个主要缺点, 一是字的向量十分稀疏, 二是字与字之间没有任何关联, 比如它并不能表现出同性字或意义相近的之间的相似性. 另外一种方法是分布式表示法(Distributed Representation)[13], 它基于“上下文相似的词, 其语义也相似”这一假说, 其基本思想是使用统计学方法通过训练把句子中的每个字映射成K维的实数向量, 通过字与字的实数向量之间的距离(如欧氏距离、余弦距离等)来描述字之间的语义相似性, 即相似语义的字具有相似的数值向量. 现在的NLP任务中, 使用的大多是基于分布式表示法的文本表示模型. 代表的有文献[14]提出的Word2Vc模型和斯坦福大学提出的GloVe模型[15]. 在本文的实验部分, 采用Word2Vec模型训练的字向量作为文本分类模型的输入数据.
2 文本分类神经网络模型 2.1 LSTM循环神经网络(Recurrent Neural Network, RNN)是NLP任务中被广泛使用的网络模型. 它通过循环使用同一个网络神经元来处理任意长度的序列, 将序列前面的特征传递给后面作为输入, 从而捕获到完整的序列上下文特征信息用于序列分类或序列标注.
当序列长度较长时, 神经网络参数的训练过程会遇到梯度爆炸和梯度消失问题[15–17], 造成模型的参数学习缓慢甚至停止学习. 文献[17]提出LSTM模型, 对RNN做了改进, 其目的是解决RNN存在的梯度爆炸问题. LSTM的神经元结构如图1所示.
定义, 序列的t位置为时刻t, LSTM神经元由三个“门”控制: 遗忘门ft, 输入门it和输出门ot. 三个门的值为0或1. 在时刻t, LSTM的参数更新方式如下:
$ \widetilde {{C_t}} = tanh \left( {{W_C} \cdot \left[ {{h_{t - 1}},{x_t}} \right]+ {b_C}} \right) $ | (1) |
$ {f_t} = \sigma \left( {{W_f} \cdot \left[ {{h_{t - 1}},{x_t}} \right]+ {b_f}} \right) $ | (2) |
$ {i_t} = \sigma \left( {{W_i} \cdot \left[ {{h_{t - 1}},{x_t}} \right]+ {b_i}} \right) $ | (3) |
$ {o_t} = \sigma \left( {{W_o}\left[ {{h_{t - 1}},{x_t}} \right]+ {b_o}} \right) $ | (4) |
$ {C_t} = {f_t}*{C_{t - 1}}+ {i_t}*\widetilde {{C_t}} $ | (5) |
$ {h_t} = {o_t}*\tanh \left( {{C_t}} \right) $ | (6) |
其中, xt是t时刻的输入向量, ht-1为t-1时刻的输出向量. 输入门it控制是否将当前时刻信息存放在记忆细胞C中; 遗忘门ft控制是否使用记忆细胞的历史信息; 输出门决定是否让当前记忆细胞的信息参与当前时刻输出值的计算. WC、Wf、Wi、Wo分别为隐藏单元的权重矩阵, bC、bf、bi、bo分别为偏置矩阵. σ和tanh分别为Sigmoid函数和tanh函数, 定义由公式(7)和公式(8)给出.
$ f\left( x \right) = \frac{1}{{1+ {e^{ - x}}}} $ | (7) |
$ {\rm{tanh}}\left( z \right) = \frac{{{e^z} - {e^{ - z}}}}{{{e^z}+ {e^{ - z}}}} $ | (8) |
BiLSTM是使用两个LSTM网络分别从前向和后向处理序列, 这样能更全面地提取序列的上下文信息.
本文的实验部分, 采用BiLSTM作为RNN的替代模型, 用来与其他模型对比. 使用BiLSTM处理文本分类的基本流程结构如图2所示.
其中, xi为字向量, y为文本序列的类别. SoftMax是用于多分类的激活函数, 假设 Z=[z1, z2, …, zn]是一个n维的特征向量, 其SoftMax值由下式给出:
$ {{s}}{\left( {{Z}} \right)_{{i}}} = \frac{{{{{e}}^{{{{z}}_{{i}}}}}}}{{\mathop \sum \nolimits_{k = 1}^K {e^{{z_k}}}}} $ | (9) |
卷积神经网络(Conventional Neural Network, CNN)被广泛应用于计算机视觉中. 随着词嵌入和深度学习技术的发展, 现在很多学者开始在NLP任务中使用 CNN.
卷积操作是CNN的重要特征之一. 卷积层以特征映射为组织方式, 其中的每一个单位与前一层的局部感受野相连接, 利用共享的卷积核(或称过滤器)与局部感受野做卷积运算, 再经过激活函数(如ReLUv、tanh)做非线性运算, 得到特征值. 给定一个矩阵
$ con{v_{ij}} = \mathop \sum \limits_{u = 1}^m \mathop \sum \limits_{v = 1}^n {f_{uv}}\cdot{x_{i - u+ 1:j - v+ 1}}.{\rm{}} $ | (10) |
图3是文献[8]提出用于文本分类的TextCNN模型结构示意图, 在本文的实验部分, 使用该模型作为CNN在文本分类领域的代表模型与其他模型对比.
TextCNN通过不同的通道数目和卷积核大小, 使用一维卷积的方式提取句子矩阵的特征. Max-over-time池化层的作用是从提取的特征矩阵中选出最大值, 跟其他通道的最大值拼接, 组合成筛选过的特征向量, 继而通过SoftMax层对文本进行分类.
3 BiLSTM+CNN模型
鉴于以上描述, BiLSTM和CNN在应对文本分类问题时, 各有特色, BiLSTM由于具有自动学习记忆文本序列特征的特点, 对于文本特征的提取、语音的理解和长文本依赖问题有很好的适用性; 而TextCNN凭借不同的卷积核和通道数目, 比较适合提取更复杂的文本特征. 我们尝试将这两个模型进行组合, 组成的混合模型结构如图4所示.
在BiLSTM模型中, 其每一个神经元都可以有输出, 该输出表示为句子截至到该字符时, 网络模型提取到的句子特征. 该法提取的句子特征为二维张量, 适合TextCNN做深层次的特征提取.
BiLSTM+TextCNN组合模型的思想是, 将BiLSTM的每一个神经元输出的特征连结成句子的特征矩阵, 用作卷积神经网络的输入, 进行特征的二次提取. 具体的, 句子中的字组成的字向量序列, 经过BiLSTM模型编码成二维矩阵, 编码的过程即递归模型学习的过程, 该过程将句子的字向量特征过滤、融合成句子的特征矩阵. 递归模型的特点在于捕获长距离的文本语义特征, 对长距离的语义进行关联特征提取, 而BiLSTM模型保证了句子的前后向语义信息都可以被捕获. 经过BiLSTM模型输出的句子特征矩阵包含了句子中字与字之间长距离的语义信息, 使用TextCNN对句子的特征矩阵做卷积操作, 并通过池化进行特征筛选, 继而提取句子特征矩阵中相邻文字的关联特征, 这样相互结合, 使得句子的语义特征得以全面且深度的提取, 从而可以获得更准确的分类结果. BiLSTM+TextCNN组合模型的参数学习过程如下:
算法1. BiLSTM+TextCNN模型参数学习过程
1)随机初始化模型的参数, 设置模型批处理数据量batchsize大小和迭代次数epochs.
2)将字向量表示的句子输入到BiLSTM网络中, 获得经BiLSTM提取的句子特征矩阵.
3)将特征矩阵输入到TextCNN模型中, 进行文本特征的二次提取.
4)将第3)步由TextCNN提取的特征输入到全连接网络层和SoftMax层中获得文本的分类结果.
5)经由代价函数计算模型中参数的梯度, 进行反向传播, 更新参数值.
6)重复2)–5)步直至满足设定的epochs次数止.
模型的代价函数是模型参数学习过程中的目标函数或准则. 通过最小化代价函数来优化模型, 获得更准确的拟合参数. 模型采用交叉熵损失函数, 其表示如式(11)所示.
$ {\rm{C}} = - \frac{1}{{\rm{n}}}\mathop \sum \limits_{i = 1}^n yloga+ \left( {1 - y} \right)\log \left( {1 - a} \right) $ | (11) |
其中, n为分类任务中的类别数目, y为数据集中的真实标签值, a为模型经过学习后预测的标签值. 模型参数学习的过程就是在最小化该损失函数.
4 实验 4.1 数据集实验采用的数据集是由清华大学自然语言处理与社会人文计算实验室公开的新闻文本数据集①, 该数据集包含836 075条新闻文本, 共14个候选分类类别: 体育、财经、房产、家居、彩票、教育、科技、股票、时尚、时政、星座、游戏、社会、娱乐. 由于星座和社会的数据量过少, 在实验中略去该两类数据, 使用原数据集中的12个类别的新闻文本进行实验, 共计824 900条. 数据集划分百分之八十为训练集, 百分之二十为测试集.
4.2 实验设置实验设置为使用上述数据集进行文本分类, 并评估效果. 作为对比, 实验增加一个BP神经网络(Back Propagation Neural Network, BPNN)模型作为分类任务的基准, 用以对比BiLSTM模型、使用TextCNN模型和本文提出的BiLSTM+TextCNN的组合模型的性能. 模型的主要超参数如表1所示.
4.3 评测方法模型采用F1值作为评估标准. F1值由查准率(Precision, P)和查全率(Recall, R)经过计算获得. 定义y为模型输出的字标签预测分类值集合,
$ P\left( {y,{\hat y}} \right) = \frac{{\left| {y\mathop \cap \nolimits^ {\hat y}} \right|}}{{\left| y \right|}} $ | (12) |
查全率
$ R\left( {y,\hat y} \right) = \frac{{\left| {y \cap \hat y} \right|}}{{\left| {\hat y} \right|}} $ | (13) |
F1值由式(14)给出定义, 它是P值和R值的调和平均数, 其中β=1.
$ {F_\beta }\left( {y,\hat y} \right) = \left( {1+ {\beta ^2}} \right)\frac{{P\left( {y,\hat y} \right) \times R\left( {y,\hat y} \right)}}{{{\beta ^2} \times P\left( {y,\hat y} \right)+ R\left( {y,\hat y} \right)}} $ | (14) |
F1值越高, 模型表现越好.
4.4 实验结果
经过多次实验, 几个模型在不同类别的分类表现如表2所示. 表中列举了几个模型对所有12个分类的F1值结果(数值为多次实验数据中, 最高三次的均值). 从结果中可以看出, BPNN模型由于结构较为简单, 其性能整体落后于其他三个模型, BiLSTM模型在体育、财经、房产、股票、社会这五个分类上与TextCNN模型的表现较为接近, 但在其他分类上要弱于TextCNN模型. 而本文提出的组合BiLSTM和TextCNN的模型, 其表现整体上要好于其他两个单独的模型.
究其原因, BPNN模型结构较为简单, 只是两层全连接网络的组合, 对文本的上下文信息的特征捕获能力不强, 做不到字与字之间关联语义特征的提取, 因而整体性能要弱于业界较为通用的文本分类模型. 不过由于其模型结构简单, 在运行速度上要优于其它模型. BiLSTM模型由于循环使用神经元学习序列中潜在的关联特征, 并选择性记忆序列中的语义信息, 对文本的上下文特征捕获能力较强, 自然获得较高的分类准确率. TextCNN模型使用不同的卷积核, 对文字序列的相邻语义特征捕获能力较强, 并能通过多层卷积融合较长距离的语义关系, 因而可以得到较好的表现. 并且, CNN模型很适合并行计算, 借由GPU的加速, TextCNN模型的训练时间要比BiLSTM快很多. 本文提出的BiLSTM+TextCNN模型, 结合了BiLSTM模型和TextCNN模型的特点, 使用BiLSTM对文本序列的上下文特征做筛选和提取, 再经TextCNN进行更进一步、更细粒度的特征选择与融合, 将句子中的长、短距离文字的关联信息和句子的语义信息较为全面的捕获, 故其性能表现要优于单独的BiLSTM模型或TextCNN模型. 不过由于组合了两个复杂模型, 混合模型在时间复杂度上要差一些.
另外, 除了BPNN模型外, 其他模型的F1值均超过了0.9, 并有过半数目的分类问题F1值超过了0.95, 这说明几个模型在文本分类问题上都能够得到较为准确的结果, 并且将序列模型和卷积模型组合会得到更佳的效果.
5 总结和展望
文本分类问题一直是NLP领域关注的重点, 有很广泛的应用场景. 在处理文本分类任务时, 主流的模型有以BiLSTM为代表的序列模型和以TextCNN为代表的卷积模型. 本文介绍了这两个主流的文本分类模型, 并提出新的组合模型, 通过实验对比了不同模型的性能表现. 未来, 将多种模型组合起来解决某一类问题或是后续研究的重点.
1数据集版权归清华大学自然语言处理与社会人文计算实验室所有. 详见http: //thuctc.thunlp.org/
[1] |
Silva J, Coheur L, Mendes AC, et al. From symbolic to sub-symbolic information in question classification. Artificial Intelligence Review, 2011, 35(2): 137-154. DOI:10.1007/s10462-010-9188-4 |
[2] |
Wang SD, Manning CD. Baselines and bigrams: Simple, good sentiment and topic classification. Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Short Papers. Jeju Island, Korea. 2012. 90–94.
|
[3] |
靳义林, 胡峰. 基于三支决策的中文文本分类算法研究. 南京大学学报(自然科学), 2018, 54(4): 794-803. |
[4] |
Funahashi KI, Nakamura Y. Approximation of dynamical systems by continuous time recurrent neural networks. Neural Networks, 1993, 6(6): 801-806. DOI:10.1016/S0893-6080(05)80125-X |
[5] |
Socher R, Huval B, Manning CD, et al. Semantic compositionality through recursive matrix-vector spaces. Proceedings of the 2012 Joint Conference on Empirical Methods in Natural Language Processing and Computational Natural Language Learning. Jeju Island, Korea. 2012. 1201–1211.
|
[6] |
Liu PF, Qiu XP, Huang XJ. Recurrent neural network for text classification with multi-task learning. arXiv preprint arXiv: 1605. 05101, 2016.
|
[7] |
郑雄风, 丁立新, 万润泽. 基于用户和产品Attention机制的层次BGRU模型. 计算机工程与应用, 2018, 54(11): 145-152. DOI:10.3778/j.issn.1002-8331.1701-0337 |
[8] |
Kim Y. Convolutional neural networks for sentence classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha, Qatar, 2014, 1746-1751. |
[9] |
Sahiner B, Chan HP, Petrick N, et al. Classification of mass and normal breast tissue: A convolution neural network classifier with spatial domain and texture images. IEEE Transactions on Medical Imaging, 1996, 15(5): 598-610. DOI:10.1109/42.538937 |
[10] |
Wang ZH, Wang XX, Wang G. Learning fine-grained features via a CNN tree for large-scale classification. Neurocomputing, 2018, 275: 1231-1240. DOI:10.1016/j.neucom.2017.09.061 |
[11] |
Yang X, Macdonald C, Ounis I. Using word embeddings in twitter election classification. Information Retrieval Journal, 2018, 21(2-3): 183-207. DOI:10.1007/s10791-017-9319-5 |
[12] |
陈珂, 梁斌, 柯文德, 等. 基于多通道卷积神经网络的中文微博情感分析. 计算机研究与发展, 2018, 55(5): 945-957. DOI:10.7544/issn1000-1239.2018.20170049 |
[13] |
Hinton GE. Learning distributed representations of concepts. Proceedings of the Eighth Annual Conference of the Cognitive Science Society. Amherst, Massachusetts, UK. 1986. 1–12
|
[14] |
Mikolov T, Sutskever I, Chen K, et al. Distributed representations of words and phrases and their compositionality. Proceedings of the 26th International Conference on Neural Information Processing Systems. Lake Tahoe, NV, USA. 2013. 3111-3119.
|
[15] |
Pennington J, Socher R, Manning CD. GloVe: Global vectors for word representation. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing. Doha, Qatar. 2014. 1532-1543.
|
[16] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[17] |
Hochreiter S, Bengio Y, Frasconi P, et al. Gradient flow in recurrent nets: The difficulty of learning long-term dependencies. Kolen JF, Kremer SC. A Field Guide to Dynamical Recurrent Networks. Los Alamitos: IEEE Press, 2001.
|