本申请实施例涉及计算机技术领域,尤其涉及一种数据处理方法、装置及计算机存储介质。
背景技术:
在纠错场景中,神经网络机器翻译(neuralmachinetranslation,nmt)模型开始逐渐替代统计翻译(smt)模型,将搜索时输入的错误文本纠正为正确文本。nmt模型在模型训练阶段,通常需要使用同时包含模拟错误语料元素和正确语料元素的平行语料,也即:错误→正确语料对进行训练。例如,错误语料为“乐明苑”,正确语料为“乐民苑”,则“乐明苑”和“乐民苑”即构成了一组平行语料。
然而,平行语料特别是双语平行语料(例如,京鹏串吧→京朋串吧)的挖掘成本往往很高,但挖掘出双语平行语料的数量较少情况,这会影响训练得到的nmt模型的准确度。
因此,如何提升nmt模型的纠错能力以实现准确的查询或者搜索成为亟待解决的问题。
技术实现要素:
有鉴于此,本申请实施例提供一种数据处理方案,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种数据处理方法,包括:获取包含正确语料元素和错误语料元素的真实平行语料,用所述真实平行语料训练反向错误生成模型;获取模拟正确语料元素,用所述反向错误生成模型预测所述模拟正确语料元素对应的模拟错误语料元素,生成包含所述模拟正确语料元素和对应的模拟错误语料元素的模拟平行语料;用所述模拟平行语料训练序列映射模型得到预训练模型;用所述真实平行语料进行所述预训练模型调整,得到纠错模型。
根据本申请实施例的第二方面,提供了一种数据处理装置,包括:错误模型训练模块,获取包含正确语料元素和错误语料元素的真实平行语料,用所述真实平行语料训练反向错误生成模型;模拟模块,获取模拟正确语料元素,用所述反向错误生成模型预测所述模拟正确语料元素对应的模拟错误语料元素,生成包含所述模拟正确语料元素和对应的模拟错误语料元素的模拟平行语料;预训练模块,用所述模拟平行语料训练序列映射模型得到预训练模型;纠错模型训练模块,用所述真实平行语料进行所述预训练模型调整,得到纠错模型。
根据本申请实施例的第三方面,提供了另一种数据处理方法,包括:接收携带查询词的查询请求;通过训练完成的纠错模型,对存在错误的查询词进行纠错处理,获得正确的查询词,其中,所述纠错模型为基于前述数据处理方法获得的纠错模型;根据所述纠错后的查询词,召回所述查询请求对应的查询结果。
根据本申请实施例的第四方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面或第三方面所述的数据处理方法对应的操作。
根据本申请实施例的第五方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面或第三方面所述的数据处理方法。
根据本申请实施例提供的方案,首先通过获取得到的包含正确语料元素和错误语料元素的真实平行语料训练得到反向错误生成模型,并基于反向错误生成模型得到大量的模拟平行语料,从而可以基于所述模拟平行语料进行模型训练得到预训练模型,以及基于真实平行语料对预训练模型进行调整得到纠错模型,提高了训练得到的纠错模型的泛化性能,纠错模型也更准确。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种数据处理方法的流程示意图;
图2为本申请实施例所给出的一种具体实施例的逻辑示意图;
图3为本申请实施例所提供的一种数据处理装置的结构示意图;
图4为本申请实施例所提供的另一种数据处理方法的流程示意图;
图5为根据本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合附图,进一步说明本申请实施例提供的方案的具体实现。如图1所示,图1为本申请实施例所提供的一种数据处理方法的流程示意图,包括:
s101,获取包含正确语料元素和错误语料元素的真实平行语料,用所述真实平行语料训练反向错误生成模型。
平行语料指的是同时包含有正确语料元素和错误语料元素的语料,例如在查询或者搜索时输入“京鹏串吧”,而搜索结果中包含了“京朋串吧”。其中,“京鹏串吧”是真实存在的,即正确语料元素;而“京朋串吧”可能现实中并不存在,即为“错误语料元素”。
正确语料元素和错误语料元素是相似度较高而存在少量差异的两个元素。正确语料元素和错误语料元素可以是诸如拼音字母和/或数字所组成的字符串、单个字符或者词组,因此正确语料元素和错误语料元素的差异部分也可以是同音字、同音词或者字形相近等等。二者的差异程度可以根据相应的模型或者实际经验进行评估,通常而言,差异的字符部分越多,则差异程度越大。
基于线上产生的实际搜索信息,可以从中挖掘得到真实平行语料(例如,真实平行语料中的正确语料元素可能是真实存在的商户的名称、地点名称等等,真实平行语料中的错误语料元素可能是在查询该商户或者地点名称时所产生的错误输入)。但是这种挖掘得到的真实平行语料往往数量很少,且成本较高。
平行语料是一种在正反两种场景中都可能存在的语料。即对象输入了“正确语料元素”进行搜索,可能得到包含“错误语料元素”的结果;也有可能是对象输入了“错误语料元素”,而得到包含了“正确语料元素”的结果。
因此,在用于模型训练时,根据模型的用途,平行语料中的正确语料元素和错误语料元素都可以用作标签。
基于前述,可以采用“正确语料元素→错误语料元素”的方式,即,以正确语料元素作为训练样本的特征,以错误语料元素作为标签,训练得到一个反向错误生成模型,用来根据正确语料元素生成错误语料元素。
s103,获取模拟正确语料元素,用所述反向错误生成模型预测所述模拟正确语料元素对应的模拟错误语料元素,生成包含所述模拟正确语料元素和对应的模拟错误语料元素的模拟平行语料。
在训练得到反向错误生成模型之后,即可以将模拟正确语料元素(模拟正确语料元素可以是现实中真实存在的商户名称、地点名称等等,也可以是虚构的商户名称或者地点名称等)作为反向错误生成模型的输入,从而反向错误生成模型即可以输出得到相对应的模拟错误语料元素。
例如,以“益满园”作为模拟正确语料元素进行输入,就可能得到对应的三条模拟错误语料元素“义满园”、“益慢园”或者“益满圆”,从而得到三条不同的模拟平行语料(益满园,义满园)、(益满园,益慢园)和(益满园,益满圆)。
由于模拟正确语料元素可以根据实际需求进行选取(例如,选取在地图应用中实际存在的商家名称作为模拟正确语料元素),因此,得到的模拟平行语料往往也可以符合实际的可能性错误。并且通过这种方式,不需要实际存在错误的搜索输入或者输出,也不需要去对相关语料进行相关挖掘,即可以得到大量的和实际场景密切相关的模拟平行语料。
s105,用所述模拟平行语料训练序列映射模型得到预训练模型。
序列映射模型和预训练模型用于将一个文本序列映射至对应的另一文本序列,映射前后的文本序列的长度应当相同。例如,可以采用诸如神经网络机器翻译(neuralmachinetranslation,nmt)模型等,本申请实施例对于具体的序列映射模型类型不做限制。在根据得到的模拟平行语料和真实平行语料训练得到纠错模型时,训练样本的形式需要和反向错误生成模型时反过来。即以“模拟错误语料元素”作为训练样本的特征,而以“正确语料元素”作为训练样本的标签进行纠错模型的预训练。
从而训练得到的纠错模型可以准基于错误的输入而准确输出正确的反馈,以实现对于对象的错误输入进行纠错的目的。例如,在对象输入“益慢园”时,纠错模型即可以正确的反馈“益满园”。
在一种实施例中,根据所述模拟平行语料和真实平行语料训练得到纠错模型的方式,可以是将模拟平行语料和真实平行语料完全混合而得到一个混合语料集合,并基于混合语料集合直接进行纠错模型的预训练。
在一种实施例中,在进行预训练的过程时,由于模拟平行语料中的简单错误往往较多(即模拟错误语料元素与模拟正确语料元素的差异度较小,由模拟错误语料元素得到模拟正确语料元素往往较容易,例如,模拟错误语料元素与模拟正确语料元素仅存在一个字符的差异),如果只采用简单的模拟平行语料来进行预训练,那么模型对于复杂情况的纠错能力不高。
基于此,还可以在预训练中进行分层训练。例如,预先构造一些复杂的错误语料,即构造一些错误语料元素与正确语料元素存在多处差异的复杂的模拟平行语料,或者,从实际搜索中获取错误语料元素与正确语料元素存在多处差异的复杂的真实平行语料。
换言之,即错误语料中错误语料元素(包括模拟的错误语料元素与真实的错误语料元素)与正确语料元素的差异程度大于所述模拟平行语料中模拟错误语料元素与模拟正确语料元素的差异程度。
从而可以根据所述模拟平行语料进行第一层训练得到中间预训练模型,然后采用预先构造的复杂程度较高的错误语料,根据所述错误语料调整所述中间预训练模型,得到调整后的预训练模型作,即目标预训练模型。通过这种方式所得到的目标预训练模型可以适应于较为复杂的错误输入的情形,泛化性能更好。
s107,用所述真实平行语料进行所述预训练模型调整,得到纠错模型。
在一种实施例中,该阶段的微调过程中,可以采用包含所述模拟平行语料和真实平行语料的混合语料集合调整所述预训练模型;或者,采用包含所述真实平行语料的单一语料集合(即仅包含真实平行语料的单一语料集合)调整所述预训练模型。
在一种实施例中,在对于所述预训练模型进行微调时,为了提高纠错模型对于差异部分的识别,即可以增大所述真实平行语料中的错误语料元素中所包含的错误字符所对应的损失函数交叉熵的权重系数。
以语料元素为词组为例,对于包含错误词组“义满园”和正确词组“益满园”的平行语料而言,其在训练过程中实际上“满园”二字都是正确的(这也和实际中相对应,即对象输入的词组中大部分都是正确的字符,而往往仅存在少量的错误字符,纠错时应当重点识别出错误的字符),而错误字符为“义”,因此,在针对该词组中的各字符计算纠错模型的损失函数交叉熵时,即可以增大错误语料元素中所包含的错误字符所对应的交叉熵的权重系数。
例如,在常规方式中,正确字符和错误字符的交叉熵的权重系数均为1,训练模型时对于错误字符的识别并不敏感。
而在本实施例中,即可以增大错误字符的所对应的交叉熵的权重系数为[2,4]中的某个数值,例如3,即将“义满园”中的“义”所对应的交叉熵的权重系数设置为3,从而训练纠错模型时对于错误字符将会更为敏感,可以加快模型的收敛速度,并提高训练得到的模型对于输入中的错误的敏感程度,纠错更为准确。
在一种实施方式中,由于实际纠错的过程中,模型对于元素的读取可以采用集束搜索beamsearch的方式,即从左到右对于元素中的字符进行准确或者错误的预测,因此排序在前(即靠左)的字符的预测结果中如果存在偏差或者错误,那么这种偏差或者错误会影响排序靠后的字符的预测,因此,排序在前的字符对于整体的预测影响更大。
基于此,在采用所述真实平行语料训练所述预训练模型时,可以按照所述真实平行语料中所包含的字符的顺序确定字符所对应的交叉熵的权重系数,其中,字符排序越靠前(或者说靠左),所述字符所对应的交叉熵的权重系数越大。
例如,对于“义满园”中的每个字符,可以按照其排序,分别设置“义”的交叉熵的权重系数为3,“满”的交叉熵的权重系数为2,“园”的交叉熵的权重系数为1。
根据本申请实施例提供的方案,首先通过获取得到的包含正确语料元素和错误语料元素的真实平行语料训练得到反向错误生成模型,并基于反向错误生成模型得到大量的模拟平行语料,从而可以基于所述模拟平行语料进行模型训练得到预训练模型,以及基于真实平行语料对预训练模型进行调整得到纠错模型,提高了训练得到的纠错模型的泛化性能,纠错模型也更准确。
此外,对于错误字符的交叉熵加权和基于顺序的交叉熵调权可以二者任选一种实施,也可以二者同时进行。当二者同时进行时,模型训练时首先分别确定在基于错误字符的交叉熵加权时各字符的错误权重,以及,确定在基于顺序的交叉熵调权时各字符的顺序权重,从而可以将错误权重和顺序权重之和确定为各字符所对应的交叉熵的权重系数。
在一种实施方式中,根据模拟平行语料进行训练时,可以根据实际需要来预先确定不同的切词粒度。例如,如果以单个字符作为切词粒度,即可以完全不需要进行切词;而如果以模拟正确语料元素和模拟错误语料元素的差异部分的长度作为切词粒度,可以在充分考虑了模拟正确语料元素和模拟错误语料元素的语义的情形下。
或者,还可以预设的切词粒度,预设的切词粒度包括:单字粒度、词组粒度、语句粒度、混合粒度。混合粒度用于指示以单字、词组和语句中部分或全部的组合为粒度,从而可以根据预设的切词粒度,对所述模拟正确语料元素和所述模拟错误语料元素进行对应切词处理。
以混合粒度作为确定使用的切词粒度为例,假设混合粒度是单字粒度+词组粒度的混合粒度,那么在进行模型训练前,即可以采用个单个字符作为第一切词粒度,从而得到模拟正确语料元素和模拟错误语料元素的差异部分;然后以词组长度作为第二切词粒度,从而得到“差异+词组”的训练样本。例如,对于平行语料“益满园,义满园”而言,在混合粒度下则可以得到“益+益满园,义+义满园”形式的样本,从而兼顾了语料元素的语义,还解决了切词中可能存在的边界问题。
如图2所示,图2为本申请实施例所给出的一种具体实施例的逻辑示意图。
在该实施例中,首先基于真实平行语料中由“正确语料元素—>错误语料元素”的方向,训练得到一个反向错误生成模型。
从而可以基于输入的模拟正确语料元素“益满园”来得到若干对应的模拟错误语料元素“义满园”、“益慢园”或者“益满圆”,从而分别得到若干模拟平行语料。
进一步地,基于模拟平行语料和预先构造的复杂的错误语料进行了预训练,得到了预训练模型。
然后,基于真实平行语料对预训练模型进行了微调,具体而言即从基于错误字符的交叉熵加权以及基于顺序的调权两个方面进行模型微调,最终得到纠错模型。
此外,需要说明的是,纠错模型和反向错误生成模型可以采用不同的算法;也可以采用相同的算法,在采用相同的算法时,二者的区别在于各自得到的内部参数不同。在实际应用中,纠错模型和反向错误生成模型可以采用transformer模型或者长短期记忆网络(lstm,longshort-termmemory)等等。
根据本申请实施例的第二方面,本申请实施例还提供了一种数据处理装置,如图3所示,图3为本申请实施例所提供的一种数据处理装置的结构示意图,所述装置包括:
错误模型训练模块301,获取包含正确语料元素和错误语料元素的真实平行语料,用所述真实平行语料训练反向错误生成模型;
模拟模块303,获取模拟正确语料元素,用所述反向错误生成模型预测所述模拟正确语料元素对应的模拟错误语料元素,生成包含所述模拟正确语料元素和对应的模拟错误语料元素的模拟平行语料;
预训练模块305,用所述模拟平行语料训练序列映射模型得到预训练模型;
纠错模型训练模块307,用所述真实平行语料进行所述预训练模型调整,得到纠错模型。
可选地,所述预训练模块305,采用所述真实平行语料训练所述预训练模型,并在训练过程中,增大所述真实平行语料中的错误语料元素中所包含的错误字符所对应的交叉熵的权重系数。
可选地,所述纠错模型训练模块307,采用所述真实平行语料训练所述预训练模型,并在训练过程中,按照真实平行语料中所包含的字符的顺序调整字符所对应的交叉熵的权重系数,其中,字符排序越靠前,该字符所对应的交叉熵的权重系数越大。
可选地,所述纠错模型训练模块307,采用包含所述模拟平行语料和真实平行语料的混合语料集合调整所述预训练模型;或者,采用包含所述真实平行语料的单一语料集合调整所述预训练模型。
可选地,所述纠错模型训练模块307,根据所述模拟平行语料训练序列映射模型得到中间预训练模型;获取预先确定的错误语料,根据所述错误语料调整所述中间预训练模型,得到调整后的目标预训练模型,其中,所述错误语料中错误语料元素与正确语料元素的差异程度大于所述模拟平行语料中模拟错误语料元素与模拟正确语料元素的差异程度。
可选地,所述预训练模块305,根据所述模拟平行语料训练序列映射模型得到中间预训练模型;获取预先确定的错误语料,根据所述错误语料调整所述中间预训练模型,得到调整后的目标预训练模型,其中,所述错误语料中错误语料元素与正确语料元素的差异程度大于所述模拟平行语料中模拟错误语料元素与模拟正确语料元素的差异程度。
可选地,在所述装置中,所述正确语料元素或者错误语料元素包括:拼音字母和/或数字所组成的字符串、单个字符或者词组。
可选地,所述预训练模块305,确定切词粒度,对所述模拟正确语料元素和模拟错误语料元素进行切词处理;根据切词后的模拟正确语料元素和模拟错误语料元素训练序列映射模型得到预训练模型。
可选地,所述预训练模块305,确定所述模拟正确语料元素和模拟错误语料元素的差异部分,将所述差异部分的长度作为切词粒度;和/或,以单个字符作为切词粒度。
可选地,所述预训练模块305,从多个预设的切词粒度中,确定待使用的切词粒度,其中,所述多个预设的切词粒度包括:单字粒度、词组粒度、语句粒度、混合粒度,所述混合粒度用于指示以单字、词组和语句中部分或全部的组合为粒度;根据待使用的切词粒度,对所述模拟正确语料元素和所述模拟错误语料元素进行对应切词处理。
根据本申请实施例的第三方面,提供了另一种数据处理方法,如图4所示,该数据处理方法包括:
s401:接收携带查询词的查询请求。
例如,对象可以通过相应的应用,如导航应用、定位应用、位置查询应用等具有地理数据搜索功能的应用,输入相应的查询词如地名等,并基于查询词生成查询请求,以进行相应的查询。
s403:过训练完成的纠错模型,对存在错误的查询词进行纠错处理,获得正确的查询词,其中,所述纠错模型为基于前述的数据处理方法获得的纠错模型。
当查询请求中包含有错误的查询词时,基于前述的纠错模型即可以将其纠正为正确的查询词。其中,所述纠错模型为根据前述第一方面所述的数据处理方法获得的纠错模型,其具体实现可参照前述实施例中的描述,在此不再赘述。
s405:根据所述纠错后的查询词,召回所述查询请求对应的查询结果。
例如,通过纠错模型对“手开广场”进行纠错处理,获得正确的“首开广场”这一正确的查询词后,即可搜索“首开广场”的相关信息并基于地图进行召回和显示,或者直接在相应的显示界面中进行显示。其中,所述相关信息包括但不限于:“首开广场”的位置信息、周边信息、交通信息等。
通过本实施例,可准确地对包含有错误查询词的查询请求进行纠错处理,并基于纠错后的结果进行快速的地理数据的查询。由此,大大提高了基于错误地理数据的查询效率,并且能够反馈较为准确的查询结果。
参照图5,示出了根据本申请实施例所提供的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(communicationsinterface)504、存储器(memory)506、以及通信总线508。其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
处理器502,用于执行程序510,具体可以执行上述数据处理方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
存储器506,用于存放程序510。存储器506可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:
获取包含正确语料元素和错误语料元素的真实平行语料,用所述真实平行语料训练反向错误生成模型;
获取模拟正确语料元素,用所述反向错误生成模型预测所述模拟正确语料元素对应的模拟错误语料元素,生成包含所述模拟正确语料元素和对应的模拟错误语料元素的模拟平行语料;
用所述模拟平行语料训练序列映射模型得到预训练模型;
用所述真实平行语料进行所述预训练模型调整,得到纠错模型。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中所示的数据处理方法。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如cdrom、ram、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如asic或fpga)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,ram、rom、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据处理方法。此外,当通用计算机访问用于实现在此示出的数据处理方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据处理方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。