具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
现有针对高层任务的文本处理方法,仅针对任务目标提取任务相关的特征,而忽略较为基础的如词法、句法等共性特征,造成一定的信息丢失,影响任务结果准确性。此外,针对特定高层任务的文本处理模型,通常仅对其训练样本集所在的数据集具有较好的处理效果,而对于其他数据集缺少一定的泛化性。
为了解决上述问题,本申请提供一种文本处理方法及装置。以下是方法实施例。
图1为本申请根据一示例性实施例示出的一种文本处理方法流程图。如图1所示,该方法可以包括:
步骤11,使用第一编码器获取待处理文本的任务特征向量,所述任务特征向量为所述待处理文本针对目标任务的特征表示,所述第一编码器经多任务联合训练得到。
待处理文本可以为一个语句,或者由多个语句组成的段落或篇章。待处理文本可以来源于一个特定的未标注语料集,例如新闻聚类任务中,待处理文本为从某网站新闻版块爬取的新闻语料集中的一条条新闻;在情感分类任务中,待处理文本为影评数据集中的一条条评论。
任务特征向量为待处理文本中针对目标任务的特征信息的向量表示。例如,如果目标任务是分类,则任务特征向量为待处理文本中分类特征的向量表示;如果目标任务是语义解析,其任务特征向量则为待处理文本中语义特征的向量表示。
第一编码器实际上为基于人工神经网络模型而搭建的文本处理模型的隐层,第一编码器的参数即文本处理模型的隐层参数θ=(W,U,B,V),其中,W表示神经网络中层与层之间连接的权值矩阵,U表示数据在输入神经网络时的权值矩阵,B表示神经网络层与层之间的偏置矩阵,V表示神经网络隐层到Softmax层(输出层)的权值矩阵。
此外,第一编码器相应的解码器则为文本处理模型的Softmax层。
将待处理文本输入至第一编码器中,利用第一编码器器对输入数据进行处理,输出任务特征向量。作为一种可能的实现方式,先对待处理文本进行分词,再将分词得到的词汇序列随机初始化为词向量表示,再使用第一编码器对词向量表示进行处理。
第一编码器对上述词向量表示的处理过程,实际上是根据人工神经网络模型的算法对输入数据进行处理。人工神经网络模型的算法根据模型类型的不同而不同,由于属于已有技术,在此不再赘述。
示例性地,第一编码器及相应解码器基于一经多任务联合训练得到的BERT模型。可选地,多任务联合训练开始之前,该BERT模型的参数为预训练参数。具体可以通过直接下载谷歌公布的中文预训练BERT模型得到预训练参数,也可以将一未标注语料集中的语句序列输入至初始化BERT模型,对初始化BERT模型进行预训练,预训练的任务包括语句序列中两个语句是否为上下句的预测任务,和,两个语句中掩盖词的预测及掩盖词词性预测。
示例性地,使用基于BERT模型的第一编码器获取待处理文本的任务特征向量,步骤可以包括:
步骤21,对待处理文本进行分词,并使用位置编码给分词得到的词语添加位置信息。
由于基于完全注意力的方法并不能像卷积神经网络或循环神经网络那样编码词与词之间的位置关系,因此为了令Transformer模型能够感知词与词之间的位置关系,本实施例使用位置编码给每个词加上位置信息。
步骤22,将分词得到的词语序列表示成包含位置编码信息的初始词向量。
使用初始词向量表示添加位置信息的词语序列时,可以使用word2vec训练词向量,当然可用任意一种embedding训练方法。
步骤23,将初始词向量输入至Transformer模型中,输出包含任务特征的任务特征向量。
本实施例所使用BERT模型中包括Transformer结构共计12层,每一层Transformer结构进一步包括自注意力、正则化、全连接、正则化4层。
其中,自注意力层使用如下公式计算:
在公式(1)中,为一个Q、K中一个向量的长度;Q、K、V为初始句子的词矩阵变换得到的,其公式分别为:
Q=YWQ 公式(2)
K=YWK 公式(3)
V=YWV 公式(4)
其中,W*为一个可学习的随机初始化的权重矩阵,Y为输入的词向量。
BERT模型是里面Multi-head Attention,这里面Multi-head Attention其实就是多个Self-Attention结构的结合,每一个head是原始输入矩阵的一部分。head学习到在不同表示空间中的特征,多个head学习到的Attention侧重点可能略有不同,这样给了模型更大的容量。
多任务联合训练是指把多个任务的模型放在一起进行训练。已有的深度学习神经网络模型大多采用单任务训练的方法,然而,不同任务对应模型的数据集差异巨大,因此单任务训练得到的模型只能在本数据集上获得较好的效果,而对于非本数据集的数据,需遭受一定的泛化性损失。另外,由于单任务训练时只注重单一任务目标,而不同数据文本之间天生具有隐式共性,从而会造成一定的信息丢失。
为了避免上述问题,本申请实施例中,使用经多任务联合训练得到的第一编码器处理输入数据,由于该第一编码器具有较强的泛化能力,因此对于任意领域的待处理文本来说,输出结果可靠性较高。
步骤12,使用第二编码器获取待处理文本的至少一个共享特征向量,所述共享特征向量为所述待处理文本针对任意任务的特征表示。
自然语言处理任务诸多,大体可按照任务类型分为词法分析,句子分析,语义分析,信息抽取,高层任务等。其中,由于所有自然语言都具有词法、句法特征,因此对于词法分析,句子分析等任务,无需限定句子领域,故可称为基础任务。而如文本分类、机器翻译、文本摘要、问答系统、对话系统、阅读理解等任务,为直接面向普通用户提供自然语言处理产品服务的系统级任务,并且涉及多个层面的自然语言处理技术,故为高层任务。
已有的针对高层任务的文本处理方法,仅针对目标任务提取任务相关的特征,而忽略较为基础的如词法、句法等共性特征,造成一定的信息丢失,影响文本处理方法的准确率和泛化能力。
为了解决这一问题,本申请实施例不仅提取任务相关的特征,还提取出任意高层任务均可涉及的基础任务相关的特征,以用于目标任务的预测,进而避免高已有的针对高层任务的文本处理方法中存在的信息丢失现象,进而提高任务结果的准确性。
区别于任务特征向量,共享特征向量为待处理文本针对任意任务的特征表示,即包含了上述基础任务相关的特征,或称共享特征,如词法特征、句法特征等,因此,可以避免信息丢失。也就是说,从某一文本中提取出的共享特征向量,可以用于预测该文本的类别,也可以用于分析该文本与其他文本的语义相似性等等。
另外,本申请实施例提取的共享特征向量可以为一个或多个。若为多个,则每一共享特征向量中将包含一种类型的共享特征。例如,词法特征、句法特征两种类型。
第二编码器的实质为一经预训练的深度学习神经网络模型,例如,递归神经网络、卷积神经网络、Attention结构等等。
第二编码器的数量可以为一个或多个。当第二编码器的数量为多个时,可以具有如图3所示的并行结构,或者具有如图4所示的串行结构。其中,每一个第二编码器对应一个基础任务,例如,在图3或图4中,m1对应命名实体识别、m2对应词性识别、m 3对应句法识别。将待处理文本分别输入至m 1、m 2和m 3中,m 1、m 2和m 3将分别输出待处理文本中的命名实体特征、词性特征以及句法特征的向量表示。
需要说明的是,对于图3所示的并行结构,将待处理文本分别输入至每个第二编码器中,每个第二编码器则将输出一个包含一种类型共享特征的共享特征向量。对于图4所示的串行结构,将待处理文本由最底层的第二编码器顺次输入至每一层的第二编码器中,即上层第二编码器的输入为其下层的输出。
在一个优选实施例中,对于图4所示的串行结构,下层的第二编码器学习的信息相对上层更急基础。例如,将m 1用于学习字级别信息,将m 2用于学习词级别信息,将m 3用于学习句级别信息。
在一个可选实施例中,使第二编码器参与到针对第一编码器的多任务联合训练中,第二编码器的参数为其预训练参数再经所述多任务联合训练后的参数。
步骤13,根据所述任务特征向量与所述共享特征向量生成目标特征向量。
本实施例通过步骤13将共享特征向量融入到目标任务的预测当中。其中,由于对于不同的目标任务而言,共享特征向量的各部分所包含特征信息的重要性有所不同。因此,本申请从共享特征向量中抽取出对目标任务重要的部分,与任务特征向量融合,生成目标特征向量,从而在避免信息丢失的同时,尽可能地避免引入噪声。
基于此,步骤13可以进一步包括:
步骤51,根据注意力参数矩阵和任务特征向量生成权重矩阵,所述注意力参数矩阵通过所述多任务联合训练得到。
具体可以使用下式,生成权重矩阵;
公式(5)中,表示权重矩阵中每一词汇t对应的权重向量,rq表示任务特征向量H中每一词汇t对应的向量表示ht的平均,Mqi表示注意力参数矩阵,xt表示共享特征向量X中每一词汇t对应的向量表示,σ表示sigmoid函数。
步骤52,使用所述权重矩阵对所述共享特征向量中每一词汇对应的向量表示进行加权。
加权过程可以表示为下式:
公式(6)中,为加权结果中每一词汇t加权后的向量表示。
步骤53,将所述共享特征向量的加权结果与所述任务特征向量拼接,得到目标特征向量。
例如,三个共享特征向量的加权结果分别为拼接结果为
最后,在步骤14中,使用所述第一编码器相应的解码器处理所述目标特征向量,预测目标任务结果。
解码器的实质为前述文本处理模型的输出层,根据神经网络模型的不同,其输出层算法不同。
训练过程对神经网络模型的性能至关重要。本申请使用的第一编码器、相应解码器、注意力参数矩阵,以及第二编码器的参数,均是经多任务联合训练得到。并且,在对第二编码器进行所述多任务联合训练,还需单独对其进行预训练。以下将依次对联合训练过程以及针对第二编码器的单独预训练过程予以介绍。
图6为多任务联合训练场景示意图。如图6所示,多个文本处理模型共同参与训练,其中每一文本处理模型均包括第一编码器61和解码器62,且第一编码器和解码器的参数是模型独有的。从图6中还可以看出,每一文本处理模型还包括第二编码器60,但由于每一编码器的神经网络模型的类型和参数是相同的,相当于多个文本处理模型共用一个第一编码器。
上述场景中,每一文本处理模型对应一个特定任务,例如,M1的任务是情感分类,M2的任务是文本分类。每一文本处理模型的任务虽然不同,但是有所关联。其中,如果两个任务是处理输入的相同函数,但是在任务信号中加入独立的噪声处理,很明显这两个任务是相关的;如果两个任务用于预测同个个体的属性的不同方面,这些任务比预测不同个体的属性的不同方面更相关;另外,两个任务共同训练时能相互帮助并不意味着它们是相关的,这是因为通过在后向传播网络的一个额外输出加入噪声可以提高泛化能力,但是这个噪声任务与其它任务不相关。
图7为多任务联合训练方法流程图。如图7所示,联合训练过程可以包括如下步骤:
步骤71,对于每一任务,使用相应第一编码器处理相应训练样本,得到第一编码向量。
训练样本一般包括输入文本和标准输出数据。输入文本可以为一个语句,或者由多个语句组成的段落或篇章。标准输出数据是指期望模型输出的与任务目标相应的数据,通常可以人工标注或者通过其他方式获得。
根据任务的不同,每一文本处理模型相应的训练样本可能存在不同。例如对于命名实体识别任务,其标准输出数据为命名实体标签,对于词性预测任务,其标准输出数据为词性标签,而对于分类任务,其标准输出数据则为表示输入文本属于正例或负例的类别标签。
同时,同一训练样本可以包括其中一个任务对应的标准输出数据,也可以包括多个任务对应的标准输出数据。例如,使用同一训练样本数据对M1和M2两个任务进行训练,则需使该训练样本数据同时包括M1任务对应的标准输出数据,和M2任务对应的标准输出数据。
本申请针对每一任务单独准备语料集,从而保证每一文本处理模型的训练样本,尤其是输入文本间存在较大的差异,相当于扩大了本申请训练方法的样本规模,进而提升对模型的训练效果。
训练开始时,文本处理模型中的参数可以包括部分或全部预训练参数,也可以均为初始化参数。将每一任务的相应训练样本逐个输入至相应第一编码器中,第一编码器对输入的数据进行处理,输出第一编码向量。
示例性地,可以从一个包含300条标注语料的语料集中抽取出60条构成用于本轮迭代的训练样本集,再从剩余250条标注语料中抽取出60条构成用于下一轮迭代的训练样本集,直到将300条标注语料全部抽取完毕时,则从语料集的头部进行新一轮的抽取,以用于新一轮的迭代训练。
步骤72,使用第二编码器处理所述训练样本,得到至少一个第二编码向量。
步骤73,使用注意力参数矩阵对所述第一编码向量和所述第二编码向量进行处理,生成目标编码向量。
步骤73的过程可参见步骤51至步骤53,此处不再赘述。
步骤74,使用相应解码器处理所述目标编码向量,预测任务目标值。
步骤75,根据所述任务目标值计算预设损失函数的单任务损失值,根据各个任务对应的单任务损失值计算多任务损失值。
训练的目的是为了使文本处理模型的实际输出结果与对应的标准输出数据无限的接近。通过将任务目标值与标准数据数据代入到预先设定好的损失函数中计算损失值,根据损失值确定模型的迭代更新方向和更新量,从而不断优化模型的更新参数。其中,损失函数可以根据人工网络模型的类型和任务目标而设定,属于已有技术,在此不再赘述。
单任务损失值即在多任务训练中单独一文本处理模型的损失值,可以通过将任务目标值和标准输出数据代入到预设损失函数中计算得到。
多任务损失值根据每一单任务损失值计算得到,用于对参与训练的全部文本处理模型的损失进行综合度量。
具体实现中,由于每一文本处理模型相应的训练样本数量不同,因此利用参数调整权重,对每一单任务损失值进行加权,从而保证对每一模型的参数的更新量相一致。其中,参数调整权重与训练样本数量的映射关系可以预先设置,以根据每一文本处理模型相应的训练样本数量,获取所述文本处理模型的参数调整权重,再使用所述参数调整权重对所述单任务损失值加权求和,得到多任务损失值。
具体可参见下式:
公式(7)中,LOSS表示多任务损失值,LOSSm表示每一文本处理模型对应的单任务损失值,Km表示每一文本处理模型对应的参数调整权重。
步骤76,根据所述多任务损失值调整每一任务相应的第一编码器、注意力参数矩阵以及解码器的参数。
在一个可选实施例中,多任务联合训练过程还包括对第二编码器的优化。但由于第二编码器在多任务联合训练阶段的初始参数为迁移的预训练最优参数,因此为了避免第二编码器的参数在多任务训练中发生较大的变化,利用更新控制系数对第二编码器的更新量加以控制,该更新控制系数可以为一预设数值,如为0.1,同时,不同第二编码器所预设的更新控制系数可以不同。
具体的,当第二编码器的数量为多个时,获取每一第二编码器预设的更新系数,将多任务损失值和相应的更新控制系数相乘,以根据乘积确定参数更新量,进而对每一第二编码器的参数进行调整。
通过本实施例提供的方法,不断更新迭代每一文本处理模型的参数,最终在迭代次数达到一定数量,或者模型参数呈收敛状态时,可以停止对文本处理模型的训练,进而得到针对特定任务的优化参数。
本实施例对多个具有不同任务目标的文本处理模型并行训练,多个任务间存在相关的部分,也有无关的部分,其中相关的部分可以提高共享部分隐层的学习速率,进而有利于提升模型的训练效果,无关的部分则相当于噪声,可以提高模型的泛化性。此外,由于单任务训练时,梯度的反向传播倾向于陷入局部极小值,而多任务训练中,不同任务的局部极小值处于不同的位置,因此,可以帮助隐层逃离局部极小值。
图8示出了对第二编码器进行预训练的过程,应用于图9所示串行设置的两个或两个以上的第二编码器。如图8及图9所示,该方法可以包括:
步骤81,根据每一所述第二编码器预定的基础任务目标,获取相应的训练样本集。
步骤82,将第i层第二编码器相应的训练样本,由第1层顺次输入至第i层中,第i层输出基础任务目标值,i表示所述第二编码器在自下至上方向上的排列序号,即第i层的输入为第1至第i-1层的输出。
步骤83,根据每层输出的基础任务目标值,计算每层的损失值。
步骤84,根据第1至第i层的损失值,调整第i层第二编码器的参数。
由以上技术方案可知,本申请实施例提供一种文本处理方法,首先使用经多任务联合训练得到的第一编码器获取待处理文本的任务特征向量,并使用第二编码器获取待处理文本的至少一个共享特征向量,然后根据任务特征向量和共享特征向量生成目标特征向量,最后使用相应的解码器处理目标特征向量,预测目标任务结果。本申请方法不仅提取目标任务相关的特征,还提取出任意高层任务均可涉及的基础任务相关的特征,并融入目标任务的预测,进而避免针对高层任务的文本处理方法中存在的信息丢失现象,进而提高任务结果的准确性。此外,由于多任务联合训练得到的第一编码器及相应解码器具有较好的泛化性,因此使得本申请方法用于处理任意领域的文本数据都具有较好效果。
图10为本申请根据一示例性实施例示出的一种文本处理装置框图。如图10所示,该装置可以包括:
第一编码模块101,用于获取待处理文本的任务特征向量;
第二编码模块102,用于获取待处理文本的至少一个共享特征向量,所述共享特征向量为待处理文本针对任意任务目标的特征表示。具体可将待处理文本输入到至少一个所述第二编码器中,输出至少一个共享特征向量;其中,如果所述第二编码器的数量为两个或两个以上,则两个或两个以上第二编码器并行设置或串行设置。
生成模块103,用于根据所述任务特征向量与所述共享特征向量生成目标特征向量。具体的,根据注意力参数矩阵和任务特征向量生成权重矩阵,所述注意力参数矩阵经所述多任务联合训练得到;使用所述权重矩阵对所述共享特征向量中每一词汇对应的向量表示进行加权;将所述共享特征向量的加权结果与所述任务特征向量拼接,得到目标特征向量。
预测模块104,用于根据所述任务目标向量预测任务目标值。
其中,第一编码模块101和第二编码模块102基于多任务联合训练得到的BERT模型。
此外,本申请实施例提供的文本处理装置还包括:多任务联合训练模块,用于对第一编码模块101、生成模块103以及预测模块104进行多任务联合训练。
多任务联合训练模块具体用于执行下述步骤:对于每一任务,使用相应第一编码器处理相应训练样本,得到第一编码向量;使用第二编码器处理所述训练样本,得到至少一个第二编码向量;使用注意力参数矩阵对所述第一编码向量和所述第二编码向量进行处理,生成目标编码向量;使用相应解码器处理所述目标编码向量,预测任务目标值;根据所述任务目标值计算预设损失函数的单任务损失值,根据各个任务对应的单任务损失值计算多任务损失值;根据所述多任务损失值调整每一任务相应的第一编码器、注意力参数矩阵以及解码器的参数。
其中,所述根据各个任务对应的单任务损失值计算多任务损失值,包括:根据每一任务相应的训练样本数量,获取所述任务的参数调整权重;使用所述参数调整权重对全部任务对应的单任务损失值加权求和,得到多任务损失值。
在一优选实施例中,多任务联合训练模块还用于根据多任务损失值,调整第二编码模块的参数。具体的,获取每一第二编码模块预设的更新控制系数;根据所述多任务损失值和相应的更新控制系数,调整每一第二编码模块的参数。
此外,本申请实施例提供的文本处理装置还包括:预训练模块,用于对第二编码模块进行单独预训练。
预训练模块具体用于执行下述步骤:根据每一所述第二编码器预定的基础任务目标,获取相应的训练样本集;将第i层第二编码器相应的训练样本,由第1层顺次输入至第i层中,第i层输出基础任务目标值,i表示所述第二编码器在自下至上方向上的排列序号;根据每层输出的基础任务目标值,计算每层的损失值;根据第1至第i层的损失值,调整第i层第二编码器的参数。
由以上技术方案可知,本申请实施例提供一种文本处理方法及装置,所述方法首先使用经多任务联合训练得到的第一编码器获取待处理文本的任务特征向量,并使用第二编码器获取待处理文本的至少一个共享特征向量,然后根据任务特征向量和共享特征向量生成目标特征向量,最后使用相应的解码器处理目标特征向量,预测目标任务结果。本申请方法不仅提取目标任务相关的特征,还提取出任意高层任务均可涉及的基础任务相关的特征,并融入目标任务的预测,进而避免针对高层任务的文本处理方法中存在的信息丢失现象,进而提高任务结果的准确性。此外,由于多任务联合训练得到的第一编码器及相应解码器具有较好的泛化性,因此使得本申请方法用于处理任意领域的文本数据都具有较好效果。
具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的文本处理方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。