本公开涉及自然语言处理,适用于中文场景中的文本编辑领域。具体涉及一种基于预训练语言模型构建的双模块中文拼写纠错方法。
背景技术:
1、此部分的陈述仅仅提供与本公开有关的背景技术信息,并且这些陈述可能构成现有技术。在实现本发明过程中,发明人发现现有技术中至少存在如下问题。
2、中文拼写纠错是一种应用场景丰富的自然语言处理任务。高效的中文拼写纠错模型可以有效提升文本编辑效率。在自动语音识别和光学字符识别等文本识别任务中,中文拼写纠错模型能够对识别出的文本进行二次处理,进一步提升识别准确率。
3、中文拼写纠错模型有多种类型。基于统计语言模型和循环神经网络的解决方案,由于这些结构本身的语义理解能力有限,无法获得较高的纠错准确率。相比之下,预训练模型通过更丰富的半监督训练,具备更强的语义理解能力。然而,以往的解决方案忽视了模型本身的语义理解能力,选择添加大量的辅助模块以实现更准确的纠正。一些研究工作选择添加额外的拼写错误检测模块,用于确认拼写错误的位置;另一些工作则添加了额外的字符读音编码器和字符形状编码器,以缩小候选字符的范围。如申请号202211740208.8专利名称为“一种融合局部语义特征和全局语义特征的中文拼写纠错方法”,通过添加分句模块、管道式的纠错模型、端到端的纠错模型、误纠过滤模块、模型融合模块得到最终输出的正确句子和正确文档。
4、然而,这些额外模块的加入增加了模型的参数量,训练和使用时需要更多计算资源。此外,字符的读音和形状通常需要额外的信息来补充,这也会进一步降低模型的响应效率。
技术实现思路
1、针对上述问题,本发明的目的在于解决现有技术中的一部分问题,或至少缓解这些问题。
2、一种基于预训练语言模型构建的双模块中文拼写纠错方法,包括如下步骤:
3、构建模型:使用由多层transformer编码器堆叠而成的预训练语言模型的内部结构构建包括检测模块和纠错模块在内的双模块中文拼写纠错模型;其中,所述检测模块由前部若干层transformer编码器构建的检测编码器辅以检测分类器构成;所述纠错模块由剩余的transformer编码器构建的纠错编码器辅以纠错分类器构成;
4、将待纠错文本输入模型进行词嵌入,获得文本的向量表示;
5、使用检测编码器将所述文本的向量表示进行编码,获取检测任务相关的检测隐藏状态;
6、使用检测分类器基于所述检测隐藏状态计算检测结果;
7、基于所述检测结果计算检测模块的损失值lossd;
8、将所述文本的向量表示和检测隐藏状态进行融合和归一化处理,获得纠错嵌入向量;
9、使用纠错编码器对所述纠错嵌入向量进行编码,获取纠错任务相关的纠错隐藏状态;
10、将所述纠错隐藏状态和所述检测隐藏状态进行融合和归一化处理,获取最终隐藏状态;
11、使用纠错分类器基于所述最终隐藏状态计算纠错策略的分数;选取得分最高的纠错策略对所述待纠错文本进行修改;
12、基于所述纠错策略的分数计算纠错模块的损失值lossc;
13、将检测模块的损失值lossd和纠错模块的损失值lossc按比例加和后作为全局损失loss,并通过最小化全局损失来优化所述双模块中文拼写纠错模型,以实现模型训练;
14、加载训练后的模型,将待纠错文本输入模型中,以获得纠错后的文本。
15、进一步的,加载训练后的模型,将待纠错文本输入模型中,以获得纠错后的文本,包括如下步骤:
16、将待纠错文本输入训练后的模型,获取待纠错文本的检测隐藏状态和纠错隐藏状态;
17、将待纠错文本的纠错隐藏状态和检测隐藏状态进行融合和归一化处理,获取待纠错文本的最终隐藏状态;
18、基于待纠错文本的最终隐藏状态计算纠错策略的分数,选取得分最高的纠错策略对所述待纠错文本进行修改,并输出纠错后的文本。
19、所述检测结果为所述待纠错文本中每个字符是拼写错误的概率,即检测结果l=(l1,l2,…,ln);其计算过程如下:
20、l=sigmoid(hd×wd+bd)
21、其中,是检测隐藏状态;wd和bd分别是检测分类器的权重和偏向;li∈[0,1],表示所述待纠错文本中第i个字符是错别字的概率的预测值。
22、检测模块的损失值lossd为检测模块在错别字检测任务中的损失值;其计算过程如下:
23、
24、其中,l′i∈{0,1},表示检测结果的目标值;n为待纠错文本长度。
25、所述文本的向量表示包含抽象的文本上下文和语义信息;所述检测隐藏状态包含抽象的拼写错误检测结果;所述纠错隐藏状态包含抽象的正确字的特征。
26、所述纠错策略的分数,其分数矩阵其中n为待纠错文本长度,m为字典中的字符数;所述分数矩阵s的计算过程如下:
27、s=softmax(wc×hf+bc)
28、其中,wc和bc分别是纠错分类器的权重和偏向;hf是最终隐藏状态。
29、所述纠错模块的损失值lossc的计算过程如下:
30、
31、其中,s′ij表示纠错策略的目标得分;sij是为纠错策略的分数。
32、所述全局损失loss的计算过程如下:
33、loss=lossc×θ+lossd×(1-θ)
34、其中,θ∈(0,1)表示检测模块和纠错模块的两种损失的权重。
35、可选的,所述预训练语言模型为预训练语言模型bert(bidirectional encoderrepresentation from transformers,一种预训练的语言模型);使用bert前两层transformer编码器构成检测编码器,并辅以检测分类器构成检测模块;使用剩余十层transformer编码器构成纠错编码器,并辅以纠错分类器构成纠错模块。
36、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的基于预训练语言模型构建的双模块中文拼写纠错方法的步骤。
37、本发明具有如下有益效果:
38、1、本申请的模型结构相对简单,仅使用了预训练模型bert的内部结构,因此参数量几乎没有变化,具备更快的处理速度和更小的计算资源开销;
39、2、本申请的训练要求低。首先,构建的模型充分使用了预训练模型的语言理解能力,此外特殊的结构设计能够保证模型能够快速适应中文拼写纠错任务。仅需要使用少量的中文拼写纠错样本对模型进行微调就可以取得十分出色的纠错表现。
1.一种基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,加载训练后的模型,将待纠错文本输入模型中,以获得纠错后的文本,包括如下步骤:
3.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,所述检测结果为所述待纠错文本中每个字符是拼写错误的概率,即检测结果l=(l1,l2,..,ln);其计算过程如下:
4.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,检测模块的损失值lossd为检测模块在错别字检测任务中的损失值;其计算过程如下:
5.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,所述文本的向量表示包含抽象的文本上下文和语义信息;所述检测隐藏状态包含抽象的拼写错误检测结果;所述纠错隐藏状态包含抽象的正确字的特征。
6.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,所述纠错策略的分数,其分数矩阵其中n为待纠错文本长度,m为字典中的字符数;所述分数矩阵s的计算过程如下:
7.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,所述纠错模块的损失值lossc的计算过程如下:
8.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,所述全局损失loss的计算过程如下:
9.根据权利要求1所述的基于预训练语言模型构建的双模块中文拼写纠错方法,其特征在于,所述预训练语言模型为预训练语言模型bert(bidirectionalencoderrepresentation from transformers,一种预训练的语言模型);使用bert前两层transformer编码器构成检测编码器,并辅以检测分类器构成检测模块;使用剩余十层transformer编码器构成纠错编码器,并辅以纠错分类器构成纠错模块。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的基于预训练语言模型构建的双模块中文拼写纠错方法的步骤。