1.本发明涉及自然语言文本纠错技术领域,尤其涉及一种针对中文语料拼写错误的智能纠错系统。
背景技术:
2.文本纠错,是使用自然语言处理技术,检测一段文字是否存在错别字、以及将错别字纠正过来的技术,一般用于文本预处理阶段,在早期,该领域主要基于专家规则(pattern)进行错误识别和校准,但该方法费时费力,覆盖的范围和准确率都非常有限。近年来,随着智能客服、聊天机器人等语音识别技术的落地,基于数据驱动方法进一步提升文本纠错系统的综合性能,具有广阔的市场前景和应用价值。
3.作为一项重要而又具有挑战性的任务,一个工作良好的拼写错误纠正系统本质上需要人类水平的语言理解能力。当前解决该任务的主流方法是使用基于变换器的双向编码器表示技术(bidirectional encoder representations from transformers,bert)从候选字符列表中选择一个字符,在句子的每个位置进行纠正(包括不纠正)。然而,由于bert使用掩码预训练方式进行语言建模,其没有足够的能力显式检测每个位置是否有错误,这类方法的准确性可能是次优的。因此,目前亟需一种具备高灵活性、高敏捷性和高准确性的文本纠错系统来解决以上问题。
技术实现要素:
4.为了克服目前文本分类仪的以上不足,本发明的目的在于提供一种中文语料拼写错误的二阶段智能纠错系统,分别使用文本错误识别模块和文本错误校正模块实现错误字符的识别和校准,前者通过软掩码技术与后者相连。且识别精度高、鲁棒性好的智能纠错系统。
5.本发明解决其技术问题所采用的技术方案是:一种针对中文语料拼写错误的智能纠错系统,由文本特征提取模块、文本错误识别模块、文本错误校正模块三个模块构成。
6.1)文本特征提取模块:基于预训练语言模型,获取语料的动态编码;
7.2)文本错误识别模块:基于序列语言模型,预测文本中每个字符出现错误的概率;
8.3)文本错误校正模块:基于文本错误识别模块输出的错误概率进行掩码,并使用语言模型预测正确字符。
9.进一步地,所述文本特征提取模块通过以下步骤,将文本数据转为语料动态编码:
10.1)尾部补零或截断,以固定每段语料的长度,将处理后的语料记为x,语料长度记作seq;
11.2)构建字符级字典d,将所述字典大小记作n,将文本数据中的每个字符按其在d中的顺序做独热编码,将编码结果记作o∈r
seq,n
;
12.3)将独热编码结果送入预训练好的语言模型中,得到包含语义信息的高层字符表示,记作e∈r
seq,d
;
13.进一步地,所述文本错误识别模块通过以下步骤,基于文本特征输出每个字符的出错概率:
14.1)构建网络静态计算图;
15.2)模型训练:将提取出的文本特征输入所述网络静态计算图中,根据网络输出结果和标签信息(每个字符是否出现拼写错误)计算损失函数及其对各层可学习参数的导数,并根据计算得到的导数更新各层参数;
16.3)实时评价和线上部署:每次参数更新后在验证集上解算模型的性能度量参数,得到最终的分类器并部署上线。
17.根据所述文本错误识别模块,针对其中所述网络静态计算图,本发明进一步给出一种基于双向长短期记忆模块(bi-lstm)的实现方法,其中上标右箭头的变量代表网络从先到后遍历文本特征,左箭头的变量代表网络从后到先遍历文本特征。在所述序列模型中的每个时间步t,先结合输入信息e
《t》
和前一时间步的隐含层状态h
《t-1》
,用tanh函数得到当前步记忆细胞状态更新值的候选值;
[0018][0019]
其中,h
《t-1》
是前一时间步的隐含层状态,e
《t》
是当前步的输入信息,wc是线性变换系数,bc是偏置项,上标箭头代表网络遍历方向。接着,定义门单元:更新门γu、遗忘门γf、输出门γo。这些门单元具有类似的定义方式,且都使用sigmoid函数做输出映射。
[0020][0021][0022][0023]
其中wu,wf,wo分别是更新门、遗忘门、输出门的线性变换系数,bu,bf,bo分别是更新门、遗忘门、输出门的偏置项,上标箭头代表网络遍历方向。σ(
·
)表示sigmoid函数,它将门单元的输出值控制0到1,在大多数情况下总是非常接近0或1。对于上一时间步的记忆细胞状态c
《t-1》
,遗忘门γf决定是不是要遗忘它;对于当前步记忆细胞状态的更新值更新门γu决定是否要真的更新它;接着,将更新后的细胞状态c
《t》
通过输出门γo,可得到当前步隐含层状态a
《t》
。
[0024][0025][0026]
借助双向序列模型对时序依赖强大的建模能力,能有效提取文本数据中的语义特征;将各字符双向特征拼接起来,得到最终的特征表示h
《t》
:
[0027][0028]
最后,通过稠密连接层实现给定字符的含错概率预估:
[0029]
p
《t》
=p(error
《t》
=1∣x)=σ(weh
《t》
+be)
[0030]
其中p
《t》
是第t个字符含错的概率,we,be是线性判别系数,σ是sigmoid函数。
[0031]
根据所述文本错误识别模块,针对其中所述模型训练,本发明给出一种使用基于二元交叉熵(binary crossentropy,bce)损失的训练方法:
[0032][0033]
其中是模型预测出的给定字符的含错概率,是给定字符的实际是否含错标签,m是输入语料数量,seq是输入语料长度。
[0034]
进一步地,所述文本错误校正模块通过以下步骤,基于文本特征和出错概率,输出每个字符的校正表示:
[0035]
1)构建软掩模输入序列;
[0036]
2)构建网络静态计算图;
[0037]
3)模型训练:将软掩模输入序列输入所述网络静态计算图中,根据网络输出结果和标签信息(正确字符的嵌入表示)计算所述损失函数对各层可学习参数的导数,并根据计算得到的导数更新各层参数;
[0038]
4)实时评价和线上部署:每次参数更新后在验证集上解算模型的性能度量参数,得到最终的分类器并部署上线。
[0039]
根据所述文本错误校正模块,针对其中所述软掩模输入序列,预先给定任意掩模序列为字符含错概率预估序列构造软掩模输入序列为:
[0040]emask,i
=pi*e
′i+(1-pi)*ei[0041]
其中,e
mask,i
是生成的第i个字符的软掩膜,ei是所述文本特征提取模块输出的第i个字符的特征嵌入。基于文本错误识别模块输出的错误概率进行掩码。如果模型推断该字符出错的概率很高,得到的软掩模输入e
mask,i
接近掩模的嵌入e
′i,否则它接近于输入嵌入ei。
[0042]
根据所述文本错误校正模块,针对其中所述网络静态计算图,本发明进一步给出一种基于bert的实现方法。所述bert由12个相同的块组成,以整个e
mask
序列作为输入。每个block包含一个多头部的self-attention操作:
[0043] multihead(x)=concat(head1;
…
, headh)wc[0044]
其中,wc是待学习参数,每一个head由如下自注意力方式实现:
[0045][0046]
其中,是第j个注意力头的待学习参数。随后是一个前馈网络,将各头聚合信息进行再次变换。进一步地,将所述bert最后一层的隐状态序列表示为t=1,2,...,seq,则对于第t个字符,误差修正的概率定义为:
[0047][0048]
其中为候选列表中第k个字符作为输入序列中第t个字符进行修正的条件
概率。
[0049]
根据所述文本错误识别模块,针对其中所述模型训练,训练数据由原始含错文本序列和对应的无错文本序列组成。创建这种数据的方法是对无错文本随机扰动,使其生成不同的含错序列,然后将其输入模型中进行有监督校准。学习目标为:
[0050][0051]
其中,m是输入语料数量,seq是输入语料长度,k是候选词典大小,是在输入的第i段文本中,第t个字符可以被候选词典中的第k项校正的概率,是模型预测的概率。
[0052]
与现有技术相比,本发明的技术构思与益处在于:
[0053]
1)本发明针对文本纠错的任务特点,先使用序列语言模型预测每个字符的出错概率,再使用bert预测每个候选集中的字符修正错误字符的概率,可以充分利用深度学习技术强大的学习能力以及序列模型对语义的抽取能力,快速、智能地抽取出错误字符的结构表示,整个过程无需人工参与完成,
[0054]
2)本发明进一步在深度学习网络模型的基础上,充分利用业界先进的预训练语言模型进行微调,能够得到更好的模型性能和更合理的训练开销;
[0055]
3)本发明不需要标记数据即可实现模型训练,可以有效降低数据标注的人工成本,且对具体应用场景没有较高要求。
附图说明
[0056]
图1是本实施例针对中文语料拼写错误智能纠错的实现流程示意图。
具体实施方式
[0057]
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
[0058]
如图1所示,一种针对中文语料拼写错误的智能纠错系统,由文本特征提取模块1、文本错误识别模块2、文本错误校正模块3三个模块构成。
[0059]
1)文本特征提取模块1:基于预训练语言模型,获取语料的动态编码;
[0060]
2)文本错误识别模块2:基于序列语言模型,预测文本中每个字符出现错误的概率;
[0061]
3)文本错误校正模块3:基于文本错误识别模块输出的错误概率进行掩码,并使用语言模型预测正确字符。
[0062]
进一步地,所述文本特征提取模块1通过以下步骤,将文本数据转为语料动态编码:
[0063]
1)尾部补零或截断,以固定每段语料的长度,将处理后的语料记为x,语料长度记作seq;
[0064]
2)构建字符级字典d,将所述字典大小记作n,将文本数据中的每个字符按其在d中的顺序做独热编码,将编码结果记作o∈r
seq,n
;
[0065]
3)将独热编码结果送入预训练好的语言模型中,得到包含语义信息的高层字符表示,记作e∈r
seq,d
;
[0066]
进一步地,所述文本错误识别模块2通过以下步骤,基于文本特征输出每个字符的出错概率:
[0067]
1)构建网络静态计算图;
[0068]
2)模型训练:将提取出的文本特征输入所述网络静态计算图中,根据网络输出结果和标签信息(每个字符是否出现拼写错误)计算损失函数及其对各层可学习参数的导数,并根据计算得到的导数更新各层参数;
[0069]
3)实时评价和线上部署:每次参数更新后在验证集上解算模型的性能度量参数,得到最终的分类器并部署上线。
[0070]
根据所述文本错误识别模块2,针对其中所述网络静态计算图,本发明进一步给出一种基于双向长短期记忆模块(bi-lstm)的实现方法,其中上标右箭头的变量代表网络从先到后遍历文本特征,左箭头的变量代表网络从后到先遍历文本特征。在所述序列模型中的每个时间步t,先结合输入信息e
《t》
和前一时间步的隐含层状态h
《t-1》
,用tanh函数得到当前步记忆细胞状态更新值的候选值;
[0071][0072]
其中,h
《t-1》
是前一时间步的隐含层状态,e
《t》
是当前步的输入信息,wc是线性变换系数,bc是偏置项,上标箭头代表网络遍历方向。接着,定义门单元:更新门γu、遗忘门γf、输出门γo。这些门单元具有类似的定义方式,且都使用sigmoid函数做输出映射。
[0073][0074][0075][0076]
其中wu,wf,wo分别是更新门、遗忘门、输出门的线性变换系数,bu,bf,bo分别是更新门、遗忘门、输出门的偏置项,上标箭头代表网络遍历方向。σ(
·
)表示sigmoid函数,它将门单元的输出值控制0到1,在大多数情况下总是非常接近0或1。对于上一时间步的记忆细胞状态c
《t-1》
,遗忘门γf决定是不是要遗忘它;对于当前步记忆细胞状态的更新值更新门γu决定是否要真的更新它;接着,将更新后的细胞状态c
《t》
通过输出门γo,可得到当前步隐含层状态a
《t》
。
[0077][0078][0079]
借助双向序列模型对时序依赖强大的建模能力,能有效提取文本数据中的语义特征;将各字符双向特征拼接起来,得到最终的特征表示h
《t》
:
[0080][0081]
最后,通过稠密连接层实现给定字符的含错概率预估:
[0082][0083]
其中p
《t》
是第t个字符含错的概率,we,be是线性判别系数,σ是sigmoid函数。
[0084]
根据所述文本错误识别模块2,针对其中所述模型训练,本发明给出一种使用基于二元交叉熵(binary crossentropy,bce)损失的训练方法:
[0085][0086]
其中是模型预测出的给定字符的含错概率,是给定字符的实际是否含错标签,m是输入语料数量,seq是输入语料长度。
[0087]
进一步地,所述文本错误校正模块3通过以下步骤,基于文本特征和出错概率,输出每个字符的校正表示:
[0088]
1)构建软掩模输入序列;
[0089]
2)构建网络静态计算图;
[0090]
3)模型训练:将软掩模输入序列输入所述网络静态计算图中,根据网络输出结果和标签信息(正确字符的嵌入表示)计算所述损失函数对各层可学习参数的导数,并根据计算得到的导数更新各层参数;
[0091]
4)实时评价和线上部署:每次参数更新后在验证集上解算模型的性能度量参数,得到最终的分类器并部署上线。
[0092]
根据所述文本错误校正模块3,针对其中所述软掩模输入序列,预先给定任意掩模序列为字符含错概率预估序列构造软掩模输入序列为:
[0093]emask,i
=pi*e
′i+(1-pi)*ei[0094]
其中,e
mask,i
是生成的第i个字符的软掩膜,ei是所述文本特征提取模块输出的第i个字符的特征嵌入。基于文本错误识别模块2输出的错误概率进行掩码。如果模型推断该字符出错的概率很高,得到的软掩模输入e
mask,i
接近掩模的嵌入e
′i,否则它接近于输入嵌入ei。
[0095]
根据所述文本错误校正模块3,针对其中所述网络静态计算图,本发明进一步给出一种基于bert的实现方法。所述bert由12个相同的块组成,以整个e
mask
序列作为输入。每个block包含一个多头部的self-attention操作:
[0096] multihead(x)=concat(head1;
…
, headh)wc[0097]
其中,wc是待学习参数,每一个head由如下自注意力方式实现:
[0098][0099]
其中,是第j个注意力头的待学习参数。随后是一个前馈网络,将各头聚合信息进行再次变换。进一步地,将所述bert最后一层的隐状态序列表示为
则对于第t个字符,误差修正的概率定义为:
[0100][0101]
其中为候选列表中第k个字符作为输入序列中第t个字符进行修正的条件概率。
[0102]
根据所述文本错误校正模块3,针对其中所述模型训练,训练数据由原始含错文本序列和对应的无错文本序列组成。创建这种数据的方法是对无错文本随机扰动,使其生成不同的含错序列,然后将其输入模型中进行有监督校准。学习目标为:
[0103][0104]
其中,m是输入语料数量,seq是输入语料长度,k是候选词典大小,是在输入的第i段文本中,第t个字符可以被候选词典中的第k项校正的概率,是模型预测的概率。
[0105]
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
技术特征:
1.一种针对中文语料拼写错误的智能纠错系统,由文本特征提取模块、文本错误识别模块、文本错误校正模块三个模块构成。其中,所述文本特征提取模块基于预训练语言模型,获取语料的动态编码;所述文本错误识别模块:基于序列语言模型,预测文本中每个字符出现错误的概率;所述文本错误校正模块基于文本错误识别模块输出的错误概率进行掩码,并使用语言模型预测正确字符。2.根据权利要求1所述的针对中文语料拼写错误的智能纠错系统,其特征在于,所述文本特征提取模块通过以下步骤,将文本数据转为语料动态编码:1)尾部补零或截断,以固定每段语料的长度,将处理后的语料记为x,语料长度记作seq;2)构建字符级字典d,将所述字典大小记作n,将文本数据中的每个字符按其在d中的顺序做独热编码,将编码结果记作o∈r
seq,n
;3)将独热编码结果送入预训练好的语言模型中,得到包含语义信息的高层字符表示,记作e∈r
seq,d
。3.根据权利要求1所述的针对中文语料拼写错误的智能纠错系统,其特征在于,所述文本错误识别模块通过以下步骤,基于文本特征输出每个字符的出错概率:1)构建网络静态计算图;2)模型训练:将提取出的文本特征输入所述网络静态计算图中,根据网络输出结果和标签信息计算损失函数及其对各层可学习参数的导数,并根据计算得到的导数更新各层参数;3)实时评价和线上部署:每次参数更新后在验证集上解算模型的性能度量参数,得到最终的分类器并部署上线。4.根据权利要求3所述的针对中文语料拼写错误的智能纠错系统,其特征在于,针对所述构建的网络静态计算图,上标右箭头的变量代表网络从先到后遍历文本特征,左箭头的变量代表网络从后到先遍历文本特征。在所述序列模型中的每个时间步t,先结合输入信息e
<t>
和前一时间步的隐含层状态h
<t-1>
,用tanh函数得到当前步记忆细胞状态更新值的候选值;其中,h
<t-1>
是前一时间步的隐含层状态,e
<t>
是当前步的输入信息,w
c
是线性变换系数,b
c
是偏置项,上标箭头代表网络遍历方向。接着,定义门单元:更新门γ
u
、遗忘门γ
f
、输出门γ
o
。这些门单元具有类似的定义方式,且都使用sigmoid函数做输出映射。。这些门单元具有类似的定义方式,且都使用sigmoid函数做输出映射。。这些门单元具有类似的定义方式,且都使用sigmoid函数做输出映射。其中w
u
,w
f
,w
o
分别是更新门、遗忘门、输出门的线性变换系数,b
u
,b
f
,b
o
分别是更新门、遗忘门、输出门的偏置项,上标箭头代表网络遍历方向。σ(
·
)表示sigmoid函数,它将门单
元的输出值控制0到1,在大多数情况下总是非常接近0或1。对于上一时间步的记忆细胞状态c
<t-1>
,遗忘门γ
f
决定是不是要遗忘它;对于当前步记忆细胞状态的更新值更新门γ
u
决定是否要真的更新它;接着,将更新后的细胞状态c
<t>
通过输出门γ
o
,可得到当前步隐含层状态a
<t>
。。将各字符双向特征拼接起来,得到最终的特征表示h
<t>
:最后,通过稠密连接层实现给定字符的含错概率预估:p
<t>
=p(error
<t>
=1∣x)=σ(w
e
h
<t>
+b
e
)其中,p
<t>
是第t个字符含错的概率,w
e
,b
e
是线性判别系数,σ是sigmoid函数。5.根据权利要求3所述的的针对中文语料拼写错误的智能纠错系统,其特征在于,针对所述模型训练,给出一种使用基于二元交叉熵(binary crossentropy,bce)损失的训练方法:其中,是模型预测出的给定字符的含错概率,是给定字符的实际是否含错标签,m是输入语料数量,seq是输入语料长度。6.根据权利要求1所述的针对中文语料拼写错误的智能纠错系统,其特征在于,所述文本错误校正模块通过以下步骤,基于文本特征和出错概率,输出每个字符的校正表示:1)构建软掩模输入序列;2)构建网络静态计算图;3)模型训练:将软掩模输入序列输入所述网络静态计算图中,根据网络输出结果和标签信息计算所述损失函数对各层可学习参数的导数,并根据计算得到的导数更新各层参数;4)实时评价和线上部署:每次参数更新后在验证集上解算模型的性能度量参数,得到最终的分类器并部署上线。7.根据权利要求6所述的的针对中文语料拼写错误的智能纠错系统,其特征在于,针对其中所述软掩模输入序列,构造软掩模输入序列为:e
mask,i
=p
i
*e
′
i
+(1-p
i
)*e
i
其中,是预先给定任意掩模序列,是字符含错概率预估序列,e
mask,i
是生成的第i个字符的软掩膜,e
i
是所述文本特征提取模块输出的第i个字符的特征嵌入。基于文本错误识别模块输出的错误概率进行掩码。如果模型推断该字符出错概率很高,软掩模e
mask,i
接近掩模的嵌入e
′
i
,否则它接近于输入嵌入e
i
。8.根据权利要求6所述的针对中文语料拼写错误的智能纠错系统,其特征在于,针对其
中所述网络静态计算图,本发明进一步给出一种基于bert的实现方法。所述bert由12个相同的块组成,以整个e
mask
序列作为输入。每个block包含一个多头部的self-attention操作:multihead(x)=concat(head1;
…
,head
h
)w
c
其中,w
c
是待学习参数,每一个head由如下自注意力方式实现:其中,是第j个注意力头的待学习参数。随后是一个前馈网络,将各头聚合信息进行再次变换。进一步地,将所述bert最后一层的隐状态序列表示为t=1,2,...,seq,则对于第t个字符,误差修正的概率定义为:其中为候选列表中第k个字符作为输入序列中第t个字符进行修正的条件概率。9.根据权利要求6所述的针对中文语料拼写错误的智能纠错系统,其特征在于,针对其中所述模型训练,训练数据由原始含错文本序列和对应的无错文本序列组成。创建这种数据的方法是对无错文本随机扰动,使其生成不同的含错序列,然后将其输入模型中进行有监督校准。学习目标为:其中,m是输入语料数量,seq是输入语料长度,k是候选词典大小,是在输入的第i段文本中,第t个字符可以被候选词典中的第k项校正的概率,是模型预测的概率。
技术总结
本发明公开一种针对中文语料拼写错误的智能纠错系统。该智能检测仪由文本特征提取模块、文本错误识别模块、文本错误校正模块三个模块构成。本发明不需要对含错文本进行人工标注,具有实现方法简单、识别精度高、鲁棒性好等特点。特点。特点。
技术研发人员:刘兴高 王浩 陈圆圆 王文海 张志猛 张泽银
受保护的技术使用者:浙江大学
技术研发日:2021.11.09
技术公布日:2022/3/7