一种基于bert的高精度文本分类方法及装置
技术领域
1.本发明属于文本分类领域,尤其涉及一种基于bert的高精度文本分类方法及装置。
背景技术:2.目前的文本分类方法主要有传统的机器学习方法和深度学习文本分类模型。传统的机器学习方法有nb模型、随机森林模型(rf)、svm分类模型、knn分类模型、贝叶斯模型,但这些传统的方法并没有深入的挖掘文本的内在含义。
3.而深度学习文本分类模型则是弥补了这个缺陷,深度学习文本分类模型主要有fasttext模型、textcnn模型、textrnn模型、textrnn+attention模型、textrcnn模型等。其中,fasttext模型是最先提出来的用于文本分类,但也只是简单的对句子所有的词向量进行平均,后面接分类,并没有考虑词序信息;textcnn模型则是用cnn来提取句子中类似n-gram的关键信息,解决了词序信息问题;textcnn最大的问题是固定filter_size的视野,既不能无法建模更长的序列信息,也不能方便的调节filter_size的超参,而textrnn则可以捕获变长且双向的n-gram信息;textrnn+attention中的注意力机制是一个建模长时间记忆机制,能够直观的给出每个词对结果的贡献;textrcnn是通过前向和后向rnn得到没个词的前向和后向上下文的表示,词的表示变成词向量和前向后向上下文向量连接起来的形式,再跟textcnn相同卷积层,pooling层,卷积层filter_size=1,不用再获取更大的视野。
4.深度学习文本分类模型引入了词向量、词序、attention等新的技术,但还是会有预测精度不准确的问题存在。现在有很多预训练的语言表征来完成下游nlp任务的研究,概括为feature-based和fine-tuning,这两类方法的共性在于它们在预训练中都使用了一样的目标函数,也都使用了单向的语言模型,但并没有很好的利用上下文的信息。而后来出现的bert模型(bert:pre-training of deep bidirectional transformers for language understanding,jacob devlin,ming-wei chang,kenton lee,kristina toutanova)则很好的解决了这个问题。首先,bert证明了一个非常深的模型可以显著提高nlp任务的准确率;其次,bert模型可以从无标记数据集中预训练得到;最后,bert模型采取新的预训练的目标函数,随机mask输入中的一些tokens,然后在预训练中对它们进行预测,这样能学习到的表征能够融合两个方向上的context;增加句子级别的任务,原本的深度学习模型缺少对两个句子之间关系的理解,而语言模型不能很好的直接产生这种理解,所以在预训练时同时预训练了一个“next sentence prediction”任务。但bert模型没有考虑字符特征对词汇的影响,没有考虑到词的形态变化,降低了分类精准度。
技术实现要素:5.为解决上述问题,本发明公开了一种基于bert的高精度文本分类方法及装置,通过获取字符的特征对词汇进行embedding,同时获取到词的形态变换,增加对短语的表示能力,然后通过bert模型,再接全连接层+softmax进行分类,提高文本分类的精确度。
6.本发明的技术方案为:
7.一种基于bert的高精度文本分类方法,将文本语料输入文本分类模型,获取所述文本语料的类别标签;其中,所述文本分类模型包括:一fasttext模型、一bert模型、一全连接层和一分类层,通过以下步骤训练得到所述文本分类模型:
8.1)通过若干训练文本语料,对fasttext模型进行训练;其中,对于任一训练文本语料,先构成特征向量,再将类别标签映射后的特征向量映射到隐藏层,求解最大似然函数,得到隐藏层输出结果;
9.2)对各隐藏层输出结果进行预训练,得到各训练文本语料的词嵌入表示、段表征和位置表征,并依据各训练文本语料的词嵌入表示、段表征和位置表征,获取bert模型的输入;
10.3)训练bert模型时,随机掩藏设定百分比的词,并通过迭代更新损失函数,计算被掩藏的词,得到每个词的特征表示;
11.4)将每个词的特征表示输入一全连接层,并将全连接层的输出输入一分类层进行文本分类,得到类别标签的概率分布。
12.进一步地,文本语料输入文本分类模型之前,对文本语料进行预处理;所述预处理包括:清理、删除异常值和去重。
13.进一步地,通过以下步骤构成特征向量:
14.1)将训练文本语料通过n-gram进行特征处理,得到训练文本语料中的词特征表示和词组特征表示;
15.2)依据词特征表示和词组特征表示,构成特征向量。
16.进一步地,bert模型的目标函数为p(wi|w1,
…
,w
i-1
,w
i+1
,
…
,wn)。
17.进一步地,bert模型训练过程中,调整的bert模型参数包括:批量大小、学习率和迭代次数;批量大小的取值范围包括:16和32;学习率的取值范围包括:5e-5、3e-5和2e-5;迭代次数的取值范围包括:3和4。
18.进一步地,若bert模型的输入为句子对,则通过一特殊的词隔开两个句子,并将相应的段表征加到每个词嵌入表示上。
19.进一步地,对于序列级的分类任务,bert模型的输出为cw
t
,其中c为第一个词的最终隐藏状态,w为权重。
20.进一步地,所述分类层包括:softmax层。
21.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。
22.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。
23.与现有技术相比,本发明具有以下优点:
24.1)提前用fasttext模型处理语料数据,获取字符的特征,再对词汇进行embedding,解决了oov(out of vacabulary)的embedding问题,同时获取词的形态变换,对富有词型变换的语料具有更好的表示能力;
25.2)使用bert能够提前预训练大量的语料,增加了词向量的语义丰富度,获得更好的上下文表示;
26.3)在bert模型的输出添加全连接层和softmax进行文本分类,提高了文本分类的精度。
附图说明
27.图1为本发明的embedding构成示意图。
28.图2为本发明的bert模型结构示意图。
29.图3为本发明的模型结构示意图。
具体实施方式
30.为使本发明的目的、原理、技术方案和优点更加清晰明白,以下将结合具体实施例,并参照附图对本发明做详细的说明。
31.本发明是基于bert而改进的一个提供文本分类精度的方法。该方法的主要步骤包括:在输入端采用快速文本分类器(fasttext),主要是为了获取字符的特征,再对词汇进行嵌入表示(embedding);然后把表示向量作为bert模型的输入进行,使用大量语料预训练得到的预训练模型,增加了词向量表示的语义丰富度,获得了更好的上下文表示;bert的输出结果接上全连接层+softmax,作为下游任务实现文本分类。
32.本发明为了能对富有词型变换的语料有更好的表示能力,首先让文本语料通过fasttext,对于大量训练语料来说,使用fasttext能在保证训练词向量更好表示的前提下,大大缩短训练时间。fasttext模型(bag of tricks for efficient text classification,armand joulin,edouard grave,piotr bojanowski,tomas mikolov,facebook ai research)输入层是单词短语,短语中的词和词组成特征向量,特征向量通过线性变换映射到中间层,中间层再映射到标签,其在中间层不使用非线性激活函数。层次之间的映射是将输入层中的词和词组构成特征向量,再将特征向量通过线性变换映射到隐藏层,隐藏层通过求解最大似然函数,隐藏层的输出作为bert模型的输入。常用的特征是词袋模型(bag-of-words model),但词袋模型不能考虑词之间的顺序,所以fasttext加入了基于统计的语言模型n-gram特征。n-gram特征的基本思想是将文本内容按照字节顺序进行大小为n的窗口滑动操作,最终形成窗口为n的字节片段序列。为了提高效率,过滤掉低频的n-gram,增加了对短语的表示能力。对输入的原始数据用n-gram进行特征提取处理,一定程度上解决了字符特征对词汇的embedding问题,同时能够获取到词的形态变换,对富有词型变换的语料来说具有更好的表示能力。
33.fasttext模型的隐藏层的输出为bert模型的输入。fasttext模型对字符的特征表示丰富了词向量的表示方法,获得更好的上下文表示。针对不同的任务,模型能够明确的表达一个句子,或句子对,对于每一个词(token),如图1所示,它的表征由其对应的词嵌入表示(token embedding),段表征segment embedding和位置表征position embedding相加产生。使用了单词集嵌入表示(wordpiece embeddings),把英文单词分解为单词块,可以最大限度地提高语言模型的可能性,给出一个不断变化的词定义;使用了positional embeddings,长达512位,即句子的最大长度;每句话的第一个token总是[cls]标记,对应它的最终的隐藏状态(hidden state)用来表征整个句子,可以用于下游的分类任务;模型能够处理句子对,为区别两个句子,用一个特殊token[sep]隔开他们,另外针对不同的句子,
把学习到的segment embeddings加到每个token的embedding上;对于单个句子仅使用一个segment embeddings。bert模型的结构如图2所示。
[0034]
bert是双向的transformer block连接,以
[0035]
p(wi|w1,
…
,w
i-1
,w
i+1
,
…
,wn)
[0036]
作为目标函数。
[0037]
bert第一步预训练的目标就是做语言模型,该模型是bidirectional,在训练过程中随机mask15%的token,而不是把像cbow一样把每个词都预测一遍,最终的损失函数只计算被隐藏(mask)掉的那个token。随机mask的时候10%的单词会被替代成其他单词,10%的单词不替换,剩下80%才被替换为[mask]。因涉及到问答系统(qa)和自然语言推断(nli)之类的任务,增加了第二个预训练任务,为了让模型理解两个句子之间的联系,训练的输入是句子a和b,b有一半的几率是a的下一句,输入这两个句子,模型预测b是不是a的下一句。
[0038]
对于序列级(sequence-level)的分类任务,bert直接取第一个[cls]token的最终隐藏状态(final hidden state)c∈rh,加一层权重w∈rk×h后softmax预测label proba:
[0039]
p=softmax(cw
t
)
[0040]
通过bert模型的训练后,在模型的输出结果出加一个全连接层,再加一个softmax进行文本分类结果做输出,即完成模型的构建。
[0041]
实验使用的是爬取的网页标题名称数据,数据量约为30000条,下表展示了对比实验结果:
[0042]
表一模型对比实验结果
[0043]
模型准确率正确率f1fasttext92.06%92%0.92textcnn91.16%91%0.91textrnn81.30%81%0.76textrnn_att85.85%86%0.83transformer75.72%76%0.72dpcnn79.10%79%0.72bert82.8%83%0.82fasttext_bert93.77%94%0.93
[0044]
上表展示了本发明与各个模型的对比结果,可以看出在准确率上有了很大的提高。在模型训练速度上,由于一开始使用了fasttext进行预训练,速度比较快,所以模型训练所用的时间集中在后面的bert模型。
[0045]
本发明的实例
[0046]
本发明是基于爬取的网页标题名称数据,约有30000条,数据存在多个语种(中文简体,中文繁体,英文,韩文,西班牙文,日文等
…
),纷繁杂乱。存在一篇分类文档有多种语言混搭,常见的是中英文混合,文本内容复杂多样,形式不统一,文本可读性差。存在大量无关干扰信息(广告,时政,网页无关数据,时间戳,网址),相互交叉,难以分离。
[0047]
基于以上语料,如图3,具体训练文本分类模型步骤如下:
[0048]
1.首先对文本语料内容进行预处理,清理,删除异常值,去重;
[0049]
2.把文本语料数据分为训练集(60%)、测试集(20%)、验证集(10%);
[0050]
3.系统环境部署:安装python需要的包,torch、transformers、tensorflow-gpu、jieba、numpy、panda、pytorch-pretrained-bert、scikit-learn、scipy等;
[0051]
4.通过fasttext模型,把训练集的所有语料作为输入数据进行训练,把每个句子(sentence)通过n-gram进行特征处理,提高对短语的表示能力;
[0052]
5.将fasttext模型输入层中的词和词组的特征表示构成特征向量,将特征进行线性变换映射到隐藏层;
[0053]
6.隐藏层求解最大似然函数;
[0054]
7.把fasttext模型隐藏层的输出结果作为下一步bert模型的输入数据,进行预训练,得到token embedding、segment embedding、position embedding等参数;
[0055]
8.bert模型的输入embedding由token embedding、segment embedding和position embedding构成;
[0056]
9.bert模型训练过程中随机mask10%的token;
[0057]
10.损失函数计算被mask掉的那个token,迭代更新loss;
[0058]
11.微调(fine-tuning),可以调整的参数和取值范围:批量大小(batch size):16,32;学习率(learning rate):5e-5,3e-5,2e-5;迭代次数(number of epochs):3,4;
[0059]
12.bert模型的输出是每个词的特征表示,接一个全连接层,再加上一层softmax进行文本分类,计算类别标签的概率分布并得到最终的分类结果。
[0060]
以上所述实施例仅为更好的说明本发明的目的、原理、技术方案和有益效果。所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:1.一种基于bert的高精度文本分类方法,将文本语料输入文本分类模型,获取所述文本语料的类别标签;其中,所述文本分类模型包括:一fasttext模型、一bert模型、一全连接层和一分类层,通过以下步骤训练得到所述文本分类模型:1)通过若干训练文本语料,对fasttext模型进行训练;其中,对于任一训练文本语料,先构成特征向量,再将类别标签映射后的特征向量映射到隐藏层,求解最大似然函数,得到隐藏层输出结果;2)对各隐藏层输出结果进行预训练,得到各训练文本语料的词嵌入表示、段表征和位置表征,并依据各训练文本语料的词嵌入表示、段表征和位置表征,获取bert模型的输入;3)训练bert模型时,随机掩藏设定百分比的词,并通过迭代更新损失函数,计算被掩藏的词,得到每个词的特征表示;4)将每个词的特征表示输入一全连接层,并将全连接层的输出输入一分类层进行文本分类,得到类别标签的概率分布。2.如权利要求1所述的方法,其特征在于,文本语料输入文本分类模型之前,对文本语料进行预处理;所述预处理包括:清理、删除异常值和去重。3.如权利要求1所述的方法,其特征在于,通过以下步骤构成特征向量:1)将训练文本语料通过n-gram进行特征处理,得到训练文本语料中的词特征表示和词组特征表示;2)依据词特征表示和词组特征表示,构成特征向量。4.如权利要求1所述的方法,其特征在于,bert模型的目标函数为p(w
i
|w1,
…
,w
i-1
,w
i+1
,
…
,w
n
)。5.如权利要求1所述的方法,其特征在于,bert模型训练过程中,调整的bert模型参数包括:批量大小、学习率和迭代次数;批量大小的取值范围包括:16和32;学习率的取值范围包括:5e-5、3e-5和2e-5;迭代次数的取值范围包括:3和4。6.如权利要求1所述的方法,其特征在于,若bert模型的输入为句子对,则通过一特殊的词隔开两个句子,并将相应的段表征加到每个词嵌入表示上。7.如权利要求1所述的方法,其特征在于,对于序列级的分类任务,bert模型的输出为cw
t
,其中c为第一个词的最终隐藏状态,w为权重。8.如权利要求1所述的方法,其特征在于,所述分类层包括:softmax层。9.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-8中任一所述方法。10.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-8中任一所述方法。
技术总结本发明公开了一种基于BERT的高精度文本分类方法及装置,在输入端采用FastText模型,对词汇进行嵌入表示得到表示向量,然后把表示向量作为BERT模型的输入,将BERT的输出结果接上全连接层+softmax,实现文本分类。本发明提前用FastText模型处理语料数据,获取字符的特征,解决了OOV的embedding问题,同时获取词的形态变换,对富有词型变换的语料具有更好的表示能力;使用BERT能够提前预训练大量的语料,增加了词向量的语义丰富度,获得更好的上下文表示;在BERT模型的输出添加全连接层和softmax进行文本分类,提高了文本分类的精度。提高了文本分类的精度。提高了文本分类的精度。
技术研发人员:井雅琪 时磊 佟玲玲 李扬曦 段东圣 任博雅 段运强 曹亚男 方芳
受保护的技术使用者:中国科学院信息工程研究所
技术研发日:2022.06.28
技术公布日:2022/11/1