随着社交网络的发展, 各种应用软件层出不穷, 在吸引大量用户的同时, 产生了大量的文本信息, 如何从大量文本中抽取有价值的信息和知识是研究者持续关注的问题. 文本分类作为一种信息获取的方法, 在自然语言处理中发挥着重要的作用, 如, 信息检索、文档分类和排序等. 上世纪50年代就有学者对文本分类进行研究, 早期的文本分类主要依靠人工规则, 后来转向基于统计的方法, 又逐渐发展到通过深度学习、知识图谱等方式.
文本是知识的载体, 本身就蕴含了大量的语义、词性和时态等隐含信息, 随着通信技术的发展, 文本的处理规模也越来越大. 在此背景下, 词向量技术应运而生, 它通过大量语料的训练, 将词映射到低维度的向量中, 通过求余弦的方式, 可以判断词之间的近似关系. 词向量模型学习了词的上下文关系, 具有良好的泛化能力, 可以揭示海量数据里所承载的复杂而丰富的信息, 因此得到广泛应用. 在近些年, 词向量被应用到文本分类模型中, 其训练的准确性可以和深度学习分类器看齐.
通用搜索引擎面临的问题是如何获取记忆和泛化能力, 一方面用户希望通过检索词可以准确知道包含检索词的文档, 另一方面, 用户也希望获取和检索词相关的文档. 文本分类器也具有类似性, 人们希望通过输入文本可以准确得到分类, 并且通过一些相似的文本也可以得到分类结果. 因此, 提升一个分类器的效果, 可以从泛化和记忆两个方面考虑. 基于词向量的文本分类模型具有良好的特征泛化能力, 但由于文本词分布的稀疏性, 一些重要特征由于缺乏样本而得不到充分学习. 另一方面, 词向量模型将样本中的词变换到一个低维向量上, 其后会不断累加特征信息, 因而在一定程度上会丢失部分特征信息. 本文在词向量文本分类器的基础上, 提出了基于宽度和词向量特征的文本分类模型, 该模型同时具有词向量模型的泛化能力以及线性模型的记忆能力.
2 相关工作从自然语言产生开始, 它的信息表达和传递方式逐渐发展成具有一种上下文相关的特性. 因此, 要让计算机处理自然语言, 一个主要的问题就是围绕自然语言上下文相关特性建立数学模型. 统计语言模型正是在此背景下产生, 它是当今自然语言处理任务的基础, 20世纪70年代由Jelinek提出的N-gram模型是最常用的统计语言模型之一, 并在自然语言处理系统中得到广泛应用[1]. Salton提出的向量空间模型(Vector Space Model, VSM)[2], 把文本看作是一组特征的随机排列, 被称为词袋(Bag of Words, BoW)模型.
Hinton等在1986年首次提出分布式表示(distributed representation)[3], 用分布式表示来标识词, 通常被称为词向量. 从上世纪90年代开始, 基于统计和机器学习的文本分类方法逐渐盛行.
Bengio等在2003年提出神经网络语言模型[4], 并认为如果用传统的稀疏表示法, 如, 常见的One-hot编码[5], 在解决某些任务时会造成维度灾难. 因此, 如果在深度学习的任务中使用高维向量, 其复杂度是非常高的, 通常在使用词向量时一般是基于低维的词向量.
Schwenk等在2007年将神经网络语言模型运用到大词汇量连续语音识别中[6], 为了解决自然语言稀疏问题, 通过连续向量来对语言模型概率进行估计, 该模型比传统的N-gram语言模型具有更低的字错误率.
Mikolov等在2013年介绍了Word2Vec工具[7], 从大量文本语料中以无监督的方式学习语义知识, 其底层采用了跳元(Skip-Gram)和连续词袋(CBoW)算法的神经网络模型, Skip-Gram是利用给定的目标词来预测其上下文, CBoW是根据上下文去预测目标词. 该工具通过将词映射到一个低维向量上, 意义接近的词被映射到相近的位置, 给文本数据的表示提供了一种新的思路, 它被大量地用在自然语言处理(NLP)中.
Kim等在2014年将卷积神经网络(CNN)运用到文本分类模型[8], 该模型将预训练好的词向量矩阵作为卷积神经网络的输入, 通过一组不同大小的卷积核进行从前向后的卷积运算, 进而提取出局部相关性特征, 再根据标注数据训练出分类模型.
Liu等在2016年将递归神经网络(RNN)运用到文本分类模型[9], 由于RNN在训练中存在梯度消失的问题, 因此, 该模型引入了擅长学习长距离依赖信息的长短期记忆网络(LSTM)[10]以解决该问题.
Cheng等在2016年提出宽深度(Wide & Deep)模型 [11], 并认为可以通过加强记忆和泛化能力来提升推荐系统的效果, 记忆可以被定义为在推荐系统中将历史数据重现, 而泛化是基于数据相关性的传递性, 探索过去从未或很少出现的特征. 宽深度模型在深度神经网络的基础上利用线性交叉特征有效记忆稀疏特征之间的关联, 结合了深度神经网络的泛化能力和线性模型的记忆能力, 该模型被应用到Google Play商业移动应用商店中, 实验效果表明应用下载量有明显增加.
由Joulin等在2016年提出了FastText文本分类模型[12,13], 结合了词袋、N-gram袋以及子词(subword)信息, 具有性能高、分类准的优点. 词袋中词序是固定不变的, 为了获取词序信息, FastText支持N-gram扩展, 同时使用哈希算法对大量的N-gram进行映射, 以降低算法复杂度. 利用Word2Vec生成的词分布表示, 忽略了词形变化, 如时态、词根、词缀和人称等, 因此, FastText模型对此进行改进, 将单词进行更细粒度的拆分, 引入子词信息, 以panda为例, 设定子词长度为3, 其子词分别为<pa,pan,and,nda,da>, 以及其本身<panda>, 可以看出其中的and和单词<and>不同, 模型通过子词获取了更加细微的特征. FastText模型架构如图1所示, 它分为输入层、隐藏层和输出层, w1, …, wN为文本的N-gram和子词输入信息, 传入隐含层进行向量叠加, 再进入输出层, 输出层使用Softmax计算属于各分类的概率, 当分类数很大的时候, 为了提高计算效率, 采用基于哈夫曼编码树的分层Softmax, 提高了计算效率. Word2Vec和FastText都是利用词向量特征, 不同在于Word2Vec预测的训练目标是下一个关联词, 而FastText的训练目标是分类.
FastText的子词机制可以学习英文单词中词根和词缀粒度的形态学特征, 一般情况下, 词缀的出现次数要多于词根, 而词根可以带来更多的语义信息, 因此, Choi等[14]利用改进的逆文档频率算法对FastText子词机制进行了优化, 将词根和词缀区别对待, 加大了对词根的学习权重.
2018年由Peters等[15]提出ELMO, 是基于语言模型的动态词向量, 根据上下文的语义去调整相应词向量, 能有效处理一词多义问题. 不同于传统的词向量, 每一个词对应唯一的词向量, ELMO对于不同上下文的同一个词有不同的表示.
3 WideText文本分类模型 3.1 词向量特征在生成词向量之前, 首先要对文本进行表征, 一般使用N-gram来表示文本, 常用的如uni-gram、bi-gram和tri-gram. N-gram是一种基于统计语言模型的算法, 该模型基于这样一种假设, 一个句子的第n个词的出现只与前面n−1个词相关, 而与其它词无关, 整句的概率就是各个词出现概率的乘积. 假设一个句子s由n个词组成, s=(w1, w2, …, wn), 那么整句的概率p(s)=p(w1w2…wn)=p(w1)p(w2|w1)p(w3|w1w2)…p(wn|w1…wn−1).
语言模型的预测目标是出现下一个词的概率, 在本文模型中, 预测目标是整句属于某个类别的概率. 根据N-gram词袋模型, 输入文本可表示为x=(w1,…,wlen), 通过查询词嵌入矩阵, 映射为词向量, 并进入隐含层, 其第n个神经元输出结果计算式(1)如下:
$ ln = f\left( {\sum\nolimits_{s = 1}^{len} {W_{\rm embedding}(s,n)x_s + b_n}} \right) $ | (1) |
其中,
经对文本的词频统计发现, 集中在头部的高频词通常是常用词, 这些词样本相对充足, 通过词向量可以很好的拟合, 由于低频词缺乏样本, 词向量得不到充分训练, 因此, 模型对一些重要特征的表达能力较弱. 另外, 在词向量文本分类模型中, 隐含层会对多个词向量按列进行累加, 这个变换进一步抑制了稀疏特征的表达, 而且会抵消部分特征.
在本文的模型中, 采用基于词袋的TF-IDF向量作为文本抽取特征, 通过线性模型加强了模型对稀疏特征的记忆能力, 进而提升模型整体效果. TF-IDF是一种用于信息检索与文本挖掘的常用加权算法, 由词频(Term Frequency, TF)和逆文档频率(Inverse Document Frequency, IDF)两部分组成, 用以评估一个字词对于一个样本集或语料库的重要程度, 如果某个字词在一文档中出现的频率TF高, 并且在其他文档中很少出现, 则认为该字词具有很好的类别区分能力, 适合用来分类. 在本文中, 设定文本输入特征有d个, 输入向量x=(x1, x2, …, xd), 则:
$ y = {w^{\rm{T}}}x + b $ | (2) |
其中, 输出y=(c1,c2,…, ck)是在k个分类上的概率,w为权值矩阵, b为偏差.
3.3 WideText模型WideText模型结合了词向量和宽度模型的优点, 词向量模型主要用来学习文本中潜在信息, 能够很好的刻画词与词之间的关联关系, 有利于提高模型的泛化能力. 宽度模型通过包含字词重要程度的文本向量, 从全量样本中获取重要的字词特征, 通过对历史特征的记忆, 弥补了词向量模型记忆能力的不足, 提高了模型的分类能力.
如图2所示, WideText模型由输入层、隐含层和输出层3部分组成. 输入层由Embedding和Wide层组成, Embedding层将每个样本中的词映射到一个向量上, Wide层是一个由文本ID-IDF值组成一组特征向量; 隐含层类同神经网络模型中的隐含层, 其权值矩阵主要用来学习文本中的隐含信息, 在进入输出层之前, 该模型将对隐含层向量和Wide层向量进行拼接; 输出层接受到模型上一层传来的拼接向量, 最后计算出落在每个分类上的概率, 作为模型的输出结果. 如果是一个二分类问题, 那么从中间层到输出层将是一个线性模型, 如果是多分类问题, 从中间层到输出层将是一个多分类器模型.
WideText模型输出层采用Softmax激活函数, 预测结果为P(Y=i), 如式(3)至式(6)所示:
$ P(Y=i)=\frac{{e}^{{y}_{i}}}{{{\displaystyle\sum}_{r=1}^{k}{e}^{{}^{{y}_{r}}}}} $ | (3) |
$ V_i={{\sum }_{m=1}^{d}W_{\rm wide}}(m,i)x_m $ | (4) |
$ T_i = \sum\nolimits_{n = 1}^h {W_{\rm text}(n,i)l_n } $ | (5) |
$ y_i = V_i + T_i + b_i $ | (6) |
其中,
在WideText中, 进行一次文本分类计算的时间复杂度如式(7)所示:
$ S+S\times H+(H+L)\times N+N $ | (7) |
其中, S为输入文本长度, H为词向量维度, L为宽度特征维度, N为分类数. 首先进入输入层的是一个固定长度的词编码序列, 用来表示一段语句, 通过查表的方式从词嵌入矩阵中得到序列中每个编码对应的词向量, 这部分计算复杂度为S, 通常可以忽略. 接下来, 词向量矩阵会进入到隐含层, 这步操作主要是将词向量矩阵按列进行平均叠加, 因此复杂度为S×H, 之后, 隐含层输出拼接宽度特征进入输出层, 复杂度为
利用WideText模型进行分类时, 主要步骤如下:
(1)样本清洗. 去除样本中噪声, 如对分类过程无意义的词、停用词及标点, 有拼写错误的词进行修正.
(2)词元编码. 遍历样本统计N-gram词频, 按照N-gram词频从高到低的顺序进行排序, 从0开始编码, 从0开始向后依次加1进行编码, 作为语料字典; 再次遍历样本, 按照字典编码将N-gram转化为字典编码; 同时将样本的标签转化为类别编码, 类别编码独立于词元编码.
(3)样本编码. 设定样本最大长度maxlen, 预留0为填充码, 1为样本起始码, 2为未登录词(OoV), 3为N-gram起始码. 在样本长度小于maxlen时, 用0进行补齐, 样本长度大于maxlen时, 截取头部样本, 使所有样本具有固定长度; 在生成样本编码前, 根据N-gram起始码对N-gram编码向后进行平移; 设定样本N-gram特征数nf, 当N-gram编码大于nf时, 视为OoV, 并将N-gram编码设置为2.
(4)打乱样本. 由于原始样本是按照相同分类标签集中存放, 为了避免后续训练出现过拟合现象, 需要对样本进行随机化打乱, 并且训练集中的分类标签需要和文本按照同样的顺序打乱.
(5)生成宽度特征. 先根据样本词频由高到低的顺序生成字典, 再根据设定的宽度特征数对样本中词计算TF-IDF值, 其中, 训练集和测试集需要由同一套算法来计算, 以保证特征的一致性.
(6)训练模型. 将编码后的样本以及TF-IDF文本向量分别输入到词向量和宽度特征输入层, 开始训练模型, 在每一轮训练完成时, 利用验证集对模型进行评估, 当迭代次数达到设定值, 完成模型训练.
(7)模型预测. 将输入文本进行编码, 同时生成宽度特征, 将这些信息输入到模型, 从模型的返回结果中得到预测结果.
4 实验 4.1 实验环境实验环境为Intel Core i5-8250U处理器、主频1.6 GHz、内存8 GB、硬盘237 GB的PC机, 操作系统为Win10, 编程语言为Python3.5, 算法框架采用Keras.
4.2 实验数据集及评价指标数据集采用公开的单标签分类数据集20 Newsgroups, 该数据集收集了20000左右的新闻组文档, 均匀分在20个不同主题的新闻组集合, 是用于信息检索、文本分类和文本挖掘研究的国际标准数据集之一. 本实验采用的数据集一共有18821条样本, 其中, 11293条样本作为训练集和验证集, 数量分别为9034条和2259条; 7528条样本作为测试集, 分属电子、计算机硬件、棒球、曲棍球等20个不同新闻类别.
本实验采用准确率(Accuracy)、精确率(Precision)、召回率(Recall)以及F值(F-measure)4个指标对实验结果进行评价, 其公式分别如式(8)至式(11)所示. 准确率表示在预测的样本中被正确预测的样本数量; 精确率表示预测结果为正的样本中有多少实际正例; 召回率表示原样本中的正例有多少被预测为正; F值综合了精确率和召回率的结果.
$ A_{\rm accuracy} = \frac{{TP + TN}}{{TP + FP + TN + FN}} $ | (8) |
$ P_{\rm precision} = \frac{{TP}}{{TP + FP}} $ | (9) |
$ R_{\rm recall} = \frac{{TP}}{{TP + FN}} $ | (10) |
$ F = \frac{{2 \times P_{\rm precision} \times R_{\rm recall}}}{{P_{\rm precision} + R_{\rm recall}}} $ | (11) |
其中, TP(True Positive)表示被预测为正实际上是正例的数量, TN(True Positive)表示被预测为负实际上是负例的数量, FP(False Positive)表示被预测为正实际上是负例的数量, FN(False Negtive)表示被预测为负实际上是正例的数量.
由于本实验中数据集有20个分类, 因此, 将多分类模型评价转化为多个二分类模型评价,在评价过程中, 分别计算在模型在测试集各个分类上的精确率、召回率和F值指标, 再计算各个指标的无加权平均值, 作为多分类模型评价结果. 如, 测试集中一个分类为“棒球”, 在计算该分类的评价指标时, 将其余的多个分类看作非“棒球”类, 通过模型结果分别计算“棒球”类的精确率、召回率和F值, 再分别计算其它分类的指标, 最后计算相应指标的平均值作为模型评价结果.
4.3 WideText实验及参数设置本实验的主要参数如表1所示.
按照表1参数搭建WideText, 利用训练集和验证集对模型进行训练, 得出分类模型, 再通过测试集对分类结果进行评价, 主要从准确率、精确率、召回率和F值4个指标进行评价.
如表2所示, 测试集分属20个类型, 每个类别用编号表示, 分别计算出各个分类的精确率、召回率和F值, 再按相应指标计算均值. 通过模型评价得出, 准确率、精确率、召回率和F值分别为82.1%、82.0%、81.2%和81.3%.
4.4 实验模型与基本模型的实验对比为进一步验证WideText模型的有效性, 分别选取FastText、NN (Neural Network)、TextCNN和TextRNN分类模型进行实验对比, NN为单个隐含层前馈神经网络, TextCNN为卷积神经网络文本分类模型, TextRNN为递归神经网络文本分类模型. 在WideText和NN中, Wide特征均采用基于TF-IDF的词向量来表示. 数据集依然使用20 Newsgroups, 结果评价采用准确率、精确率、召回率和F值.
在对照实验中, 将数据集分别输入到FastText、NN、TextCNN、TextRNN和WideText中进行训练, 通过评价发现, WideText在实验组中效果最优. 实验结果如表3所示, WideText模型的准确率、精确率、召回率和F值分别为82.1%、82.0%、81.2%和81.3%, 和FastText相比在准确率、精确率、召回率和F值上分别提高了3.14%、3.02%、3.18%、3.17%; 和NN相比, 在准确率、精确率、召回率和F值上分别提高了0.98%、0.49%、0.74%、0.49%.
4.5 实验结论
通过实验发现, 引入Wide特征后, WideText的性能较优, 证明了引入Wide特征是有效的. 和FastText相比, 采用Wide特征的NN性能有所提升, 说明Wide特征是一种不同于词向量的特征, 它包含了全局词重要性程度的信息, 并以向量形式来表征输入文本, 有利于提高模型对某些重要特征的记忆能力. WideText结合了词向量和宽度特征, 在某些特征重现后, 通过模型可以准确识别, 因此, 同FastText相比, 模型在引入宽度特征后其特征记忆能力得到增强, 分类性能也得到提升.
5 结论随着大数据技术的不断发展, 需要处理的文本日趋增多, 如何对文本进行准确有效分类一直是研究的热点. 本文认为文本分类性能的优化在某些方面类似于推荐系统算法优化, 通过加强模型泛化和记忆能力同样可以提升文本分类性能. FastText利用了低维词向量具有的语义表达能力和泛化能力, 取得了不错的分类效果, 但它记忆能力较弱、缺少全局特征信息, 针对这些问题, 本文提出WideText, 在词向量特征基础上增加了Wide特征, 并通过TF-IDF得到全局特征重要性信息, 该模型的输出结果综合了两个不同层面的特征的分类结果. 通过实验发现WideText分类性能有所上升, 且略好于单隐含层神经网络. Wide特征提取简单, 并且对模型整体性能影响不大, 引入该特征不失为提升词向量文本分类性能的有效方法. 本文实验的数据集规模不大, 在海量文本分类模型中引入Wide特征表现如何, 是一个值得探索的方向. 另外, 深度学习被越来越多的应用到文本分类任务中, 其高维特征是否可以结合线性文本特征, 进而提升深度学习整体分类效果, 也是一个研究的方向.
[1] |
Jurafsky D, Martin JH. Speech and Language Processing. Upper Saddle River, N.J.: Pearson, 2000.9.
|
[2] |
Salton G, Wong A, Yang CS. A vector space model for automatic indexing. Communications of the ACM, 1975, 18(11): 613-620. DOI:10.1145/361219.361220 |
[3] |
Hinton GE, McClelland JL, Rumelhart DE. Learning distributed representations of concepts. Proceedings of the 8th Annual Conference of the Cognitive Science Society. Amherst, MA, USA. 1986. 1–12.
|
[4] |
Bengio Y, Ducharme R, Vincent P, et al. A neural probabilistic language model. Journal of Machine Learning Research, 2003, 3(6): 1137-1155. |
[5] |
奚雪峰, 周国栋. 面向自然语言处理的深度学习研究. 自动化学报, 2016, 42(10): 1445-1465. |
[6] |
Schwenk H. Continuous space language models. Computer Speech & Language, 2007, 21(3): 492-518. |
[7] |
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. New York, NY, USA. 2013. 3111–3119.
|
[8] |
Kim Y. Convolutional neural networks for sentence classification. Proceedings of 2014 Conference on Empirical Methods in Natural Language Processing. Doha, Qatar. 2014. 1746–1751.
|
[9] |
Liu PF, Qiu XP, Huang XJ. Recurrent neural network for text classification with multi-task learning. Proceedings of the 25th International Joint Conference on Artificial Intelligence. New York, NY, USA. 2016. 2873–2879.
|
[10] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[11] |
Cheng HT, Koc L, Harmsen J, et al. Wide & deep learning for recommender systems. Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. Boston, MA, USA. 2016. 7–10.
|
[12] |
Joulin A, Grave E, Bojanowski P, et al. Bag of tricks for efficient text classification. Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics. Valencia, Spain. 2017. 427–431.
|
[13] |
Bojanowski P, Grave E, Joulin A, et al. Enriching word vectors with subword information. Transactions of the Association for Computational Linguistics, 2017, 5: 135-146. DOI:10.1162/tacl_a_00051 |
[14] |
Choi J, Lee SW. Improving FastText with inverse document frequency of subwords. Pattern Recognition Letters, 2020, 133: 165-172. DOI:10.1016/j.patrec.2020.03.003 |
[15] |
Peters ME, Neumann M, Iyyer M, et al. Deep contextualized word representations. Proceedings of 2018 North American Chapter of the Association for Computational Linguistics: Human Language Technologies. New Orleans, LA, USA. 2018. 2227–2237.
|