一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于自注意力机制与卷积神经网络的新闻文本分类方法与流程

2022-02-22 18:38:48 来源:中国专利 TAG:


1.本发明涉及深度学习技术领域,特别是涉及中文新闻文章标签分类的自然语言处理领域。


背景技术:

2.近些年来,随着数据量的不断增大,传统的机器学习方法越来越满足不了处理海量数据的需求。而深度学习的兴起很大程度上解决了这个问题,他被应用于图像识别、文本分类等领域并取得了很好的成绩。2006年,hinton等人提出了深度学习的概念并且解决了神经网络中“梯度消失”的问题,这使得深度学习开始迅速发展和应用。kim等人将训练好的词向量运用到了卷积神经网络(cnn)模型中预测句子级别的文本情感倾向。实验表明,仅通过cnn模型也能够在多个数据集上取得良好的分类效果。kalchbrenner等人使用的k-max池化层构建动态cnn来对文本分类,也取得了很好的效果。而conneau等人通过构建多层cnn模型来解决文档级文本分类,实验证明其分类精度相比于传统的机器学习方法有较大的提高。dong等人通过循环神经网络(rnn)模型来训练文本,并由句向量构建文本特征向量,提高了文本的情感分类的准确率。lai等人将rnn网络结构嵌入到了cnn模型,得到rcnn模型,并将该模型应用在文本分类中,通过实验证明分类效果优于单一的cnn模型和rnn模型。yang等人利用注意力机制(attention mechanism),按照词语级、句子级构建层次神经网络语模型,最后集成得到的文本特征,并在6个数据集实验,都取得了很好的准确率。mousa等人提出了基于上下文的双向长短时记忆神经网络(bi-lstm)模型来生成文本的特征向量,再使用双向bi-lstm分类器,在imdb影评数据集上获得了92.8%的分类准确率。
3.中文新闻文本分类是文本分类任务中常见的任务之一,该类任务已经成功应用于实际场景中并取得了一定成效,但仍然存在一些不足之处:
4.(1)中文新闻文章一般都篇幅较长,虽然lstm模型在一定程度上解决了长距离信息弱化的问题,但是其参数较多,复杂度高,对训练的算力要求也更高;
5.(2)在文章的不同中文句子中,相同的字或词在不同的语境中可能有不同的含义,而lstm等模型中一个字或者词的含义在词嵌入后就已经确定,无法解决一词多义的问题;
6.(3)传统的rnn及其变体模型在计算过程中每一步计算都需要用到前一步的计算结果,因此无法并行计算,训练效率较低。


技术实现要素:

7.为了克服上述现有技术的不足,本发明提供了一种基于自注意力机制与卷积神经网络的新闻文本分类方法。
8.本发明所采用的技术方案是:一种基于自注意力机制与卷积神经网络的新闻文本分类方法,包括以下步骤:
9.第一步:使用文本预处理器对新闻文本进行预处理,产生能够作为特征提取器输入的词嵌入矩阵;
10.第二步:使用特征提取器对输入的词嵌入矩阵进行特征提取,生成多个文本特征矩阵;
11.第三步:使用特征融合器对特征提取器产生的多个文本特征矩阵进行拼接、降维、融合,产生低维的特征融合矩阵作为文本分类器的输入;
12.第四步:使用文本分类器用于对输入的低维文本特征矩阵进行分类,最后输出新闻文本对应的类别。
13.与现有技术相比,本发明的显著优点在于:
14.(1)通过引入多头自注意力机制,使得模型中使用到的参数更小,复杂度更低,同时能够并行计算,提升了训练效率;
15.(2)通过引入多头自注意力机制,解决了lstm等模型中无法处理的一词多义问题;
16.(3)通过将多头注意力机制与多个卷积核大小不同的卷积神经网络并联使用,提高了对文本的特征提取能力。
附图说明
17.图1是本发明一种基于自注意力机制与卷积神经网络的新闻文本分类方法的流程图。
具体实施方式
18.下面结合说明书附图和实施例对本发明作进一步说明。
19.本实施例提供了一种基于自注意力机制与卷积神经网络的新闻文本分类方法的具体实施案例,采用复旦大学谭松波中文文本分类语料库进行训练,训练语料和测试语料基本按照1:1的比例来划分,包含了环境、经济、电脑等20个类别,其中用于训练的文章共9804篇,用于测试的文档共9833篇,每条文本数据中包含了文章内容和文章类别两个部分。
20.如图1所示,模型由文本预处理器、特征提取器、特征融合器、文本分类器组成。其中文本预处理器采用jieba分词工具、开源词嵌入模型、公用停用词等对中文文本进行预处理,产生能够作为特征提取器输入的词嵌入矩阵。特征提取器采用了多头注意力机制与多层卷积神经网络对输入的词嵌入矩阵进行特征提取,生成多个文本特征矩阵。特征融合器通过全连接和矩阵拼接对特征融合器产生的多个文本特征矩阵进降维、融合,产生低维的特征融合矩阵作为文本分类器的输入。文本分类器采用bi-gru模型对输入的文本特征矩阵进行分类,然后输出文章的标签信息,具体步骤如下:
21.1.文本预处理
22.步骤1.1:去除文章中的噪声信息。例如html标签、非汉字信息、文本格式转换、检测句子边界等,再使用python工具包jieba工具进行中文分词,以空格分隔。处理后的文本如下表:
[0023][0024][0025]
步骤1.2:采用公开的停用词表(哈工大停用词表)去除1.1中处理后文本的停用词得到新的文本;
[0026]
步骤1.3:使用由知乎语料训练而成的词嵌入模型(word vector,https://github.com/embedding/chinese-word-vectors),处理1.2中生成的新文本生成512维的词嵌入矩阵;
[0027]
步骤1.4:该文本分类语料库包含艺术、医疗、文学等20个类别,为这20个文章类别生成对应的数字映射,分别用数字1-20表示。
[0028]
2.文本特征提取将特征矩阵融合
[0029]
2.1使用多头注意力机制提取文章中的文本特征
[0030]
步骤2.1.1:初始化三个权重矩阵wq,wk,vv;
[0031]
步骤2.1.2:计算查询矩阵(q)、键矩阵(k)和值矩阵(v)。令文本预处理器产出的词嵌入装进矩阵为x,x矩阵的每一行对应于输入句子中的一个词语,将x乘以权重矩阵(wq,wk,vv);
[0032]
步骤2.1.3:计算句子中每个词向量与其他词向量的自注意得分,得分越高说明该词与另外一个词的关联性越高,公式如下:
[0033]q×k[0034]
步骤2.1.4:为了使梯度更加稳定,将得到的自注意力得分向量除以键向量的维数的平方根,通过softmax函数使所有单词的分数归一化,得到的分数都是正值且和为1;
[0035][0036]
步骤2.1.5:将值向量矩阵乘以softmax函数处理后的结果,得到加权后的矩阵z,z
为单层自注意力机制特征提取后的输出;
[0037][0038]
步骤2.1.6:重复步骤1-5共8次,得到8个不同子空间下的自注意力机制的输出矩阵z1,z2,

,z8;
[0039]
步骤2.1.7:将矩阵z1,z2,

,z8拼接得到8*维数的融合特征矩阵a
*

[0040]
步骤2.1.8:将a
*
送入一个全连接层,全连接层大小为128,激活函数选择relu,得到矩阵a;
[0041]
2.2使用多个卷积核大小不同的卷积神经网络提取文章中的文本特征
[0042]
步骤2.2.1:使用keras构建卷积层。调用keras.layers.conv2d函数构建卷积层。设置卷积层的各项参数:卷积核的个数filters=8,卷积核尺寸kernel_size=(3,3),卷积步长strides=1,进行全零填充padding='same'(选择全零填充为了保持输出尺寸与输入一致);
[0043]
步骤2.2.2:构建bn层。调用keras.layers.batchnormalization()函数进行batch normalization(批标准化):将神经网络每层的输入都调整到均值为0,方差为1的标准正态分布,解决神经网络中梯度消失的问题;
[0044]
步骤2.2.3:构建激活层。调用keras.layers.activation()函数,选择使用relu激活函数;
[0045]
步骤2.2.4:构建池化层。调用keras.layers.maxpool2d()函数进行池化来减少特征数量(降维),设置池化核尺寸pool_size=(2,2),池化步长strides=2,选择全零填充padding='same';
[0046]
步骤2.2.5:舍弃(droupout)。调用keras.layers.dropout()函数将一部分神经元按照一定概率从神经网络中暂时舍弃,使用时被舍弃的神经元恢复链接。设置舍弃概率为0.2;
[0047]
步骤2.2.6:重复步骤2.2.1-2.2.5共8次,得到8个卷积神经网络提取的文本特征矩阵s1,s2,

,s8;
[0048]
步骤2.2.7:将矩阵s1,s2,

,s8拼接得到8*维数的融合特征矩阵b
*

[0049]
步骤2.2.8:将b
*
送入一个全连接层,全连接层大小为128,激活函数选择relu,得到矩阵b;
[0050]
步骤2.2.9:利用concatenate函数将矩阵a与矩阵b进行拼接得到最终的融合特征矩阵c;
[0051]
3.使用bi-gru模型对文章进行分类
[0052]
步骤3.1:构建bi-gru层。使用keras.layers.bidirectional(gru())函数构建bi-gru,设置记忆体个数为128,返回各时间步输出设置为true;
[0053]
步骤3.2:舍弃部分神经元。调用keras.layers.dropout()舍弃部分神经元,设置舍弃概率为0.2;
[0054]
步骤3.3:构建bi-gru层。使用keras.layers.bidirectional(gru())函数构建bi-gru,设置记忆体个数为64,返回各时间步输出设置为false;
[0055]
步骤3.4:舍弃部分神经元。调用keras.layers.dropout()舍弃部分神经元,设置
舍弃概率为0.2;
[0056]
步骤3.5:构建全连接层,全连接层大小为20,使用激活函数softmax,生成文本对应的20个类别的概率;
[0057]
步骤3.6:输出最大的概率对应的文章类别标签。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献