本发明涉及信息处理技术领域,具体涉及一种文本纠错模型的训练方法、设备和存储介质。
背景技术:
文本纠错是计算机自然语言处理中的一个重要研究方向,通过计算机算法可以纠错文本中人为因素产生的错误,比如,错别字、错误语序等。
现有的生成式文本纠错模型通常需要收集较大规模的标注数据,然后训练端到端的生成式模型,从而能够实现从错误文本到正确文本的修正过程。
但是,对于医疗数据等本身数据量较小的文本而言,收集和标注数据需要耗费一定规模的时间和人力,降低了文本纠错模型的训练效率。
技术实现要素:
本发明提供一种文本纠错模型的训练方法、设备和存储介质,以解决现有技术中生成的文本准确性较低、质量高较低的技术问题。
本发明解决上述技术问题的技术方案如下:
一种文本纠错模型的训练方法,包括:
基于从预设的多个伪标记规则中随机选取的伪标记规则,对获取的无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本;
检测伪标记构造次数是否达到预设迭代次数;
若所述伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据;
将所述伪标记数据和获取的已标记数据作为源端数据,将所述无标记数据作为目标端数据,并基于指针网络的序列到序列方法训练文本纠错模型。
进一步地,上述所述的文本纠错模型的训练方法中,预设的多个伪标记规则包括:
在每条文本中每个词的位置以预设的第一概率随机删除至少一个字;和/或
在每条文本中每个词的位置以预设的第一概率随机插入至少一个字;和/或
将每条文本中每个词的位置按照正态分布添加噪声,并对添加噪声后的每个词重新进行排序;和/或
收集并构建音近字字典,并将每条文本中的每个词按照预设的第三概率替换成音近字;和/或
收集并构建形近字字典,并将每条文本中的每个词按照预设的第四概率替换成形近字;和/或
维持每条文本中每个词。
进一步地,上述所述的文本纠错模型的训练方法中,预设的多个伪标记规则包括在每条文本中每个词的位置以预设的第一概率随机插入至少一个字,所述方法还包括:
根据所述无标记数据中字符频率构建字表;
从所述字表中选取插入的至少一个字。
进一步地,上述所述的文本纠错模型的训练方法中,根据所述无标记数据中字符频率构建字表,包括:
将所述无标记数据中字符频率大于或等于预设阈值的字符作为目标字符;
根据所述目标字符构建所述字表。
进一步地,上述所述的文本纠错模型的训练方法中,基于指针网络的序列到序列方法训练文本纠错模型,包括:
对所述源端数据进行字序列划分,并将得到的字序列进行词向量处理,得到所述字序列对应的字矩阵;
利用编码器对所述字矩阵进行编码,得到输入字序列编码表示;
利用解码器,在注意力机制下,对所述输入字序列编码进行解码,得到与所述源端数据相对应的纠错数据;
基于所述纠错数据和目标端数据,确定损失值;
基于所述损失值,对当前模型进行迭代训练,直至达到训练停止条件,得到文本纠错模型。
进一步地,上述所述的文本纠错模型的训练方法中,对所述输入字序列编码进行解码,得到与所述源端数据相对应的纠错数据,包括:
对所述输入字序列编码进行解码,得到纠错后的输出字序列编码表示;
将所述输出字序列编码表示输入编码器的逻辑回归层进行线性变换,输出每个时刻t在目标端数据中的初始概率分布;
根据每个时刻t在目标端数据中的概率分布和获取的复制机制得分,确定每个时刻t在目标端数据中的融合概率分布;
选取最大融合概率对应的字作为时刻t的生成的结果;
基于所有时刻的字,生成与所述源端数据相对应的纠错数据。
进一步地,上述所述的文本纠错模型的训练方法中,所述复制机制得分的获取过程包括:
将所述输出字序列编码表示进行矩阵变换,得到输出向量;
将编码器的隐状态进行矩阵变换,得到键向量和值向量;
根据所述输出向量、所述键向量和所述值向量,确定所述复制机制得分。
本发明还提供一种文本纠错模型的训练装置,包括:
伪标记构造模块,用于基于从预设的多个伪标记规则中随机选取的伪标记规则,对所述无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本;
检测模块,用于检测伪标记构造次数是否达到预设迭代次数;若所述伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据;
训练模块,用于将所述伪标记数据和获取的已标记数据作为源端数据,将所述无标记数据作为目标端数据,并基于指针网络的序列到序列方法训练文本纠错模型。
本发明还提供一种文本纠错模型的训练设备,包括:处理器和存储器;
所述处理器用于执行所述存储器中存储的文本生成程序,以实现如上任一项所述的文本纠错模型的训练方法。
本发明还提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被执行时实现权利要求1-7任一项所述的文本纠错模型的训练方法。
本发明的有益效果是:
通过从预设的多个伪标记规则中随机选取的伪标记规则,对获取的无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本,直到伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据,减少人工标注的工作,并增加了数据量,进而可以将所述伪标记数据和获取的已标记数据作为源端数据,将所述无标记数据作为目标端数据,并基于指针网络的序列到序列方法训练文本纠错模型,提高了文本纠错模型的训练效率,并能够准确判断哪些文本可以被保留、哪些文本需要被修改,大大降低了将正确的文本修改错误的现象。
附图说明
图1为本发明的文本纠错模型的训练方法实施例的流程图;
图2为本发明的文本纠错模型的训练装置实施例的结构示意图;
图3为本发明的文本纠错模型的训练设备实施例的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为本发明的文本纠错模型的训练方法实施例的流程图,如图1所示,本实施例的文本纠错模型的训练方法可以包括如下步骤:
100、基于从预设的多个伪标记规则中随机选取的伪标记规则,对获取的无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本;
在一个具体实现过程中,对于医疗数据等本身数据量较小的文本而言,可以对医疗数据进行数据扩展,从而得到较大数据量的文本。
具体地,可以通过数据抓取、人为编写等方式获取所需数据作为无标记数据,并从预设的多个伪标记规则中随机选取的伪标记规则,对获取的无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本。
在一个具体实现过程中,预设的多个伪标记规则包括:在每条文本中每个词的位置以预设的第一概率随机删除至少一个字;和/或,在每条文本中每个词的位置以预设的第一概率随机插入至少一个字;和/或,将每条文本中每个词的位置按照正态分布添加噪声,并对添加噪声后的每个词重新进行排序;和/或,收集并构建音近字字典,并将每条文本中的每个词按照预设的第三概率替换成音近字;和/或,收集并构建形近字字典,并将每条文本中的每个词按照预设的第四概率替换成形近字;和/或,维持每条文本中每个词。
例如,无标注数据为“脑供血不足”,经过扩展后,可以得到“脑子供血不足”、“脑血不足”、“脑血供不足”、“脑供写不足”、“脑供血不足”等。
在一个具体实现过程中,若预设的多个伪标记规则包括在每条文本中每个词的位置以预设的第一概率随机插入至少一个字,可以根据所述无标记数据中字符频率构建字表,具体地,可以将所述无标记数据中字符频率大于或等于预设阈值的字符作为目标字符;根据所述目标字符构建所述字表。在构建好该字表后,可以从该字表中选取插入的至少一个字。
101、检测伪标记构造次数是否达到预设迭代次数;
102、若所述伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据;
在一个具体实现过程中,可以对获取的无标记数据中每条文本进行多次伪标记构造,并在每次伪标记构造后,记录当前伪标记构造次数,以检测伪标记构造次数是否达到预设迭代次数;若所述伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据。
103、将所述伪标记数据和获取的已标记数据作为源端数据,将所述无标记数据作为目标端数据,并基于指针网络的序列到序列方法训练文本纠错模型。
在一个具体实现过程中,可以根据如下步骤实现步骤103:
(1)对所述源端数据进行字序列划分,并将得到的字序列进行词向量处理,得到所述字序列对应的字矩阵;
在一个具体实现过程中,可以定义x=[x1,x2,...,xn]表示源端数据的字序列,x=[v1,v2,....vi..,vn]表示字序列对应的词矩阵。其中,vi表示第i个字序列的向量。
(2)利用编码器对所述字矩阵进行编码,得到输入字序列编码表示;
在一个具体实现过程中,可以定义selfenc()为基于自注意力机制的编码器计算单元,每个字经过编码器的编码表示可以由以下计算式(1)计算得到:
其中,
(3)利用解码器,在注意力机制下,对所述输入字序列编码进行解码,得到与所述源端数据相对应的纠错数据;
定义y=[y1,y2,...,yn]表示纠错结果的字序列,y=[u1,u2,...ui...,un]表示目标端数据输入的字序列经过字向量预处理得到的矩阵,其中ui表示第i个字的向量。
在一个具体实现过程中,该步骤的实现过程如下:
(31)对所述输入字序列编码进行解码,得到纠错后的输出字序列编码表示;
具体地,可以定义selfdec()为基于自注意力的解码器计算单元,解码器在t时刻的输出字序列编码表示
其中,
(32)将所述输出字序列编码表示输入编码器的逻辑回归层进行线性变换,输出每个时刻t在目标端数据中的初始概率分布;
在一个具体实现过程中,可以将所述输出字序列编码表示输入所述解码器的逻辑回归层进行线性变换,输出每个时刻t在目标端数据中的初始概率分布。
输出字序列编码表示经过线性变换得到变换后的输出字序列编码如下:
经线性变换得到的ot通过softmax来输出每个时刻t在目标端数据中的初始概率分布。
probgen=softmax(w·ot+b);其中,w和b为模型参数,w维度与词表维度相同。
(33)根据每个时刻t在目标端数据中的概率分布和获取的复制机制得分,确定每个时刻t在目标端数据中的融合概率分布;
在一个具体实现过程中,复制机制得分的获取过程包括:
a、将所述输出字序列编码表示进行矩阵变换,得到输出向量;
具体地,可以根据如下计算式(3)将所述输出字序列编码表示进行矩阵变换,得到输出向量qt。
b、将编码器的隐状态进行矩阵变换,得到键向量和值向量;
具体地,可以根据如下计算式(4)将编码器的隐状态进行矩阵变换,得到键向量k和值向量v。
c、根据所述输出向量、所述键向量和所述值向量,确定所述复制机制得分。
在一个具体实现过程中,可以根据如下计算式(5)确定所述复制机制得分:
本实施例中,在得到复制机制得分后,可以根据如下计算式(6),将每个时刻t在目标端数据中的概率分布和获取的复制机制得分进行融合,得到每个时刻t在目标端数据中的融合概率分布。
(34)选取最大融合概率对应的字作为时刻t的生成的结果;
(35)基于所有时刻的字,生成与所述源端数据相对应的纠错数据。
在得到每个时刻t在目标端数据中的融合概率分布后,可以选取最大融合概率对应的字作为时刻t的生成的结果,并基于所有时刻的字,生成与所述源端数据相对应的纠错数据。
(4)基于所述纠错数据和目标端数据,确定损失值;
具体地,将生成的纠错数据与目标端数据进行对比,通过损失函数计算损失值。
(5)基于所述损失值,对当前模型进行迭代训练,直至达到训练停止条件,得到文本纠错模型。
具体地,可以通过预先设定所述损失值的阈值作为需训练停止的条件。例如设定阈值为0.2。本申请对此不作限制。
本实施例的文本纠错模型的训练方法,通过从预设的多个伪标记规则中随机选取的伪标记规则,对获取的无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本,直到伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据,减少人工标注的工作,并增加了数据量,进而可以将所述伪标记数据和获取的已标记数据作为源端数据,将所述无标记数据作为目标端数据,并基于指针网络的序列到序列方法训练文本纠错模型,提高了文本纠错模型的训练效率,并能够准确判断哪些文本可以被保留、哪些文本需要被修改,大大降低了将正确的文本修改错误的现象。
需要说明的是,本发明实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本发明实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成的方法。
图2为本发明的文本纠错模型的训练装置实施例的结构示意图,如图2所示,本实施例的文本纠错模型的训练装置可以包括伪标记构造模块20、检测模块21和训练模块22。
伪标记构造模块20,用于基于从预设的多个伪标记规则中随机选取的伪标记规则,对所述无标记数据中每条文本进行伪标记构造,得到与每条文本对应的伪标记文本;
在一个具体实现过程中,预设的多个伪标记规则包括:在每条文本中每个词的位置以预设的第一概率随机删除至少一个字;和/或,在每条文本中每个词的位置以预设的第一概率随机插入至少一个字;和/或,将每条文本中每个词的位置按照正态分布添加噪声,并对添加噪声后的每个词重新进行排序;和/或,收集并构建音近字字典,并将每条文本中的每个词按照预设的第三概率替换成音近字;和/或,收集并构建形近字字典,并将每条文本中的每个词按照预设的第四概率替换成形近字;和/或,维持每条文本中每个词。
在一个具体实现过程中,若预设的多个伪标记规则包括在每条文本中每个词的位置以预设的第一概率随机插入至少一个字,可以根据所述无标记数据中字符频率构建字表;从所述字表中选取插入的至少一个字。
具体地,构建字表的过程如下:
将所述无标记数据中字符频率大于或等于预设阈值的字符作为目标字符;根据所述目标字符构建所述字表。
检测模块21,用于检测伪标记构造次数是否达到预设迭代次数;若所述伪标记构造次数达到所述预设迭代次数,将所有的伪标记文本作为伪标记数据;
训练模块22,用于将所述伪标记数据和获取的已标记数据作为源端数据,将所述无标记数据作为目标端数据,并基于指针网络的序列到序列方法训练文本纠错模型。
在一个具体实现过程中,训练模块22可以根据如下步骤实现训练文本纠错模型:
(1)对所述源端数据进行字序列划分,并将得到的字序列进行词向量处理,得到所述字序列对应的字矩阵;
在一个具体实现过程中,可以定义x=[x1,x2,...,xn]表示源端数据的字序列,x=[v1,v2,....vi..,vn]表示字序列对应的词矩阵。其中,vi表示第i个字序列的向量。
(2)利用编码器对所述字矩阵进行编码,得到输入字序列编码表示;
在一个具体实现过程中,可以定义selfenc()为基于自注意力机制的编码器计算单元,每个字经过编码器的编码表示可以由以下计算式(1)计算得到:
其中,
(3)利用解码器,在注意力机制下,对所述输入字序列编码进行解码,得到与所述源端数据相对应的纠错数据;
定义y=[y1,y2,...,yn]表示纠错结果的字序列,y=[u1,u2,...ui...,un]表示目标端数据输入的字序列经过字向量预处理得到的矩阵,其中ui表示第i个字的向量。
在一个具体实现过程中,该步骤的实现过程如下:
(31)对所述输入字序列编码进行解码,得到纠错后的输出字序列编码表示;
具体地,可以定义selfdec()为基于自注意力的解码器计算单元,解码器在t时刻的输出字序列编码表示
其中,
(32)将所述输出字序列编码表示输入编码器的逻辑回归层进行线性变换,输出每个时刻t在目标端数据中的初始概率分布;
在一个具体实现过程中,可以将所述输出字序列编码表示输入所述解码器的逻辑回归层进行线性变换,输出每个时刻t在目标端数据中的初始概率分布。
输出字序列编码表示经过线性变换得到变换后的输出字序列编码如下:
经线性变换得到的ot通过softmax来输出每个时刻t在目标端数据中的初始概率分布。
probgen=softmax(w·ot+b);其中,w和b为模型参数,w维度与词表维度相同。
(33)根据每个时刻t在目标端数据中的概率分布和获取的复制机制得分,确定每个时刻t在目标端数据中的融合概率分布;
在一个具体实现过程中,复制机制得分的获取过程包括:
a、将所述输出字序列编码表示进行矩阵变换,得到输出向量;
具体地,可以根据如下计算式(3)将所述输出字序列编码表示进行矩阵变换,得到输出向量qt。
b、将编码器的隐状态进行矩阵变换,得到键向量和值向量;
具体地,可以根据如下计算式(4)将编码器的隐状态进行矩阵变换,得到键向量k和值向量v。
c、根据所述输出向量、所述键向量和所述值向量,确定所述复制机制得分。
在一个具体实现过程中,可以根据如下计算式(5)确定所述复制机制得分:
本实施例中,在得到复制机制得分后,可以根据如下计算式(6),将每个时刻t在目标端数据中的概率分布和获取的复制机制得分进行融合,得到每个时刻t在目标端数据中的融合概率分布。
(34)选取最大融合概率对应的字作为时刻t的生成的结果;
(35)基于所有时刻的字,生成与所述源端数据相对应的纠错数据。
在得到每个时刻t在目标端数据中的融合概率分布后,可以选取最大融合概率对应的字作为时刻t的生成的结果,并基于所有时刻的字,生成与所述源端数据相对应的纠错数据。
(4)基于所述纠错数据和目标端数据,确定损失值;
具体地,将生成的纠错数据与目标端数据进行对比,通过损失函数计算损失值。
(5)基于所述损失值,对当前模型进行迭代训练,直至达到训练停止条件,得到文本纠错模型。
具体地,可以通过预先设定所述损失值的阈值作为需训练停止的条件。例如设定阈值为0.2。本申请对此不作限制。
上述实施例的装置用于实现前述实施例中相应的方法,其具体实现方案可以参见前述实施例记载的方法及方法实施例中的相关说明,并且具有相应的方法实施例的有益效果,在此不再赘述。
图3为本发明的文本纠错模型的训练设备实施例的结构示意图,如图3所示,本实施例的通行设备可以包括:处理器1010和存储器1020。本领域技术人员可知的,该设备还可以包括输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本发明还提供一种存储介质,其存储有一个或者多个程序,所述一个或者多个程序可被执行时实现上述实施例的文本纠错模型的训练方法。
本发明还提供一种文本纠错方法,该方法包括:
将待纠错文本输入上述实施例得到的文本纠错模型,输出所述待纠错文本对应的标准文本。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。