序列标注模型的训练方法、装置、设备及存储介质
技术领域
本申请涉及自然语言处理
技术领域
,具体而言,本申请涉及一种序列标注模型的训练方法、装置、设备及存储介质。背景技术
随着文本数据在互联网上的增长,越来越多的服务与应用依赖知识抽取等技术的辅助,以提供更好的服务。而在知识抽取这个具体的任务中,解析无自然分隔的文本数据的技术又扮演着很重要的作用。
在现有
技术领域
中,在处理无自然分隔的文本数据时,仍然受到分词错误的影响,分词时对边界预测的准确性较低,即模型抽取到的实体起始位置或者结束位置错误。例如,“怎么把xxx自动续保取消?”这段文本数据,现有的模型抽取到的保险产品名称为“xxx自动续保”,而实际保险产品名称应为“xxx”,这类分词错误属于实体结束位置预测错误。
发明内容
本申请的主要目的为提供一种序列标注模型的训练方法、装置、设备及存储介质,以在对文本数据进行分词时,提高对边界预测的准确性。
为了实现上述发明目的,本申请提供一种序列标注模型的训练方法,其包括以下步骤:
获取序列标注模型所需输入的文本数据,将所述文本数据进行向量转换,得到input_ids向量、segment_ids向量及mask向量;其中,所述序列标注模型包括Bert模型及Span模型,所述input_ids向量为所述文本数据中每个词在Bert词典中的编号,所述segment_ids向量用于标记文本数据中每个词所属的句子,所述mask向量用于标记文本数据中的词和非词;
将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练,得到输出序列;
获取所述文本数据中的边界特征数据,将所述边界特征数据进行词向量编码,得到边界向量;
将所述输出序列与所述边界向量进行连接得到连接向量;
确定所述边界特征数据的起始位置向量及结束位置向量;
利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;
利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;
根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;
根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;
根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值,判断所述总损失值是否满足预设阈值;
当所述总损失值满足预设阈值时,完成所述序列标注模型的训练。
进一步地,所述判断所述总损失值是否满足预设阈值的步骤之后,还包括:
当所述总损失值不满足预设阈值时,根据所述总损失值调整所述起始logits值及结束logits值;
依据调整后的所述起始logits值及结束logits值重新设置所述Bert模型的参数;
返回所述将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练的步骤,以对重新设置参数后的所述Bert模型进行再次训练,直至所述总损失值满足预设阈值时停止训练,并保存所述总损失值满足预设阈值所对应的起始logits值、结束logits值及参数。
优选地,所述确定所述边界特征数据的起始位置向量及结束位置向量的步骤,包括:
获取文本样本数据及对所述文本样本数据已标注的标注数据;其中,所述文本样本数据为所需进行目标实体词的参考起始位置及参考结束位置标注的参考文本数据,所述标注数据包括所述文本样本数据中已标注的目标实体词及所述目标实体词的参考起始位置及参考结束位置;
根据所述目标实体词的参考起始位置及参考结束位置确定所述边界特征数据的起始位置及结束位置,并生成所述起始位置对应的起始位置向量、所述结束位置对应的结束位置向量。
优选地,所述生成所述起始位置对应的起始位置向量、所述结束位置对应的结束位置向量的步骤,包括:
在所述边界特征数据的起始位置设置为1,在所述边界特征数据中除所述起始位置之外的剩余位置设置为0,得到所述起始位置向量;
初始化所述边界特征数据,在初始化后的所述边界特征数据的结束位置设置为1,在初始化后的所述边界特征数据中除所述结束位置之外的剩余位置设置为0,得到所述结束位置向量。
进一步地,所述将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练的步骤之前,还包括:
判断所述input_ids向量的向量长度是否达到预先为所述Bert模型设定的句子的最大长度;
若否,则在所述input_ids向量的末尾用0进行填充,直至填充后的所述input_ids向量的向量长度达到预先为所述Bert模型设定的句子的最大长度时,执行所述将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练的步骤。
优选地,所述根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值的步骤,包括如下公式:
start_loss=start_positions*logastart_logits+(1-start_positions)log(1-start_logits);
所述根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值的步骤,包括如下公式:
end_loss=end_positions*logaend_logits+(1-end_positions)log(1-end_logits;
所述根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值的步骤,包括:
total_loss=start_loss+end_loss;
其中,所述start_loss为起始损失值,start_positions为起始位置向量,start_logits为起始logits值,所述end_loss为结束损失值,end_positions为结束位置向量,所述total_loss为总损失值,所述a为常数。
优选地,所述利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值的步骤,包括如下公式:
start_logits=WT·(concat(concat_sequence,start_positions))+b;
所述利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值的步骤,包括如下公式:
end_logits=WT·(concat(concat_sequence,end_positions))+b;
其中,所述start_logits为起始logits值,concat_sequence为连接向量,所述start_positions为起始位置向量,end_logits为结束logits值,end_positions为结束位置向量,所述WT为预置在所述Span模型的权重,所述b为常数。
本申请还提供一种序列标注模型的训练装置,其包括:
转换模块,用于获取序列标注模型所需输入的文本数据,将所述文本数据进行向量转换,得到input_ids向量、segment_ids向量及mask向量;其中,所述序列标注模型包括Bert模型及Span模型,所述input_ids向量为所述文本数据中每个词在Bert词典中的编号,所述segment_ids向量用于标记文本数据中每个词所属的句子,所述mask向量用于标记文本数据中的词和非词;
输入模块,用于将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练,得到输出序列;
编码模块,用于获取所述文本数据中的边界特征数据,将所述边界特征数据进行词向量编码,得到边界向量;
连接模块,用于将所述输出序列与所述边界向量进行连接得到连接向量;
确定模块,用于确定所述边界特征数据的起始位置向量及结束位置向量;
第一线性变换模块,用于利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;
第二线性变换模块,用于利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;
第一计算模块,用于根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;
第二计算模块,用于根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;
判断模块,用于根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值,判断所述总损失值是否满足预设阈值;
完成模块,用于当所述总损失值满足预设阈值时,完成所述序列标注模型的训练。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项所述方法的步骤。
本申请所提供的一种序列标注模型的训练方法、装置、设备及存储介质,首先获取序列标注模型所需输入的文本数据,将文本数据进行向量转换得到input_ids向量、segment_ids向量及mask向量,将input_ids向量、segment_ids向量及mask向量输入Bert模型进行训练,以对Bert模型的相关参数进行调整,并得到输出序列;然后获取文本数据中的边界特征数据,将边界特征数据进行词向量编码,得到边界向量,将输出序列与边界向量进行连接得到连接向量,并确定边界特征数据的起始位置向量及结束位置向量,利用Span模型将连接向量和边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;利用Span模型将连接向量和边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;根据起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;根据结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;最后根据起始损失值和结束损失值计算序列标注模型的总损失值,在总损失值满足预设阈值时,完成序列标注模型的训练。本发明由Bert模型+Span模型构成的序列标注模型,通过在输入序列标注模型中的文本数据加入边界特征数据,并把边界特征数据映射到Span模型的相同向量空间,强化要抽取边界位置的文本数据,同时基于边界特征数据计算总损失值,以对每次训练后的序列标注模型进行准确评估,使训练完成的序列标注模型对边界信息进行准确预测。
附图说明
图1为本申请一实施例的序列标注模型的训练方法的流程示意图;
图2为本申请一实施例的序列标注模型的训练装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请提出一种序列标注模型的训练方法,用于当前模型进行分词时,抽取到的实体起始位置或者结束位置错误,对边界预测的准确性较低的问题,其中一个实施例中,该序列标注模型的训练方法包括如下步骤:
S11、获取序列标注模型所需输入的文本数据,将所述文本数据进行向量转换,得到input_ids向量、segment_ids向量及mask向量;其中,所述序列标注模型包括Bert模型及Span模型,所述input_ids向量为所述文本数据中每个词在Bert词典中的编号,所述segment_ids向量用于标记文本数据中每个词所属的句子,所述mask向量用于标记文本数据中的词和非词;
S12、将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练,得到输出序列;
S13、获取所述文本数据中的边界特征数据,将所述边界特征数据进行词向量编码,得到边界向量;
S14、将所述输出序列与所述边界向量进行连接得到连接向量;
S15、确定所述边界特征数据的起始位置向量及结束位置向量;
S16、利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;
S17、利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;
S18、根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;
S19、根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;
S20、根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值,判断所述总损失值是否满足预设阈值;
S21、当所述总损失值满足预设阈值时,完成所述序列标注模型的训练。
如上述步骤S11所述,序列标注模型可由Bert模型及Span模型构成,Bert模型所需输入的每条文本数据需要转换出三个向量:input_ids向量,该input_ids向量是指文本数据中的每个词在Bert词典中的编号;segment_ids向量,是指若文本数据包括多个句子,每个句子标记的id,表明每个词属于哪一个句子;mask向量,用于将词部分置为1,非词部分置为0形成一个向量,以区分词和非词,其中,非词为文本数据中的标点符号、数学符号或特殊字符。
其中,BERT(Bidirectional Encoder Representationsfrom Transformers,基于Transformer的双向编码器表征)是一种语言模型,其有效地改进了许多自然语言处理任务,包括自然语言推断、复述(paraphrasing)等句子层面的任务、以及命名实体识别、SQuAD问答等token层面的任务。此外,BERT模型能够有效利用上下文信息,根据其所处的语境/上下文来确定词嵌入,从而得到语境化词嵌入。
在基于公开数据集的预训练过程中,BERT模型通常同时使用掩码语言模型(masklanguage model)和下一句预测(next sentence prediction)这两者作为损失函数。然而,因为在实际的智能问答领域中,人工对话日志与传统的机器阅读文档形式不同,对话之间的序列连贯性通常并不是那么强,没有明显的上下文关系。所以,在本文的实施例中,在利用上述训练预料对BERT模型进行预训练时,可以只选择掩码语言模型作为损失函数,而不使用下一句预测。这样,能够更加有针对性地完成对BERT模型的预训练。
如上述步骤S12所述,本步骤将input_ids向量、segment_ids向量及mask向量输入Bert模型中,对Bert模型进行训练,输出得到输出序列,并将输出序列标记为sequence_output。其中,所述输出序列为对文本数据的字词进行初步划分、分成多个字词的初始结果,并作为Span模型的其中一个输入。
如上述步骤S13所述,文本数据的边界特征数据包括每个字词之间的前后语义关系或相关性,如两个字之间语义相近或可组成一个词,则表明两个字的语义关系较高、相关性较强。边界向量可以独热编码向量来表示文本数据中每个词所处的当前位置是否是实体的组成部分,是实体组成部分则用1填充,不是实体组成部分则用0填充,以此生成边界向量。
如上述步骤S14所述,本步骤将输出序列sequence_output结合边界向量进行连接得到连接向量,标记为concat_sequence,以生成含有边界信息的向量。
如上述步骤S15所述,Span模型所需的边界特征数据,每条边界特征数据需要转换出二个向量,起始位置向量start_positions,用于表征文本数据中实体词的起始特征,通过将实体的起始位置设置为实体类型id,其他部分填充为0得到;结束位置向量end_positions,用于表征文本数据中实体词的结束特征,通过将实体的结束位置设置为实体类型id,其他部分填充为0得到。
如上述步骤S16、S17所述,所述利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值的步骤,包括如下公式:
start_logits=WT·(concat(concat_sequence,start_positions))+b;
所述利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值的步骤,包括如下公式:
end_logits=WT·(concat(concat_sequence,end_positions))+b;
其中,所述start_logits为起始logits值,concat_sequence为连接向量,所述start_positions为起始位置向量,end_logits为结束logits值,end_positions为结束位置向量,所述WT为预置在所述Span模型的权重,所述b为常数。
如上述步骤S18-S20所述,交叉熵损失主要用于度量两个概率分布间的差异性。优选地,所述根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值的步骤,可包括如下公式:
start_loss=start_positions*logastart_logits+(1-start_positions)log(1-start_logits);
所述根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值的步骤,包括如下公式:
end_loss=end_positions*logaend_logits+(1-end_positions)log(1-end_logits;
所述根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值的步骤,可具体包括:
total_loss=start_loss+end_loss;
其中,所述start_loss为起始损失值,用于评估Bert模型对文本数据的起始边界的预测情况,start_positions为起始位置向量,start_logits为起始logits值,所述end_loss为结束损失值,用于评估Bert模型对文本数据的结束边界的预测情况,end_positions为结束位置向量,所述total_loss为总损失值,所述a为常数。
如上述步骤S21所述,在对序列标注模型每次训练后,计算训练完成后的总损失值,并在总损失值满足预设阈值或小于预设损失值时,即满足预设要求,则表明序列标注模型达到训练要求,完成所述序列标注模型的训练,以提高序列标注模型对信息边界预测的精度。
本申请所提供的一种序列标注模型的训练方法,首先获取序列标注模型所需输入的文本数据,将文本数据进行向量转换得到input_ids向量、segment_ids向量及mask向量,将input_ids向量、segment_ids向量及mask向量输入Bert模型进行训练,以对Bert模型的相关参数进行调整,并得到输出序列;然后获取文本数据中的边界特征数据,将边界特征数据进行词向量编码,得到边界向量,将输出序列与边界向量进行连接得到连接向量,并确定边界特征数据的起始位置向量及结束位置向量,利用Span模型将连接向量和边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;利用Span模型将连接向量和边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;根据起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;根据结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;最后根据起始损失值和结束损失值计算序列标注模型的总损失值,在总损失值满足预设阈值时,完成序列标注模型的训练。本发明由Bert模型+Span模型构成的序列标注模型,通过在输入序列标注模型中的文本数据加入边界特征数据,并把边界特征数据映射到Span模型的相同向量空间,强化要抽取边界位置的文本数据,同时基于边界特征数据计算总损失值,以对每次训练后的序列标注模型进行准确评估,使训练完成的序列标注模型对边界信息进行准确预测。
在一实施例中,在步骤S20中,所述判断所述总损失值是否满足预设阈值的步骤之后,还可包括:
当所述总损失值不满足预设阈值时,根据所述总损失值调整所述起始logits值及结束logits值;
依据调整后的所述起始logits值及结束logits值重新设置所述Bert模型的参数;
返回所述将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练的步骤,以对重新设置参数后的所述Bert模型进行再次训练,直至所述总损失值满足预设阈值时停止训练,并保存所述总损失值满足预设阈值所对应的起始logits值、结束logits值及参数。
在本实施例中,可根据总损失值在序列标注模型的神经网络结构中进行前向传递,调整起始logits值、结束logits值,并依据调整后的起始logits值及结束logits值重新设置序列标注模型中Bert模型的相关参数,基于重新设置的相关参数对调整后的Bert模型进行重新训练,并计算再次训练后的总损失值,直至总损失值满足预设要求时,最终得到总损失值满足预设阈值所对应的起始logits值、结束logits值,并保存序列标注模型的参数,至此序列标注模型训练结束。
本实施例通过对起始logits值、结束logits值及所述Bert模型的参数进行调整,并对调整后的Bert模型进行反复训练,以确保由Bert模型构成的序列标注模型对文本数据中实体词的边界预测满足要求。
在步骤S15中,所述确定所述边界特征数据的起始位置向量及结束位置向量的步骤,可具体包括:
S151、获取文本样本数据及对所述文本样本数据已标注的标注数据;其中,所述文本样本数据为所需进行目标实体词的参考起始位置及参考结束位置标注的参考文本数据,所述标注数据包括所述文本样本数据中已标注的目标实体词及所述目标实体词的参考起始位置及参考结束位置;
S152、根据所述目标实体词的参考起始位置及参考结束位置确定所述边界特征数据的起始位置及结束位置,并生成所述起始位置对应的起始位置向量、所述结束位置对应的结束位置向量。
在本实施例中,可对获取的文本样本数据进行人工标注,以确定文本样本数据的所有目标实体词,并进行参考起始位置及参考结束位置标记,得到标注数据。标注数据可如以下形式:
什么东西是[@红旗水库意外保险#保险产品*]的标的;
什么东西是[@平安川分学平险德阳商贸校#保险产品*]的标的;
什么东西是[@行短期境内自驾游保险#保险产品*]的标的;
什么东西是[@公共场所安全#保险产品*]的标的;
其中方括号内的数据便是标注出的实体名称及实体类别。
此外,本实施例根据目标实体词的参考起始位置确定边界特征数据的起始位置,根据目标实体词的参考结束位置确定边界特征数据的结束位置,并生成起始位置对应的起始位置向量、结束位置对应的结束位置向量。
在一实施例中,所述获取文本样本数据的步骤之后,还包括:
对所述文本样本数据进行数据清洗与预处理,以去除无意义词。
本步骤可对文本样本数据的标点符号或特殊字符进行数据清理,保留符合要求的文本数据,以减少后续对无意义词的处理,提高训练效率。
在一实施例中,所述生成所述起始位置对应的起始位置向量、所述结束位置对应的结束位置向量的步骤,可具体包括:
在所述边界特征数据的起始位置设置为1,在所述边界特征数据中除所述起始位置之外的剩余位置设置为0,得到所述起始位置向量;
初始化所述边界特征数据,在初始化后的所述边界特征数据的结束位置设置为1,在初始化后的所述边界特征数据中除所述结束位置之外的剩余位置设置为0,得到所述结束位置向量。
在本实施例中,起始位置向量可通过将实体词的起始位置置为实体类型id,其他部分填充为0得到;结束位置向量通过将实体的结束位置置为实体类型id,其他部分填充为0得到,以确定实体词的边界位置,后续便于调整每次训练后的序列标注模型。
例如,当文本数据为“红旗水库意外保险”时,文本数据中边界特征数据的起始位置为“红”、结束位置为“险”,则起始位置向量为10000000,结束位置向量为00000001。
在一实施例中,在步骤S12中,所述将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练的步骤之前,还可包括:
判断所述input_ids向量的向量长度是否达到预先为所述Bert模型设定的句子的最大长度;
若否,则在所述input_ids向量的末尾用0进行填充,直至填充后的所述input_ids向量的向量长度达到预先为所述Bert模型设定的句子的最大长度时,执行所述将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练的步骤。
在本实施例中,向量长度为预先设定的输入模型的句子的最大长度,如果句子长度不够达到最大长度,向量的值用0来填充。具体的,可预先为Bert模型设置句子的固定长度seg_size,利用向量模型将文本数据转化为input_ids向量,计算input_ids向量的向量长度,如果input_ids向量的向量长度小于固定长度seg_size,就在所述input_ids向量的末尾填充0,以使input_ids向量的向量长度达到固定长度seg_size,以使输入Bert模型的向量的向量长度满足要求。
参照图2,本申请实施例中还提供一种序列标注模型的训练装置,包括:
转换模块11,用于获取序列标注模型所需输入的文本数据,将所述文本数据进行向量转换,得到input_ids向量、segment_ids向量及mask向量;其中,所述序列标注模型包括Bert模型及Span模型,所述input_ids向量为所述文本数据中每个词在Bert词典中的编号,所述segment_ids向量用于标记文本数据中每个词所属的句子,所述mask向量用于标记文本数据中的词和非词;
输入模块12,用于将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练,得到输出序列;
编码模块13,用于获取所述文本数据中的边界特征数据,将所述边界特征数据进行词向量编码,得到边界向量;
连接模块14,用于将所述输出序列与所述边界向量进行连接得到连接向量;
确定模块15,用于确定所述边界特征数据的起始位置向量及结束位置向量;
第一线性变换模块16,用于利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;
第二线性变换模块17,用于利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;
第一计算模块18,用于根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;
第二计算模块19,用于根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;
判断模块20,用于根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值,判断所述总损失值是否满足预设阈值;
完成模块21,用于当所述总损失值满足预设阈值时,完成所述序列标注模型的训练。
序列标注模型可由Bert模型及Span模型构成,Bert模型所需输入的每条文本数据需要转换出三个向量:input_ids向量,该input_ids向量是指文本数据中的每个词在Bert词典中的编号;segment_ids向量,是指若文本数据包括多个句子,每个句子标记的id,表明每个词属于哪一个句子;mask向量,用于将词部分置为1,非词部分置为0形成一个向量,以区分词和非词,其中,非词为文本数据中的标点符号、数学符号或特殊字符。
其中,BERT(Bidirectional Encoder Representationsfrom Transformers,基于Transformer的双向编码器表征)是一种语言模型,其有效地改进了许多自然语言处理任务,包括自然语言推断、复述(paraphrasing)等句子层面的任务、以及命名实体识别、SQuAD问答等token层面的任务。此外,BERT模型能够有效利用上下文信息,根据其所处的语境/上下文来确定词嵌入,从而得到语境化词嵌入。
在基于公开数据集的预训练过程中,BERT模型通常同时使用掩码语言模型(masklanguage model)和下一句预测(next sentence prediction)这两者作为损失函数。然而,因为在实际的智能问答领域中,人工对话日志与传统的机器阅读文档形式不同,对话之间的序列连贯性通常并不是那么强,没有明显的上下文关系。所以,在本文的实施例中,在利用上述训练预料对BERT模型进行预训练时,可以只选择掩码语言模型作为损失函数,而不使用下一句预测。这样,能够更加有针对性地完成对BERT模型的预训练。
本实施例将input_ids向量、segment_ids向量及mask向量输入Bert模型中,对Bert模型进行训练,输出得到输出序列,并将输出序列标记为sequence_output。其中,所述输出序列为对文本数据的字词进行初步划分、分成多个字词的初始结果,并作为Span模型的其中一个输入。
文本数据的边界特征数据包括每个字词之间的前后语义关系或相关性,如两个字之间语义相近或可组成一个词,则表明两个字的语义关系较高、相关性较强。边界向量可以独热编码向量来表示文本数据中每个词所处的当前位置是否是实体的组成部分,是实体组成部分则用1填充,不是实体组成部分则用0填充,以此生成边界向量。
此外,还可将输出序列sequence_output结合边界向量进行连接得到连接向量,标记为concat_sequence,以生成含有边界信息的向量。
Span模型所需的边界特征数据,每条边界特征数据需要转换出二个向量,起始位置向量start_positions,用于表征文本数据中实体词的起始特征,通过将实体的起始位置设置为实体类型id,其他部分填充为0得到;结束位置向量end_positions,用于表征文本数据中实体词的结束特征,通过将实体的结束位置设置为实体类型id,其他部分填充为0得到。
所述利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值的步骤,包括如下公式:
start_logits=WT·(concat(concat_sequence,start_positions))+b;
所述利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值的步骤,包括如下公式:
end_logits=WT·(concat(concat_sequence,end_positions))+b;
其中,所述start_logits为起始logits值,concat_sequence为连接向量,所述start_positions为起始位置向量,end_logits为结束logits值,end_positions为结束位置向量,所述WT为预置在所述Span模型的权重,所述b为常数。
交叉熵损失主要用于度量两个概率分布间的差异性。优选地,所述根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值的步骤,可包括如下公式:
start_loss=start_positions*logastart_logits+(1-start_positions)log(1-start_logits);
所述根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值的步骤,包括如下公式:
end_loss=end_positions*logaend_logits+(1-end_positions)log(1-end_logits;
所述根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值的步骤,可具体包括:
total_loss=start_loss+end_loss;
其中,所述start_loss为起始损失值,用于评估Bert模型对文本数据的起始边界的预测情况,start_positions为起始位置向量,start_logits为起始logits值,所述end_loss为结束损失值,用于评估Bert模型对文本数据的结束边界的预测情况,end_positions为结束位置向量,所述total_loss为总损失值,所述a为常数。
在对序列标注模型每次训练后,计算训练完成后的总损失值,并在总损失值满足预设阈值或小于预设损失值时,即满足预设要求,则表明序列标注模型达到训练要求,完成所述序列标注模型的训练,以提高序列标注模型对信息边界预测的精度。
如上所述,可以理解地,本申请中提出的所述序列标注模型的训练装置的各组成部分可以实现如上所述序列标注模型的训练方法任一项的功能,具体结构不再赘述。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种序列标注模型的训练方法。
上述处理器执行上述的序列标注模型的训练方法,包括:
获取序列标注模型所需输入的文本数据,将所述文本数据进行向量转换,得到input_ids向量、segment_ids向量及mask向量;其中,所述序列标注模型包括Bert模型及Span模型,所述input_ids向量为所述文本数据中每个词在Bert词典中的编号,所述segment_ids向量用于标记文本数据中每个词所属的句子,所述mask向量用于标记文本数据中的词和非词;
将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练,得到输出序列;
获取所述文本数据中的边界特征数据,将所述边界特征数据进行词向量编码,得到边界向量;
将所述输出序列与所述边界向量进行连接得到连接向量;
确定所述边界特征数据的起始位置向量及结束位置向量;
利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;
利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;
根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;
根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;
根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值,判断所述总损失值是否满足预设阈值;
当所述总损失值满足预设阈值时,完成所述序列标注模型的训练。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种序列标注模型的训练方法,包括步骤:
获取序列标注模型所需输入的文本数据,将所述文本数据进行向量转换,得到input_ids向量、segment_ids向量及mask向量;其中,所述序列标注模型包括Bert模型及Span模型,所述input_ids向量为所述文本数据中每个词在Bert词典中的编号,所述segment_ids向量用于标记文本数据中每个词所属的句子,所述mask向量用于标记文本数据中的词和非词;
将所述input_ids向量、所述segment_ids向量及所述mask向量输入所述Bert模型进行训练,得到输出序列;
获取所述文本数据中的边界特征数据,将所述边界特征数据进行词向量编码,得到边界向量;
将所述输出序列与所述边界向量进行连接得到连接向量;
确定所述边界特征数据的起始位置向量及结束位置向量;
利用所述Span模型将所述连接向量和所述边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;
利用所述Span模型将所述连接向量和所述边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;
根据所述起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;
根据所述结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;
根据所述起始损失值和结束损失值计算所述序列标注模型的总损失值,判断所述总损失值是否满足预设阈值;
当所述总损失值满足预设阈值时,完成所述序列标注模型的训练。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
综上所述,本申请的最大有益效果在于:
本申请所提供的一种序列标注模型的训练方法、装置、设备及存储介质,首先获取序列标注模型所需输入的文本数据,将文本数据进行向量转换得到input_ids向量、segment_ids向量及mask向量,将input_ids向量、segment_ids向量及mask向量输入Bert模型进行训练,以对Bert模型的相关参数进行调整,并得到输出序列;然后获取文本数据中的边界特征数据,将边界特征数据进行词向量编码,得到边界向量,将输出序列与边界向量进行连接得到连接向量,并确定边界特征数据的起始位置向量及结束位置向量,利用Span模型将连接向量和边界特征数据的起始位置向量进行连接,并线性变换后,得到起始logits值;利用Span模型将连接向量和边界特征数据的结束位置向量进行连接,并线性变换后,得到结束logits值;根据起始logits值和起始位置向量计算交叉熵损失,得到起始损失值;根据结束logits值和结束位置向量计算交叉熵损失,得到结束损失值;最后根据起始损失值和结束损失值计算序列标注模型的总损失值,在总损失值满足预设阈值时,完成序列标注模型的训练。本发明由Bert模型+Span模型构成的序列标注模型,通过在输入序列标注模型中的文本数据加入边界特征数据,并把边界特征数据映射到Span模型的相同向量空间,强化要抽取边界位置的文本数据,同时基于边界特征数据计算总损失值,以对每次训练后的序列标注模型进行准确评估,使训练完成的序列标注模型对边界信息进行准确预测。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:负例构造方法、装置、设备和存储介质