一种中文文本中含有多个相同错词纠正的方法及系统与流程

文档序号:29806368发布日期:2022-04-23 22:09阅读:123来源:国知局
一种中文文本中含有多个相同错词纠正的方法及系统与流程

1.本技术涉及中文文本纠错技术领域,更具体地,涉及一种中文文本中含有多个相同错词纠正的方法及系统。


背景技术:

2.中文文本纠错是一个极具挑战性的研究领域,中文语法的复杂性也加大计算机处理文本错误的困难。随着深度学习的发展,尤其是大规模语料预训练模型的出现,网络结构越来越复杂,功能越来越强的模型能应用于中文文本纠错领域,也带来中文文本纠错领域的发展和提高。
3.深度学习模型解决中文文本纠错,目前较为常用的有两种方式:一种是end-to-end的模型,一个中文语句x(x1,x2,...xn)作为输入,得到另外一个中文语句y(y1,y2,...yn)作为输出,x作为待判断的语句,y作为修改后正确的语句,这种方式的模型构造流程较为简单,依靠的是深度学习模型的学习能力;另一种方式是使用两段式,首先识别错误的位置和类型,然后再根据错误类型构造候选集,利用语句通顺程度作为评价指标来确定最优的结果,两段式方式引入先验知识,候选集构造采用了音形相似的用户字典。
4.两种方式中的两段式的计算与构造更复杂,功能效果也更好,在识错和纠错阶段分别使用深度学习模型。评价语句通顺程度时,使用到的计算指标为语句困惑度(perplexity,简称ppl),它的计算方式有多种,本发明涉及到的计算方式是用bert模型,利用其预训练任务mlm(mask language mode)中使用的mask token方式计算每个单一字的得分来累加得到类似于ppl的值,来评价语句的通顺程度(ppl值越低,困惑度越低,语句越通顺)。此方法的好处是利用了大规模语料预训练模型的学习能力,能做到举一反三,泛化能力较强,可以学习到未在语料中出现的语义信息。
5.但是也会引入一些问题,比如本发明解决的问题,当同一个语句中出现多个同样的错词时,bert计算其错词的得分就很低,造成一个错误的结果。例如,待判断语句“生活得耿浩,学习得耿浩,工作得耿浩”,修改第一个位置的“耿浩”的候选集为[“耿浩”,“更好”],由于bert模型对相同错词的计算中,会使得“耿浩”的类ppl得分低于“更好”,从而导致认为“耿浩”优于“更好”。
[0006]
中文文本中出现多个相同错词时,使用bert用于类ppl的计算时,由于其它位置错词导致当前错误的得分值更低,从而认为其类ppl值更低,语句通顺程度越优秀,造成了文本中相同错词,无法纠正,从而引起了漏报。
[0007]
现今社会使用的输入法普遍具有记忆功能,之前输入的单词在较短时间内的优先级往往大于其它单词,所以会导致相同的错词会连续犯错的可能性较大,文本纠错如果不能更好纠正此类错误,容易造成社会相关部门发布信息时造成“乌龙”,引起其公信力下降,社会群众对其不信任。
[0008]
因此,如何避免纠错时错词的类ppl得分低于正确词,是目前有待解决的技术问题。


技术实现要素:

[0009]
本发明提供一种中文文本中含有多个相同错词纠正的方法,用以解决现有技术中纠错时错词的类ppl得分低于正确词的技术问题。该方法应用于存在多个相同错词的中文文本中,该方法包括:
[0010]
基于语句查找出相同错词,用预设标记替代所述相同错词,生成预设语句;
[0011]
初始设定类ppl的得分值和预设顺序值均为0;
[0012]
判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值;
[0013]
若否则进入循环判定,满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,不满足则直接将所述预设顺序值加1,重复循环判定直至累加的所述预设顺序值不小于所述预设语句长度,输出当前类ppl的总得分值;
[0014]
其中,所述替代词候选集包括正确词和错误词,所述预设顺序值为0对应所述预设语句中第一个汉字,所述预设顺序值逐渐递增对应预设语句中的位置逐渐后移,类ppl的得分值代表了语句困惑度。
[0015]
在本技术一些实施例中,在基于语句查找相同错词之前,所述方法还包括:
[0016]
将含有若干个相同错词的待判断文本进行识错的序列标注,得到多个相同的疑似错词,基于第一个疑似错词获取替代词候选集,基于所述替代词候选集得到语句。
[0017]
在本技术一些实施例中,基于语句查找出相同错词,对所述相同错词用预设标记替代,生成预设语句,具体为:
[0018]
基于所述语句查找出相同错词,用预设标记替代除了当前位置的其余所述相同错词,生成预设语句,所述预设语句包括原始文字和预设标记。
[0019]
在本技术一些实施例中,满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,具体为:
[0020]
判断当前字是否为汉字,当前字为所述预设顺序值对应的所述预设语句中汉字位置;
[0021]
若是,则用所述预设标记替代所述当前字,进入bert模型中,计算所述当前字的类ppl得分值,将类ppl得分值进行累加及所述顺序值加1。
[0022]
在本技术一些实施例中,判断所述预设顺序值是否不小于所述预设语句长度,具体为:
[0023]
判断所述预设顺序值是否不小于所述预设语句中汉字的数量值。
[0024]
相应的,本发明还提出了一种中文文本中含有多个相同错词纠正的系统,应用于存在多个相同错词的中文文本中,所述系统包括:
[0025]
替代模块,用于基于语句查找出相同错词,用预设标记替代所述相同错词,生成预设语句;
[0026]
初始模块,用于初始设定类ppl的得分值和预设顺序值均为0;
[0027]
判断模块,用于判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值;
[0028]
循环模块,用于若否则进入循环判定,满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,不满足则直接将所述预设顺序值加1,重复循环判定直至累加的所述预
设顺序值不小于所述预设语句长度,输出当前类ppl的总得分值;
[0029]
其中,所述替代词候选集包括正确词和错误词,所述预设顺序值为0对应所述预设语句中第一个汉字,所述预设顺序值逐渐递增对应预设语句中的位置逐渐后移,类ppl的得分值代表了语句困惑度。
[0030]
在本技术一些实施例中,所述系统还包括识错模块,用于:
[0031]
将含有若干个相同错词的待判断文本进行识错的序列标注,得到多个相同的疑似错词,基于第一个疑似错词获取替代词候选集,基于所述替代词候选集得到语句。
[0032]
在本技术一些实施例中,所述替代模块,具体用于:
[0033]
基于所述语句查找出相同错词,用预设标记替代除了当前位置的其余所述相同错词,生成预设语句,所述预设语句包括原始文字和预设标记。
[0034]
在本技术一些实施例中,所述循环模块,具体用于:
[0035]
判断当前字是否为汉字,当前字为所述预设顺序值对应的所述预设语句中汉字位置;
[0036]
若是,则用所述预设标记替代所述当前字,进入bert模型中,计算所述当前字的类ppl得分值,将类ppl得分值进行累加及所述顺序值加1。
[0037]
在本技术的一些实施例中,所述判断模块,具体用于:
[0038]
判断所述预设顺序值是否不小于所述预设语句中汉字的数量值。
[0039]
通过应用以上技术方案,将含有若干个相同错词的待判断文本进行识错的序列标注,得到多个相同的疑似错词,基于第一个疑似错词获取替代词候选集,基于所述替代词候选集得到语句;基于语句查找出相同错词,用预设标记替代所述相同错词,生成预设语句;初始设定类ppl的得分值和预设顺序值均为0;判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值;若否则进入循环判定,满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,不满足则直接将所述预设顺序值加1,重复循环判定直至累加的所述预设顺序值不小于所述预设语句长度,输出当前类ppl的总得分值。语句中有相同的错误字词,对这些字词进行遮盖,避免对此位置错误的评价造成错误。能精准的对含有多个相同错词的文本进行纠错,提高了纠错准确度,避免了因同词出现的漏报、误报问题。
附图说明
[0040]
为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]
图1示出了本发明实施例提出的一种中文文本中含有多个相同错词纠正的方法的流程图;
[0042]
图2示出了本发明实施例提出的一种中文文本中含有多个相同错词纠正的系统的结构图;
[0043]
图3示出了现有技术中识错阶段流程图;
[0044]
图4示出了现有技术中纠错阶段流程图;
[0045]
图5示出了现有技术中计算类ppl的流程图;
[0046]
图6示出了本发明另一实施例方法的流程图。
具体实施方式
[0047]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0048]
目前文本纠错中的两段式:识别错误位置和类型,纠正错误。在识别错误与类型中,使用的是序列标注标记每个字的标签(bio模式,b-type代表某个错误类型开始的字,i-type代表某个错误类型非开始的字,o代表当前字无错),然后针对每个序列标注的每个错误,根据它的类型,构造其相关候选集,然后针对其候选集进行语句通顺程度的判断,从而得到最优的答案进行替换;将每个错误进行相同的处理后,从而得到最后的句子。识错阶段和纠错阶段流程如下图3和图4所示。
[0049]
在进行bert进行计算得到类ppl时,使用的是bert的mask language mode的任务,将标记的位置的字进行mask,然后获取该位置为类ppl分数。例如在“生活得耿浩,学习得耿浩,工作得耿浩。”中,当序列标注得到了的标签为[0,0,0,b-yinxiangsi,i-yinxiangsi,0,0,0,0,b-yinxiangsi,i-yinxiangsi,0,0,0,0,b-yinxiangsi,i-yinxiangsi,0],即获取到标签为三个疑似音相似的错误“耿浩”,然后针对第一个位置的“耿浩”,假设我们获取到的候选集为[“耿浩”,“更好”],即判断语句“生活得耿浩,学习得耿浩,工作得耿浩。”与“生活得更好,学习得耿浩,工作得耿浩。”哪一句类ppl的得分更低,因为在对第一个“耿浩”进行分别进行mask之后,得到的分数会低于“更好”,会造成的误判,从而会在纠错中出现漏报的情况,引起此类漏报的原因是bert对于多个相同词的类ppl计算时,相同词的类ppl值很低。
[0050]
现有技术缺少针对中文语句中出现多个错误词进行纠正的方法,从而将错误的词认定为正确的,造成了对中文文本的漏报。现有技术的计算类ppl的流程图如5所示。
[0051]
本技术实施例提供一种中文文本中含有多个相同错词纠正的方法,应用于存在多个相同错词的中文文本中,如图1所示,该方法包括以下步骤:
[0052]
步骤s101,基于语句查找出相同错词,用预设标记替代所述相同错词,生成预设语句。
[0053]
本实施例中,根据语句,查找出所述语句中的多个相同错词,用预设标记替代所述相同的错词,得到预设语句。
[0054]
为了保证准确性,在本技术的一些实施例中,基于所述语句查找出相同错词,用预设标记替代除了当前位置的其余所述相同错词,生成预设语句,所述预设语句包括原始文字和预设标记。
[0055]
本实施例中,根据所述语句查找出相同的错词,错词包括但不限于字、词,只要是汉字中相同的错误,均落在本技术的保护范围之内。用预设标记替代除了当前位置的其余相同错词,当前位置为当前顺序值对应的语句中的位置。生成的预设语句中包括原始文字和预设标记,原始文字是语句中无错误的文字汉字。
[0056]
为了进一步提高准确性,在本技术的一些实施例中,在基于语句查找出相同错词
之前,本方法还包括,将含有若干个相同错词的待判断文本进行识错的序列标注,得到多个相同的疑似错词,基于第一个疑似错词获取替代词候选集,基于所述替代词候选集得到语句。
[0057]
本实施例中,使用序列标注待判断文本中每个字的标签,从而得到多个相同的疑似错词,根据第一个疑似错词获取替代词的候选集,依据所述替代词的候选集得到语句,所述替代词的候选集中包括正确词和错误词。
[0058]
步骤s102,初始设定类ppl的得分值和预设顺序值均为0。
[0059]
本实施例中,对类ppl得分值和预设顺序值初始赋值0,所述预设顺序值为0对应所述预设语句中第一个汉字,所述预设顺序值逐渐递增对应预设语句中的位置逐渐后移,比如预设顺序值为2时,对应预设语句中第3个字的位置(预设语句中字的顺序从左往右起始),其中类ppl的得分值代表了语句困惑度,类ppl的得分值越低说明语句通顺度越优秀,类ppl的得分值越高则相反。
[0060]
步骤s103,判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值。
[0061]
本实施例中,判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值,当前类ppl的总得分值为否定情况时进行循环判定中计算的每个字的类ppl得分值的累加值。
[0062]
为了保证可靠性,在本技术一些实施例中,判断所述预设顺序值是否不小于所述预设语句中汉字的数量值。
[0063]
本实施例中,判断所述预设顺序值是否大于等于所述预设语句中汉字的数量值,比如,预设顺序值为3,预设语句中存在5个汉字,则预设顺序值小于预设语句中汉字的数量值。
[0064]
步骤s104,若所述预设顺序值小于所述预设语句长度,则进入循环判定。满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,不满足则直接将所述预设顺序值加1,重复循环判定直至累加的所述预设顺序值不小于所述预设语句长度,输出当前类ppl的总得分值。
[0065]
本实施例中,满足预设顺序值小于预设语句长度时,进入循环判定中。满足预设条件则累加之前(包括当前位置)的类ppl的得分值并将预设顺序值加1,不满足则直接将预设顺序值加1,重复上述循环判定直至累加的预设顺序值不小于预设语句长度,输出当前类ppl的总得分值。
[0066]
为了进一步提高可靠性,在本技术的一些实施例中,判断当前字是否为汉字,当前字为所述预设顺序值对应的所述预设语句中汉字位置;若是,则用所述预设标记替代所述当前字,进入bert模型中,计算所述当前字的类ppl得分值,将类ppl得分值进行累加及所述顺序值加1。
[0067]
本实施例中,预设条件为判断当前字是否为汉字,当前字为所述预设顺序值对应的所述预设语句中汉字位置,若当前字是汉字,则将当前字用预设标记替代,进入bert模型中计算当前字的类ppl得分,类ppl得分进行累加,最终将预设顺序值加1,重复上述判断,直至述预设顺序值不小于所述预设语句长度。
[0068]
通过应用以上技术方案,将含有若干个相同错词的待判断文本进行识错的序列标
注,得到多个相同的疑似错词,基于第一个疑似错词获取替代词候选集,基于所述替代词候选集得到语句;基于语句查找出相同错词,用预设标记替代所述相同错词,生成预设语句;初始设定类ppl的得分值和预设顺序值均为0;判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值;若否则进入循环判定,满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,不满足则直接将所述预设顺序值加1,重复循环判定直至累加的所述预设顺序值不小于所述预设语句长度,输出当前类ppl的总得分值。语句中有相同的错误字词,对这些字词进行遮盖,避免对此位置错误的评价造成错误。能精准的对含有多个相同错词的文本进行纠错,提高了纠错准确度,避免了因同词出现的漏报、误报问题。
[0069]
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
[0070]
将除了当前位置的其余相同错词用mask标记,这样就将相同错词的影响去掉,使评价更加准确和公平。
[0071]
对于待判断文本“生活得耿浩,学习得耿浩,工作得耿浩。”,进行识错的序列标注之后得到三个疑似音相似的错词“耿浩”,针对第一个“耿浩”,假设获取到了候选集[“耿浩”,“更好”],得到两个语句[“生活得更好,学习得耿浩,工作得耿浩。”,“生活得耿浩,学习得耿浩,工作得耿浩。”],然后进行类ppl的计算。
[0072]
假定计算的语句为“生活得更好,学习得耿浩,工作得耿浩。”,疑似错误为“耿浩”。
[0073]
如图6所示,类ppl得分值计算过程如下:
[0074]
1、找到相同的疑似错误,对相同的疑似错误字词(相同的错词)进行mask,当前错误的字词除外,那么得到新的语句为“生活得更好,学习得[mask][mask],工作得[mask][mask]。”[0075]
2、赋初值给类ppl得分为0,下标i(预设标记)的值为0。
[0076]
3、判断当前下标是否大于等于句子的长度;如果是,则将类ppl的得分进行输出;如果否,则进入到下一步(第4步)。
[0077]
4、判断当前位置的字是否是汉字;如果不是汉字,则将下标i进行加1,之后返回到第3步;如果是汉字,进入到下一步(第5步)。
[0078]
5、将当前位置的汉字使用mask进行代替,假设i等于0,则语句变成“[mask]活得更好,学习得[mask][mask],工作得[mask][mask]。”,将该语句使用bert的词典映射后,进行bert模型,从而得到第一个位置(i=0)的得分情况,找到该位置为“生”的得分,将其加入到类ppl得分和,进入到下一步(第6步)。
[0079]
6、将下标i进行加1,然后返回到第3步。
[0080]
此种情况计算下,会得到“生活得更好,学习得耿浩,工作得耿浩。”的ppl值低于“生活得耿浩,学习得耿浩,工作得耿浩。”,从而认定第一个位置“更好”比“耿浩更优秀”,从而解决了正确词的类ppl得分高于错误词的类ppl得分。一直进行下去会使得原句修改后的输出为“生活得更好,学习得更好,工作得更好。”[0081]
本实施例中还提出了多种替代方案,因为使用mask进行标记,mask标签也会对其有少量影响;另外,本发明流程提及的是只针对错误字词,如果序列标注的未全部标记出,也可能出现偏差;还有原句中存在候选集里面多个不同的词语时,也会产生影响;针对以上
情况,给出了以下三种替代方案:
[0082]
(1)针对mask标记的影响,因为预训练任务中使用的mask进行标记,那么计算当前位置的mask得分时,相应的也会产生影响,针对此类情况,建议使用其它的未知标识,且是词典的“unsed”进行标记,那么原来的“生活得更好,学习得耿浩,工作得耿浩。”会修改为“生活得更好,学习得[unsed][unsed],工作得[unsed][unsed]。”,这样就可以减小mask的影响,但是需要重新训练预训练模型,然后对于相同的字词使用unsed进行替换。
[0083]
(2)针对序列标注可能未全部标出的影响,那么mask的位置范围不是只在疑似错误中,而是全句,那么就可以有效避免此种情况。
[0084]
(3)针对以下语句:更好对大家说:“生活得耿浩,学习得耿浩,工作得耿浩。”,候选集里面是[“耿浩”,“更好”],我们可以将所有可能的候选集语句构建出来,从而得到以下16个语句:
[0085]

更好对大家说:“生活得耿浩,学习得耿浩,工作得耿浩。”[0086]

更好对大家说:“生活得耿浩,学习得耿浩,工作得更好。”[0087]

更好对大家说:“生活得耿浩,学习得更好,工作得耿浩。”[0088]

更好对大家说:“生活得耿浩,学习得更好,工作得更好。”[0089]

更好对大家说:“生活得更好,学习得耿浩,工作得耿浩。”[0090]

更好对大家说:“生活得更好,学习得耿浩,工作得更好。”[0091]

更好对大家说:“生活得更好,学习得更好,工作得耿浩。”[0092]

更好对大家说:“生活得更好,学习得更好,工作得更好。”[0093]

耿浩对大家说:“生活得耿浩,学习得耿浩,工作得耿浩。”[0094]

耿浩对大家说:“生活得耿浩,学习得耿浩,工作得更好。”[0095]
耿浩对大家说:“生活得耿浩,学习得更好,工作得耿浩。”[0096]
耿浩对大家说:“生活得耿浩,学习得更好,工作得更好。”[0097]
耿浩对大家说:“生活得更好,学习得耿浩,工作得耿浩。”[0098]
耿浩对大家说:“生活得更好,学习得耿浩,工作得更好。”[0099]
耿浩对大家说:“生活得更好,学习得更好,工作得耿浩。”[0100]
耿浩对大家说:“生活得更好,学习得更好,工作得更好。”[0101]
这种情况是不使用mask,然后找出类ppl得分最低的语句作为最后的输出。
[0102]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
[0103]
本技术实施例还提出了一种中文文本中含有多个相同错词纠正的系统,如图2所示,应用于存在多个相同错词的中文文本中,所述系统包括:
[0104]
替代模块202,用于基于语句查找出相同错词,用预设标记替代所述相同错词,生成预设语句;
[0105]
初始模块203,用于初始设定类ppl的得分值和预设顺序值均为0;
[0106]
判断模块204,用于判断所述预设顺序值是否不小于所述预设语句长度,若是则输出当前类ppl的总得分值;
[0107]
循环模块205,用于若否则进入循环判定,满足预设条件则累加类ppl的得分值并将所述预设顺序值加1,不满足则直接将所述预设顺序值加1,重复循环判定直至累加的所述预设顺序值不小于所述预设语句长度,输出当前类ppl的总得分值;
[0108]
其中,所述替代词候选集包括正确词和错误词,所述预设顺序值为0对应所述预设语句中第一个汉字,所述预设顺序值逐渐递增对应预设语句中的位置逐渐后移,类ppl的得分值代表了语句困惑度。
[0109]
在本技术具体的应用场景中,所述系统还包括识错模块201,用于:
[0110]
将含有若干个相同错词的待判断文本进行识错的序列标注,得到多个相同的疑似错词,基于第一个疑似错词获取替代词候选集,基于所述替代词候选集得到语句。
[0111]
在本技术具体的应用场景中,所述替代模块202,具体用于:
[0112]
基于所述语句查找出相同错词,用预设标记替代除了当前位置的其余所述相同错词,生成预设语句,所述预设语句包括原始文字和预设标记。
[0113]
在本技术具体的应用场景中,所述循环模块205,具体用于:
[0114]
判断当前字是否为汉字,当前字为所述预设顺序值对应的所述预设语句中汉字位置;
[0115]
若是,则用所述预设标记替代所述当前字,进入bert模型中,计算所述当前字的类ppl得分值,将类ppl得分值进行累加及所述顺序值加1。
[0116]
在本技术具体的应用场景中,所述判断模块204,具体用于:
[0117]
判断所述预设顺序值是否不小于所述预设语句中汉字的数量值。
[0118]
本领域技术人员可以理解实施场景中的系统中的模块可以按照实施场景描述进行分布于实施场景的系统中,也可以进行相应变化位于不同于本实施场景的一个或多个系统中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0119]
最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1