专利详情

标题一种基于指令调优增强的无监督语法纠错方法
[标]当前申请(专利权)人南开大学
申请日2024年5月31日
申请号CN202410696047.X
公开(公告)日2024年8月2日
公开(公告)号CN118278398B
授权日2024年8月2日
法律状态/事件授权发明
专利类型授权
发明人陈晨 | 邓嘉仪 | 韩宁 | 郭天勇 | 侯春燕 | 袁晓洁
受理局中国
当前申请人(专利权)地址300071 天津市南开区卫津路94号 (天津,天津,南开区)
IPC分类号G06F40/253 | G06F40/205 | G06N3/0455 | G06N3/088
国民经济行业分类号-
代理机构天津展誉专利代理有限公司
代理人刘红春
被引用专利数量-
专利价值-

摘要

本发明提供一种基于指令调优增强的无监督语法纠错方法,属于自然语言处理技术领域,具体为:基于开源数据集收集源数据,根据源数据生成包括多个正误语句样本对的纠正数据集;对其中的正确语句及错误语句分别进行标注,获得标注指令和标注提示;构建序列标注模型,将纠正数据集中的错误语句作为输入,将标注指令作为输出,训练序列标注模型并获得预测提示;分别对标注提示及预测提示进行掩码,将经过掩码后的标注提示及预测提示作为输入,训练获得语法纠错模型;通过语法纠错模型对待纠错语句进行纠错,获得纠错结果,本发明提升了模型的语义理解及语法错误定位能力,从而在很大程度上提高了无监督设置下语法纠错方法任务的准确性。

1.一种基于指令调优增强的无监督语法纠错方法,其特征在于,包括:
S1:基于开源数据集收集源数据,根据所述源数据生成包括多个正误语句样本对的纠正数据集;
S2:对正误语句样本对中的正确语句及错误语句进行标注,获得标注指令及标注提示;
S3:构建序列标注模型,将所述纠正数据集中的错误语句作为输入,将所述标注指令作为输出,训练所述序列标注模型并获得预测提示;
S4:分别对所述标注提示及预测提示进行掩码,将经过掩码后的标注提示及经过掩码后的预测提示作为输入,以所述预测提示及所述标注提示建立损失函数,训练获得语法纠错模型;
S5:通过所述语法纠错模型对待纠错语句进行纠错,获得纠错结果。
2.根据权利要求1所述的一种基于指令调优增强的无监督语法纠错方法,其特征在于,步骤S1进一步包括:
S11:收集中文数据集及英文数据集;
S12:将所述中文数据集的语句及所述英文数据集中的语句作为正确语句,获得正语句样本;
S13:预设构造规则,基于所述正语句样本构造获得语法错误的误语句样本;
S14:将正语句样本中的语句与所述误语句样本中的语句分别对应,获得包括多个正误语句样本对的纠正数据集。
3.根据权利要求2所述的一种基于指令调优增强的无监督语法纠错方法,其特征在于,步骤S13中的所述构造规则包括对语句中单词的插入、修改、删除及位置交换。
4.根据权利要求1所述的一种基于指令调优增强的无监督语法纠错方法,其特征在于,步骤S2中,对正误语句样本对中的正确语句及错误语句进行标注通过莱文斯坦工具实现。
5.根据权利要求1所述的一种基于指令调优增强的无监督语法纠错方法,其特征在于,步骤S3中,所述序列标注模型的损失函数的表达式为:

其中,为序列标注模型最终的损失函数,为错误句子中包含的子词数量,为错误句子中包含的子词索引值,为第个子词对应的指令,为权重矩阵的转置矩阵,为编码器的第个输入在编码器中的隐状态向量。
6.根据权利要求1所述的一种基于指令调优增强的无监督语法纠错方法,其特征在于,步骤S3中,所述预测提示的表达式为:

其中,为获得的预测提示,为序列标注模型获得的预测指令,为错误语句,为用于拼接的字词。
7.根据权利要求1所述的一种基于指令调优增强的无监督语法纠错方法,其特征在于,步骤S4中,所述语法纠错模型的损失函数的表达式为:

其中,为语法纠错模型最终的损失函数,为交叉熵平滑损失,为引入的一致性损失,为经过动态掩码后的预测提示,为经过动态掩码后的标注提示,表示以为参数的对数概率预测,表示以为参数的概率预测,表示以为参数的KL散度计算,为平均函数。

技术领域
[0001]本发明涉及自然语言处理技术领域,尤其涉及一种基于指令调优增强的无监督语法纠错方法。
背景技术
[0002]语法错误纠正任务是自动检测和纠正给定文本中包含的语法错误,如时态、介词和错别字词,可应用于社交媒体平台,以关注参与者的内容是否有误,并帮助避免错误信息的扩散。语法错误纠正任务的输入是一个可能包含语法错误的语句,其输出是一个纠正后没有语法错误的句子。
[0003]近年以来,语法错误纠正通常被视为机器翻译问题,它将错误的句子视为源语言,将纠正后的句子视为目标语言,这使得神经机器翻译的序列到序列架构能够被用于语法错误纠正任务,目前,基于Transformer的序列对序列架构是语法错误纠正模型的主流选择。
[0004]然而,基于Transformer的序列到序列的语法错误纠正方法仍然存在一些问题。首先,获取人工标注的高质量错误-正确句子对需要耗费大量的人力和物力,时间成本和人力成本较高,获取困难。而序列到序列模型需要大量的数据。现有的方法基本上都是在已有的少量人工标注的高质量数据集上进行语法纠错任务,而忽略了在无监督数据集上对于语法纠错任务的研究。其次复制现象在自然语言处理任务中广泛存在,而直接复制正确的子词影响了错误子词纠正过程的学习。然而由于在语法纠错任务中,其语法错误在错误句子中占比较低的这一特点,这将影响语法纠错任务的效果,易导致模型直接学习从输入到输出的简单复制映射,而不能正确的来理解整个句子的语义,并且模型中缺乏对错误位置信息的融入,从而容易导致模型对于非错误部分进行修改及过度纠错。
发明内容
[0005]本发明旨在至少解决相关技术中存在的技术问题之一。为此,本发明提供一种基于指令调优增强的无监督语法纠错方法。
[0006]本发明提供一种基于指令调优增强的无监督语法纠错方法,包括:
[0007]S1:基于开源数据集收集源数据,根据所述源数据生成包括多个正误语句样本对的纠正数据集;
[0008]S2:对所述正误语句样本对中的正确语句及错误语句进行标注,获得标注指令及标注提示;
[0009]S3:构建序列标注模型,将所述纠正数据集中的错误语句作为输入,将所述标注指令作为输出,训练所述序列标注模型并获得预测提示;
[0010]S4:分别对所述标注提示及预测提示进行掩码,将经过掩码后的标注提示及经过掩码后的预测提示作为输入,以所述预测提示及所述标注提示建立损失函数,训练获得语法纠错模型;
[0011]S5:通过所述语法纠错模型对待纠错语句进行纠错,获得纠错结果。
[0012]根据本发明提供的一种基于指令调优增强的无监督语法纠错方法,步骤S1进一步包括:
[0013]S11:收集中文数据集及英文数据集;
[0014]S12:将所述中文数据集的语句及所述英文数据集中的语句作为正确语句,获得正语句样本;
[0015]S13:预设构造规则,基于所述正语句样本构造获得语法错误的误语句样本;
[0016]S14:将正语句样本中的语句与所述误语句样本中的语句分别对应,获得包括多个正误语句样本对的纠正数据集。
[0017]根据本发明提供的一种基于指令调优增强的无监督语法纠错方法,步骤S13中的所述构造规则包括对语句中单词的插入、修改、删除及位置交换。
[0018]根据本发明提供的一种基于指令调优增强的无监督语法纠错方法,步骤S2中,对正误语句样本对中的正确语句及错误语句进行标注通过莱文斯坦工具实现。
[0019]根据本发明提供的一种基于指令调优增强的无监督语法纠错方法,步骤S3中,所述序列标注模型的损失函数的表达式为:
[0020]
[0021]其中,为序列标注模型最终的损失函数,为错误句子中包含的子词数量,为错误句子中包含的子词索引值,为第个子词对应的指令,为权重矩阵的转置矩阵,为第个输入在编码器中的隐状态向量。
[0022]根据本发明提供的一种基于指令调优增强的无监督语法纠错方法,步骤S3中,所述预测提示的表达式为:
[0023]
[0024]其中,为获得的预测提示,为序列标注模型获得的预测指令,为错误语句,为用于拼接的字词。
[0025]根据本发明提供的一种基于指令调优增强的无监督语法纠错方法,步骤S4中,所述语法纠错模型的损失函数的表达式为:
[0026]
[0027]
[0028]
[0029]
[0030]其中,为语法纠错模型最终的损失函数,为交叉熵平滑损失,为引入的一致性损失,为经过动态掩码后的预测提示,为经过动态掩码后的标注提示,表示以为参数的对数概率预测,表示以为参数的概率预测,表示以为参数的KL散度计算,为平均函数。
[0031]本发明提供的一种基于指令调优增强的无监督语法纠错方法,以深度神经网络为框架,设计有效的指令格式和两阶段的训练步骤,将第一阶段的语法错误信息以指令的形式融入到语法纠错任务中,通过将指令调优技术与语法错误检测技术相结合运用到语法纠错任务中,提高了语法错误纠正的效果。
[0032]本发明提供的一种基于指令调优增强的无监督语法纠错方法,将语法纠错任务分为两阶段:语法错误检测和语法错误纠正。在语法错误检测阶段利用序列标注模型,依照预先定义的规则生成指令,在语法错误纠正阶段设计指令结合错误句子的动态掩码规则,定义一致性损失函数来缩小预测提示和黄金标注提示之间的差距,从而更合理有效地使用语法错误检测信息指导语法错误纠正。
[0033]本发明还有效地设计指令和动态掩码策略以及一致性损失函数,利用语法错误检测信息指导语法错误纠正,并通过动态掩码策略削弱了序列到序列模型中的复制现象,提升了模型对于语义理解的能力,从而在很大程度上提高了无监督设置下语法纠错方法任务的准确性。
[0034]本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
[0035]为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036]图1是本发明提供的一种基于指令调优增强的无监督语法纠错方法流程图。
具体实施方式
[0037]为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。以下实施例用于说明本发明,但不能用来限制本发明的范围。
[0038]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0039]下面结合图1描述本发明的实施例。
[0040]本发明提供一种基于指令调优增强的无监督语法纠错方法,包括:
[0041]S1:基于开源数据集收集源数据,根据所述源数据生成包括多个正误语句样本对的纠正数据集;
[0042]本阶段中获取的数据基于规则自动生成的无监督数据,数据中的每一个样本包括一个有语法错误的句子和一个纠正之后的句子,即(错误语句,正确语句)语句对。
[0043]其中,步骤S1进一步包括:
[0044]S11:收集中文数据集及英文数据集;
[0045]S12:将所述中文数据集的语句及所述英文数据集中的语句作为正确语句,获得正语句样本;
[0046]S13:预设构造规则,基于所述正语句样本构造获得语法错误的误语句样本;
[0047]进一步的,对于每一条One-billion-word语料库中的英文句子,都视其为正确句子,分别以的概率在中进行选择,选择出每一条句子包含错误的个数;然后根据选择出的每一条句子包含的错误个数,再分别以的概率在添加错误、动词错误、替换错误和删除错误中进行选择,直到该句子中包含的错误个数等于。
[0048]其中,步骤S13中的所述构造规则包括对语句中单词的插入、修改、删除及位置交换;
[0049]进一步的,英文无监督数据构造规则如表1所示,而中文无监督数据构造规则如表2所示。
[0050]表1 英文无监督数据构造规则
[0051]
[0052]表2 中文无监督数据构造规则
[0053]
[0054]S14:将正语句样本中的语句与所述误语句样本中的语句分别对应,获得包括多个正误语句样本对的纠正数据集。
[0055]具体来讲,首先是获取自动生成数据。
[0056]我们首先获取自动生成的语法错误纠正数据集,收集One Billion Word英文数据集和translationzh29中文数据集。选取其中的一个子集进行样本制作,对其中每个句子进行单词的插入、删除、修改、位置交换等操作来构建含有语法错误的语句,并称操作后的语句为含有语法错误的语句,操作前的语句为纠正后没有语法错误的语句,数据集中的每一个样本包含了一个有语法错误的句子和由人工修改的纠正之后的句子,中文共计约3,400,000个样本,英文共计约9,000,000个样本。
[0057]另外在上述阶段后,我们还需要获取人工标注数据。
[0058]收集含有人工标注的语法错误纠正数据集作为验证集和测试集。英文数据集采用BEA-2019 Dev数据集作为验证集,中文数据集采用MuCGEC Dev作为验证集,英文采用CoNLL-2014 Test、BEA-2019 Test作为测试集,中文采用MuCGEC Test和NLPCC-2018 Test作为测试集。
[0059]S2:对所述正误语句样本对中的正确语句及错误语句分别进行标注,获得标注指令及标注提示;
[0060]本阶段中,我们使用莱文斯坦距离将错误语句根据预先定义的子指令,在子词级别上划分子指令并由子指令构成全句子的指令。
[0061]其中,步骤S2中,对正误语句样本对中的正确语句及错误语句进行标注通过莱文斯坦工具实现。
[0062]具体来讲,对于正确语句,我们使用python-Levenshtein工具解析正确语句我们通过对错误语句和正确语句进行比较,在子词维度上设置指令规则,来判定该子词的操作,对于正确的子词保持不变,对于错误的子词进行修改,指令规则如表3所示。
[0063]表3 指令标注策略
[0064]
[0065]S3:构建序列标注模型,将所述纠正数据集中的错误语句作为输入,将所述标注指令作为输出,训练所述序列标注模型并获得预测提示;
[0066]在步骤S2阶段中我们获得了根据预先制定的指令规则生成的黄金标注指令后,采用错误语句作为序列标注模型的输入,指令作为序列标注模型的输出来训练序列标注模型,并得到预测指令。
[0067]其中序列标注模型编码器的具体运算过程为:给定一条长度为的错误语句,每个单词被映射到一个连续的词嵌入,然后可以获得错误语句的嵌入,此外,为了利用错误语句中的词序,加入位置编码:
[0068]
[0069]其中,为错误语句中第个词的位置编码,将)作为编码器底部的输入,通常来说,编码器是由多个相同层的构成,每个层由多头自注意力机制、残差连接、正则化层和全连接前馈网络组成,每一层经过如下计算:
[0070]
[0071]
[0072]
[0073]
[0074]其中,上一编码器层的输出作为第层输入,表示该层多头自注意力机制子层输出,表示该层第一个正则化层输出,表示该层前馈神经网络子层输出,表示第层编码器层的输出,表示多头注意力机制,表示层归一化,表示前馈网络。
[0075]其中,步骤S3中,所述序列标注模型的损失函数的表达式为:
[0076]
[0077]其中,为序列标注模型最终的损失函数,为错误句子中包含的子词数量,为错误句子中包含的子词索引值,为第个子词对应的指令,为权重矩阵的转置矩阵,为第个输入在编码器中的隐状态向量。
[0078]其中,步骤S3中,所述预测提示的表达式为:
[0079]
[0080]其中,为获得的预测提示,为序列标注模型获得的预测指令,为错误语句,为用于拼接的字词。
[0081]进一步的,对应步骤S2中的标注指令及标注提示,而本阶段步骤S3中训练序列标注模型获得的也为预测指令及预测提示,而对于标注提示及预测提示的获取方法,均为上述公式中提及的方法,即预测提示由预测指令和错误语句构成,标注提示由标注指令和错误语句构成。
[0082]S4:分别对所述标注提示及错误语句进行掩码,将经过掩码后的标注提示及错误语句作为输入,以所述预测提示及所述标注提示建立损失函数,训练获得语法纠错模型;
[0083]经过上述步骤后,我们在步骤S4中基于Transformer的深度神经网络模型设计了序列到序列框架,主要分为语法纠错模型编码器、语法纠错模型解码器、动态掩码策略和一致性损失函数四个部分。
[0084]对于其中的动态掩码策略的具体运算过程为:
[0085]给定一条长度为的错误句子,其对应的指令为,在错误句子上进行子词级别的掩码策略。定义一个掩码概率,在掩码概率的基础上,选择80%的子词或替换为掩码,10%的子词随机替换为词表中的词,10%的子词保持不变。在训练过程中,每一个训练轮次均对错误句子和指令进行一次随机掩码。
[0086]由上述步骤可以获得,为经过掩码策略之后的错误句子,则是经过掩码策略之后的指令,经过掩码策略后的句子,其被替换为掩码的位置对应于指令相应位置将被替换为子指令;如果是替换为词表中的词,则对应于指令相应位置将被替换为子指令,通过子词将指令和错误句子进行拼接,成为语法纠错模型的输入。
[0087]其中,步骤S4中,所述语法纠错模型的损失函数的表达式为:
[0088]
[0089]
[0090]
[0091]
[0092]其中,为语法纠错模型最终的损失函数,为交叉熵平滑损失,为引入的一致性损失,为经过动态掩码后的预测提示,为经过动态掩码后的标注提示,表示以为参数的对数概率预测,表示以为参数的概率预测,表示以为参数的KL散度计算,为平均函数。
[0093]进一步的,语法纠错模型编码器具体的运算过程即为序列标注模型编码器的具体运算过程。
[0094]而对于语法纠错模型的解码器,具体运算过程如下:
[0095]给定一条长度为的正确语句,每个单词被映射到一个连续的词嵌入,然后可以获得正确语句嵌入,同样,为了利用正确语句中的词序,加入位置编码:
[0096]
[0097]其中,为错误语句中第个词的位置编码,将)作为解码器底部的输入,通常来说,解码器是由多个相同层的构成,每个层由多头交互注意力层、多头自注意力层残差连接层、正则化层和全连接前馈网络组成,每一层经过如下计算:
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]其中,表示最后一层编码器输出,上一解码器层的输出作为第k层输入,表示该层多头自注意力机制子层输出,表示该层第一个正则化层输出,表示多头交互注意力机制子层输出,表示该层第二个正则化层输出,表示该层前馈神经网络子层输出表示第层编码器层的输出。解码器最后一层的输出用于计算概率分布,即上述的语法纠错模型中的一致性损失函数中的。
[0105]S5:通过所述语法纠错模型对待纠错语句进行纠错,获得纠错结果。
[0106]在获得语法纠错模型时,语法纠错模型编码器的参数由BART base编码器的参数进行初始化,而语法纠错模型解码器的参数由BART base的解码器初始化,而后,在大规模无监督合成数据中进行训练。
[0107]下面对本发明提供的一种基于指令调优增强的无监督语法纠错方法在一些具体实施例中的应用及有益效果进行说明。
[0108]本方法进行语法错误检测的主要指标是F1,进行语法错误纠正的主要指标是精确度(P)、召回率(R)、F0.5,主要指标为F0.5,实验结果表明,本发明在语法错误纠正的性能方面领先于其他方法。本方法采用英文数据集CoNLL-2014 Test和BEA-2019 Test进行测试,英文测试数据集中的样本均来源于现实英语初学者的写作资料,中文采用NLPCC-2018Test和MuCGEC Test数据集进行测试,中文测试数据集样本均来源于现实中文二语学习资料。
[0109]具体的实验结果为:语法错误纠正中文数据集实验结果如表4所示,语法错误纠正英文数据集实验结果如表5所示,语法错误检测实验结果如表6所示,语法错误纠错的消融实验结果如表7所示,语法错误纠错的掩码比例对实验效果影响的消融实验结果如表8所示。
[0110]表4 语法错误纠正中文数据集实验结果
[0111]
[0112]表5 语法错误纠正英文数据集实验结果
[0113]
[0114]表6 语法错误检测实验结果
[0115]
[0116]表7 语法错误纠错的消融实验结果
[0117]
[0118]表8 语法错误纠错的掩码比例对实验效果影响的消融实验结果
[0119]
[0120]如表4及表5所示,与其他方法相比,本方法在无监督设置下语法错误纠正任务的性能取得了较大地提高,拥有最高的F0.5指标。本方法拥有较高的精确度和稍低的召回率,这是由于使用基于指令微调掩码的两阶段方法能够更为精确地识别语句中的语法错误,更为保守但更准确地对语句实施修改。
[0121]通过将本方法与其他无监督设置下的语法纠错任务方法相比,可以发现本方法的效果优于其他方法,本发明表现较好的原因有两个:由语法错误检测任务的生成的指令来指导语法错误纠正任务,同时已有研究表明使用掩码策略对于削弱模型复制现象,增强模型对于语义的理解有帮助。
[0122]为探究设计并完整使用两阶段训练方法、采用指令微调、一致性损失和动态掩码策略的重要性,进行消融实验。表7展示了指令的效果、一致性损失的效果和掩码策略的效果,“√”表示运用掩码策略,“×”表示不运用掩码策略,“Gold”表示黄金标注提示,“Pred”表示预测提示,“+”表示Transformer-based模型采用修改后的一致性损失函数,“∪”表示Transformer-based模型采用原有的交叉熵损失函数。
[0123]表6的结果说明由于第一阶段语法检测模型生成的低质量指令,从而在第二阶段引入一致性损失的必要性,表7可以清楚地发现缺少某一个模块对模型的性能都有显著的影响,表明了各个模块的重要性。
[0124]为探究动态掩码策略中,掩码比例对于实验结果的影响,进行了对比实验。表8展示了使用不同掩码比例的对比实验结果。实验结果表明掩码概率在一定范围内能提升模型的效果,这是因为:较小的掩码概率不能使模型很好的理解句子的语义,复制现象的影响较大,而较大的掩码概率则过多的遮掩了句子的语义,丧失了大部分语义,从而降低了效果,但是无论掩码的大小,其效果均比没有掩码的情况要好或者相差不大,证明了我们引入掩码策略的有效性。
[0125]综上所述,本方法能够很好的在无监督设置下,以将语法纠错任务划为语法检测任务和语法纠错任务的方式,通过设计指令格式、动态掩码策略和一致性损失以指令的方式使用语法错误检测阶段的信息指导语法错误纠正,从而更好地在无监督设置下完成语法错误纠正任务。
[0126]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。