2. 西南交通大学 信息科学与技术学院, 成都 611756
2. School of Information Science and Technology, Southwest Jiaotong University, Chengdu 611756, China
随着信息技术的飞速发展, 信息呈爆炸式增长, 文本是信息最重要的载体之一. 文本分类技术是指根据预定义的主题类别, 按照自动化的方法对未知类别文本进行高效、准确归类的技术. 文本分类按照文本长度可分为短文本分类和长文本分类, 本文研究对象——新闻文本属于长文本.
文本分类方法主要是基于统计分析或者机器学习的方法, 比如支持向量机[1]、K近邻法[2]、朴素贝叶斯[3]、决策树[4]、LDA模型[5]、最大熵模型[6]等方法. 近几年的研究热点主要是基于浅层神经网络或者深度学习的方法. 基于浅层神经网络的方法主要指词向量通过Word2Vec生成, 然后结合其他机器学习方法进行分类. 文献[7]利用加权Word2Vec结合SVM技术进行微博情感分类, 具有较好的分类效果. 深度学习文本分类主要是使用CNN、自动编码器等深度学习模型进行分类, 或者是CNN和LSTM结合的混合模型等. 文献[8]研究了将注意力机制后引入卷积神经网络模型进行中文新闻文本分类的方法. 文献[9]研究了基于降噪自动编码器的中文新闻文本分类算法. 文献[10]提出一种CNN和双向LSTM特征融合的模型, 利用CNN提取文本向量的局部特征, 利用BiLSTM提取下文相关的全局特征, 然后融合两种模型进行情感分析.
本文设计一种基于加权词向量结合卷积神经网络的新闻文本分类方法. Word2Vec生成的词向量能够体现上下文语义信息, 所以基于Word2Vec的词表示和文档表示已经广泛应用于自然语言处理领域. 但是Word2Vec无法体现词语对于文本的重要性, 而TF-IDF本质上就是词语的权重, 可以用它来对词向量进行加权, 进一步用加权后的词向量作为卷积神经网络的输入, 进行新闻文本的分类. 因为新闻有标题和正文两部分组成, 所以本文改进了TF-IDF算法, 计算TF时融合了标题和正文两个部分.
1 相关技术 1.1 TF-IDFTF-IDF中文名是“词频-逆文本频率”. TF即词频, 统计每个词在每一个文档内的频率, 体现了词语对某篇文档的重要性. TF越大, 词语对文档越重要, TF越小, 词语对文档越不重要, 计算如式(1)所示.
$T{F_{i,j}} = {{{n_{i,j}}} / {\sum\nolimits_k {{n_{k,j}}} }}$ | (1) |
其中, ni,j是词语ti在文档dj中出现的频数, 分母是文档dj中所有词语频数总和.
IDF即逆文档频率, 主要思想是在整个文档集合中, 某个词语所在的文档数量越小, 该词语对这些文档的标识性越强, 或者说该词语对文档类别的区分能力越强. 比如词语“记者”在每一篇新闻里的出现频率可能都较高, 但是对整个新闻文档集合来说, 把“记者”当成新闻文档分类的重要特征的话, 效果显然很差, 不具有区分度. 计算如式(2)所示.
$ID{F_i} = \log \frac{{|D|}}{{|\{ j:{t_i} \in {d_j}\} |}}$ | (2) |
其中, |D|是文档总数, 分母是包含第i个词语的文档数量.
TF-IDF简单取TF和IDF的乘积, 如果文档长度不一致, 可以对TF-IDF进行归一化. 基础的计算公式如式(3)所示.
$TF - IDF = TF*IDF$ | (3) |
Word2Vec是Google提出的一种词嵌入的算法, 主要包含CBOW和Skip-Grams两种神经网络模型. 在词向量出现之前, 词语一般通过独热编码表示, 文本用词袋模型表达, 向量非常稀疏, 容易造成维数灾难, 而且无法准确计算文本的相似度. 近年来深度学习迅速发展, 自特征抽取的词嵌入技术越来越受到学术界和工业界的青睐. Mikolov等[11]在2013年提出了Word2Vec模型, 用于计算词向量(又叫上下文分布式表达). Word2Vec将词语上下文信息转化成一个低维向量, 避免计算灾难, 而且可以很好度量词语相似度, 现在已经被广泛应用在自然语言处理的各个领域[12].
一般认为CBOW的训练时间更短, Skip-gram的训练结果更好, 所以我们选择Skip-gram模型, 如图1. 输入层向量是输入中心词的one-hot编码, 输出层向量就是词典中每一个词语出现在中心词周围的概率分布. WV*N和W’N*V是权重矩阵, 也就是待求参数. 式(4)是求解参数的目标函数, 显然目标函数取最大值的直观解释就是文本内所有词作为中心词产生相应周围词的条件概率乘积取最大值, 近似表示已知词典生成目标文本集合的条件概率取得最大值. 目标函数直接取对数, 然后再取负数, 就转化成了目标函数求最小值, 就可以利用梯度下降法来求解参数. 预测时, 根据输入数据和参数可以得到词向量. 目标函数如式(5)所示.
$J = \prod\nolimits_{t = 1}^T {\prod\nolimits_{ - c \le j \le c,j \ne 0} {P({w_{t + j}}} } |{w_t})$ | (4) |
$J = - \sum\nolimits_{t = 1}^T {\sum\nolimits_{ - c \le j \le c,j \ne 0} {\log P({w_{t + j}}} } |{w_t})$ | (5) |
其中, wt是文本里每一个词, j的取值范围就是窗口大小, wt+j就是中心词的周围词.
1.3 卷积神经网络
卷积神经网络是一种深度学习模型, 有多层感知器结构, 在图像识别和语音识别领域取得了很好的结果, 现在也被广泛应用到自然语言处理领域. 卷积神经网络的模型如图2所示.
对于图像处理, 输入层就是图像像素组成的矩阵; 对于文本处理, 输入层是输入文本的词向量构成的矩阵. 卷积层对输入数据应用若干过滤器, 进行特征提取. 一个过滤器对应一个卷积核, 不同的过滤器代表了不同类型的特征提取, 过滤后的结果被称为特征图谱. 池化层对矩阵或者向量进行降维, 从而减小数据规模, 但是要避免主要特征的损失. 池化可以选择最大池化、平均池化等. 池化层的数据通过全连接的方式接入到Softmax层后输出分类结果. 实际的输出结果是一个向量, 输出的向量里每一个标量的值对应一个类别的概率, 最大标量所在位置对应的类别就是分类结果.
2 模型描述与实现 2.1 整体框架整体框架如图3所示, 主要包括了数据预处理模块、词向量生成模块、TF-IDF计算模块、CNN分类模块, 前三个模块的输出为CNN分类模块提供训练数据. 采用Python语言编程, 除了开发效率高之外, 还有很多的机器学习、深度学习、自然语言处理的第三方库, 有助于快速实现模型.
2.2 文本预处理
新闻文本来源于搜狗实验室公布的搜狐新闻数据, 以XML形式提供, 数据的详细介绍将在下一节给出. 首先逐个抽出每个新闻页面的文本, 文本包含了标题和正文. 然后用结巴分词对文本进行分词. 接着对分词结果进行停用词过滤, 停用词表结合哈工大停用词表和百度停用词表. 最后把处理好的数据按照类别放到不同的文本文件中, 每个新闻文本数据占文件的一行.
2.3 TF-IDF计算本文在计算TF-IDF时, 对公式进行了改进, 如式(6)所示. 新闻文本由新闻标题和正文组成, 标题对于区分文本类别也有较大价值, 因其长度相对正文来说极短, 所以标题词语在文本内词频比正文词语在文本内词频有更高的权重.
$TF(t) = w*T{F_t}(t) + T{F_c}(t)$ | (6) |
其中, w是大于1的权重, 和文本长度、文本内容有很大关系, 可以在实验过程中根据实际情况进行调节, 本实验调节到4~5的范围内, 取得了较好效果. TFt(t)是文本标题内出现的词语t的词频, TFc(t)是文本正文内出现的词语t的词频. 显然词语t在标题或者正文内不出现的话, TFt(t)或者TFc(t)取0.
2.4 生成词向量并加权词向量生成选择了Word2Vec的Skip-Gram模型. Word2Vec生成的词向量虽然可以很好地体现语义上下文的关联, 但是无法反映词语对于文本分类的重要性, 而TF-IDF可以体现词语对文本的重要程度, 因此可以把TF-IDF值作为词语区分文本类别的权重. 本文参考了文献[7], 对词向量用TF-IDF值进行了加权, 加权后的向量可以更好表征文本. 向量数乘公式如式(7)所示.
$W - W2V{(t)_j} = W2V(t)*TF - ID{F_{i,j}}$ | (7) |
其中, W2V(t)是词语t的词向量, W–W2V(t)是词语t在第j篇文本内加权后的词向量.
每个词语在不同文档中的TF-IDF值预先计算好. 每个词语的Word2Vec词向量也都预先训练好, 但是没有区分它们在不同文本中的差异. 新闻文本分类模型的训练和预测时, 需要词向量表达的文本数据不断输入模型. 所以, 选择在输入每个文本的词向量矩阵数据时, 用哈希方法获得每个词语在该文本中的TF-IDF值, 通过矩阵运算得到加权后的词向量矩阵. 在本文实验中, 词向量的维数调节到100.
2.5 CNN文本分类本文选择Keras搭建卷积神经网络. Keras是建立在Tensorflow和Theano之上的神经网络框架, 但是比直接用TensorFlow搭建神经网络要容易得多, 使用搭积木的方式搭建神经网络.
在输入层, 每个文本的词向量矩阵大小一致, 都是150×100, 150是文本单词数量, 100是词向量的维数. 文本长短不一, 单词数量多于150时, 按照单词出现频数取前150个单词; 单词数量不足150时, 用0补齐矩阵.
在卷积层, 选择200个大小为3×100的卷积核, 卷积层输出200个148×1维的矩阵, 也就是200个148维向量. 形象解释就是200个卷积核从不同角度提取了文本的200种特征向量.
在池化层, 选择MAX-Pooling, 取目标区域的最大值, 可以保留文本的突出特征, 又进行了降维, 降低了数据运算量. 当然, 最大池化不可避免会损失一些有效信息, 这也是CNN存在的问题, 一般可以通过增加特征图数量进行弥补, 本文卷积层有200个特征图, 可以在一定程度弥补信息损失. 池化后的结果是一个200维向量, 就是该文本的向量表示.
数据通过全连接的方式接入到Softmax层后连接到12维的类别向量上, 该向量就是样本在12个类别上的概率分布情况. 预测样本类别时, 最大值所在的维度映射到对应类别上.
3 实验结果与分析 3.1 实验数据实验数据来自搜狗实验室对外开放的搜狐新闻精简版, 保留12种类别文本, 分别是汽车(auto)、商业(business)、文化(cul)、健康(health)、房产(house)、信息技术(IT)、教育(learning)、军事(mil)、运动(sports)、旅游(travel)、女人(women)、娱乐(yule). 数据预处理过程上面已经描述过: 从XML文件抽取标题、正文和类别, 分词, 去掉停用词, 分类别存储.
实验中, 每个类别取5000个样本, 随机选4000个加入训练集, 剩余1000个加入测试集. 训练集总的样本数是48 000个, 测试集总的样本数是12 000个.
3.2 分类结果与分析本文做了3组对照实验, 分别采用词向量+逻辑回归分类方法(方法1)、词向量+CNN方法(方法2)、加权词向量+CNN方法(方法3), 实验结果分别见表1、表2、表3. 确率(Precision)、召回率(Recall)、F1分数(F1-score)的宏平均(Macro-avg)对比如图4所示. 宏平均是全部类别性能度量的算术平均值, 通过对比可以明显看出方法的性能提升.
3个实验都用Word2Vec表示词向量, 分析发现逻辑回归分类实验结果相对较差, 词向量结合卷积神经网络可以取得较好的分类效果, 加权词向量结合卷积神经网络让实验结果进一步提升. 上文分析过, Word2Vec能够体现上下文语义, TF-IDF能够反映词语区分文本类别的能力, 所以对词向量加权后进一步提升了分类效果.
搜狗实验室的搜狐新闻语料相对来说规模较大、类别准确、页面噪声较低. 但是限于实验机器运算能力, 每个类别选取了5000个样本. 提升硬件性能或者结合并行计算技术, 从而扩大训练语料库规模, 能够进一步提升分类效果.
4 总结与展望本文区分新闻的标题和正文, 改进了TF-IDF模型, 然后使用TF-IDF对词向量进行加权, 最后用CNN进行新闻分类. 在搜狐新闻语料内部, 取得了较好的分类效果.
用搜狐新闻训练的模型, 对全网新闻数据进行预测, 准确率和召回率有所下降. 分析主要原因是训练数据集中在搜狐新闻, 对训练数据存在过拟合, 而异源新闻的长度、风格等存在较大差异, 所以分类效果有所下降. 今后的研究工作中, 期望扩大训练数据来源, 增加不同数据源的新闻文本, 以更好地适用于全网新闻文本分类. BERT、ERNIE等词嵌入模型方兴未艾, 在自然语言处理各个领域取得了更好的成绩, 下一步实验拟采用BERT或者其改进模型替代Word2Vec, 期望进一步提高新闻文本分类的效果.
[1] |
应伟, 王正欧, 安金龙. 一种基于改进的支持向量机的多类文本分类方法. 计算机工程, 2006, 32(16): 74-76. DOI:10.3969/j.issn.1000-3428.2006.16.028 |
[2] |
苏佩娟, 刘赪, 牟建波, 等. 一种改进的K-近邻分类法. 西华大学学报(自然科学版), 2017, 36(4): 93-97. DOI:10.3969/j.issn.1673-159X.2017.04.015 |
[3] |
邸鹏, 段利国. 一种新型朴素贝叶斯文本分类算法. 数据采集与处理, 2014, 29(1): 71-75. DOI:10.3969/j.issn.1004-9037.2014.01.010 |
[4] |
张华伟, 王明文, 甘丽新. 基于随机森林的文本分类模型研究. 山东大学学报(理学版), 2006, 41(3): 139-143. |
[5] |
姚全珠, 宋志理, 彭程. 基于LDA模型的文本分类研究. 计算机工程与应用, 2011, 47(13): 150-153. DOI:10.3778/j.issn.1002-8331.2011.13.043 |
[6] |
李荣陆, 王建会, 陈晓云, 等. 使用最大熵模型进行中文文本分类. 计算机研究与发展, 2005, 42(1): 94-101. |
[7] |
李锐, 张谦, 刘嘉勇. 基于加权word2vec的微博情感分析. 通信技术, 2017, 50(3): 502-506. DOI:10.3969/j.issn.1002-0802.2017.03.021 |
[8] |
蓝雯飞, 徐蔚, 王涛. 基于卷积神经网络的中文新闻文本分类. 中南民族大学学报(自然科学版), 2018, 37(1): 138-143. |
[9] |
刘红光, 马双刚, 刘桂锋. 基于降噪自动编码器的中文新闻文本分类方法研究. 现代图书情报技术, 2016, 32(6): 12-19. |
[10] |
李洋, 董红斌. 基于CNN和BiLSTM网络特征融合的文本情感分析. 计算机应用, 2018, 38(11): 3075-3080. DOI:10.11772/j.issn.1001-9081.2018041289 |
[11] |
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, 26. 3111–3119.
|
[12] |
唐明, 朱磊, 邹显春. 基于Word2Vec的一种文档向量表示. 计算机科学, 2016, 43(6): 214-217, 269. DOI:10.11896/j.issn.1002-137X.2016.06.043 |