首页> 中国专利> 一种基于多粒度融合与Bert筛选的中文文本自动校对方法

一种基于多粒度融合与Bert筛选的中文文本自动校对方法

摘要

本发明涉及一种基于多粒度融合与Bert筛选的中文文本自动校对方法,属于自然语言处理技术领域;本发明通过结合字粒度与词粒度级别的校对模型,以期能够利用不同粒度级别的信息。字粒度模型采用集成规则生成候选集与Bert筛选的方法,词粒度采用传统方法,先构建候选集,然后使用N‑Gram模型计算句子困惑度取最佳候选。另外该方法还解决了多字少字等错误类型问题。实验结果验证了该方法能有效提高检错纠错的召回率,有效提升校对模型性能。对比现有技术,本发明规避了字粒度校对模型和词粒度校对模型带来的局限性,基于多粒度融合与Bert筛选通过两种粒度有效结合不同层次信息,通过N‑Gram LM打分与Bert进行筛选,能够有效提高错误的召回率和校对的准确率。

著录项

说明书

技术领域

本发明涉及一种中文文本校对方法,具体涉及一种基于多粒度融合与Bert筛选的中文文本自动校对方法,属于计算机科学与人工智能中自然语言处理技术领域。

背景技术

随着互联网迅猛发展和普及,网络文本数量急剧增长,而文本质量却在不断下降,使传统的人工校对模式成为不可能的任务。中文文本自动校对是中文自然语言处理方面关键任务。自动校对可以帮助人们校对社会中各个领域遇到的文本错误,包括公告、学术论文、研究报告等文本资料,在其他自然语言处理任务如文字识别(Optical CharacterRecognition,OCR)和语音识别(Automated Speech Recognition,ASR)等也发挥着巨大作用。

早在20世纪60年代,国外就开展了英文文本自动校对的研究,到20世纪90年代,国内逐渐开展中文文本自动校对的研究。早期的文本校对是根据语法规则制导,对句子进行分析,若不符合句子的生成规则,则对句子进行校对。随着统计自然语言处理的发展,基于字词的N-Gram统计模型被广泛应用于文本校对中。传统的基于规则与统计的模型对文本纠错有一定的局限性,一些深度学习语言模型,如RNN,LSTM,ConvS2S等可以充分理解字词的语义以及所处的语境,可以校对更加复杂的错误类型。在2018年之后,一些语言模型诸如ELMo、BERT由于其强大的语言表征能力和方便训练及迁移应用使得预训练语言模型迅速流行起来。纵观古今中外的文本校对方法,大致分为三类,分别是基于语义规则的文本校对、基于统计语言模型的文本校对和基于深度学习的文本校对。

基于语义规则的文本校对是将文本的语法错误分成两类:搭配错误和句型成分相关的错误。搭配错误是用模式匹配进行标注的,通过总结错误规则构建错误规则模式,根据错误规则模式自动匹配句子,如果匹配成功,则标注错误类型;句型成分错误是通过句型成分分析,检测是否发生成分缺失和成分块内部错误。基于统计语言模型的文本校对通过统计语料库中语言符号(包括字符、词、短语、词性标注等等)的概率分布来计算句子概率的一种模型。对大规模语料的统计分析,构造字频向量、字字同现频率表、二元词性同现频率表来进行字字接续、词性接续的判断,进而发现文本错误。基于统计的语言模型对于字词错误和语法错误校对有一定的局限性,无法胜任较复杂的语法语义规则。随着深度学习的兴起,一系列基于深度学习的文本校对模型被相继提出。例如,循环神经网络(recurrent neuralnetworks,RNN)序列到序列(sequence-to-sequece,seq2seq)模型,卷积seq2seq(Convolutional Sequence to Sequence,ConvS2S)模型。在自然语言处理技术研讨会(NLPTEA)共享中文语法错误诊断(CGED)任务中,大多数人将中文文本自动校对当做序列标注问题。该方法凭借官方给出的大量错误标注数据集,训练RNN模型,用该模型提取句子的语义信息,然后接入条件随机场模型,以此预测该字符是否是错误文本字符,对错误的字符打上错误的标签。

虽然有以上三种方法,但是目前为止,还没有人将对于句子表征能力最强的预训练语言模型Bert应用于中文文本自动纠错当中。由于中文表达的复杂多样,基于语义规则和统计语言模型包括目前深度学习等方法的错误召回率并不高,因此本发明提出了一种基于多粒度融合与Bert筛选的中文文本自动校对方法,多粒度融合方法旨在结合不同切分粒度的校对模型,以期能够利用不同粒度级别的信息,在当前模型效果还有大提升情况下,避免单独应用字粒度级别模型所带来的局限性。该方法使用了字级别和词级别的两种粒度,两种粒度有效结合不同层次信息,通过N-Gram LM打分与Bert进行筛选。以提高错误的召回率。

本发明针对公告、学术论文、研究报告等文本资料,将原文本首先按字粒度进行切分,对每个字用MASK字符掩盖,用BERT预测该位置的字符,利用N-Gram困惑度打分,根据打分决策是否将原字符替换成预测的字符,然后将原文本进行分词,对于不在用户词典中的疑似错词,利用同音似形词典进行替换,利用N-Gram困惑度打分,根据打分决策是否将原字符替换成同音似形的词。本发明对公告、学术论文、研究报告等文本资料的质量提供了保障,以及对文字识别和语音识别等自然语言任务提供有效的支持。

发明内容

本发明的目的在于针对当前字粒度和词粒度校对模型的局限性,由于字粒度级别的模型擅长于校对错别字错误,而词粒度级别的模型则更擅长于校对词语搭配错误,因此提出了一种多粒度融合与Bert校对筛选的文本自动校对方法。该方法能够有效集成字粒度与词粒度校对方法优点,有效提升校对模型效果,避免单独应用字粒度级别模型所带来的局限性。基于多粒度融合与Bert筛选的中文自动校对通过两种粒度有效结合不同层次信息,通过N-Gram LM打分与Bert进行筛选,以提高错误的召回率,能够有效地提升校对模型性能。

本发明的核心思想是通过结合字粒度与词粒度级别的校对模型,以期能够利用不同粒度级别的信息。字粒度模型采用集成规则生成候选集与Bert筛选的方法,词粒度采用传统方法,先构建候选集,然后使用N-Gram模型计算句子困惑度取最佳候选。另外该方法还解决了多字少字等错误类型问题。实验结果验证了该方法能有效提高检错纠错的召回率,有效提升校对模型性能。

本发明的目的是通过以下技术方案实现的:

一种基于多粒度融合与Bert筛选的中文文本自动校对方法,包括以下内容:

步骤1)训练字粒度级别的5-gram语言模型;

作为优选,为方便模型的快速加载,所述5-gram语言模型训练完成后,通过模型压缩命令将所述模型压缩为二进制。

作为优选,所述5-gram语言模型训练过程如下:

步骤1-1)将训练语料按字以空格进行切分;

步骤1-2)使用KenLM训练5-gram LM,训练命令为:bin/lmplz-o 5-S60%-T/tmppeople_zh_char_5gram.arpa;

步骤1-3)将模型压缩为二进制,命令为:bin/build_binary people_zh_char_5gram.arpa people_zh_char_5gram.klm。

步骤2)对文本进行词粒度级别检错;

作为优选,所述词粒度级别检错包括错词错误检测、冗余错误检测以及缺失错误检测。

作为优选,所述词粒度级别检错包括以下步骤:

步骤2-1)首先对待纠错文本进行分词;

步骤2-2)对分词后的文本单词逐个分析,判断单词是否在常用词语字典中,若不在,则将其视为疑似错词;

步骤2-3)对于文本分词后所形成的单字碎片,利用常用词语字典得到该单字出现的频数,如果该单字属于低频单字,则将其视为疑似可能发生了冗余错误或缺失错误;

步骤2-4)对疑似错词记录单词的位置下标、单词内容以及错误类型,保存在可能错误列表中作为词粒度的检错结果。

步骤3)在词粒度检错基础上,对文本进行字粒度检错;

作为优选,所述字粒度检错采用N元语言模型分数量化局部N个token(标记)之间是否符合语言规范实现。

作为优选,所述字粒度检错过程如下:

步骤3-1)逐字取出token序列中的字符,再以该字符为中心,向前向后取n个字符得到token子序列;

步骤3-2)对token子序列,使用N-gram LM(N-gram Language Model,N-gram语言模型)计算该token子序列的语言模型分数作为该字符得分;

步骤3-3)对于开始与结尾处部分字符,使用移动窗口补全字符得分;

步骤3-4)对于最终得到的语言模型分数列表,通过平均绝对离差获取疑似错字的位置;

步骤3-5)将疑似错字的位置下标、内容以及错误类型等添加到可能错误列表中。

步骤4)文本纠错:对字粒度错误和词粒度错误区别纠错,最终实现校对融合。

作为优选,所述文本纠错过程如下:

步骤4-1)对所述可能错误列表按照出错起始位置进行排序;然后逐个遍历可能的错误,对每个可能的错误执行后续步骤;

步骤4-2)获取所述错误的起始位置、错误内容以及错误类型,然后首先判断错误类型,如果是疑似错字错误,转到步骤4-2-1);如果是疑似错词错误,转到步骤4-2-2);如果是冗余错误或缺失错误,转到步骤4-2-3);

步骤4-2-1)对于字错误的错误内容根据音似和形似字典构建相应的音似和形似候选集;然后使用Bert在这些候选集中挑选最佳候选作为最终校对结果;

步骤4-2-2)对于错词错误的错误内容构建相应的混淆集;然后利用N-Gram LM中计算困惑度方法挑选最佳候选完成纠错;

作为优选,所述混淆集通过交换词中字位置顺序、将其中某个字通过音似形似字典更换为相应的音似形似字构建。

步骤4-2-3)对于冗余错误或者缺失错误,先假设其是冗余错误,尝试删掉该单字,即以空作为该错误位置的候选字符;再假设其是缺失错误,在所述错误的起始位置前后mask一个字符,然后使用Bert预测一个最符合语境的字构成候选集;最后,针对构建的换选集,使用N-Gram LM计算句子困惑度,取困惑度最小的候选为最终纠错结果,如果最佳候选为空,则其是冗余错误;如果最佳候选为多字词,则其为缺失错误;

步骤4-3)校对融合,采用贪心解码方式,处理完一处错误后,再把校对结果代入,执行下一处校对。

有益效果

与现有技术相比,本发明具有如下有益效果:

规避了字粒度校对模型和词粒度校对模型带来的局限性,从后面实验来看,当前基于字粒度级别的模型对文本中的词错误校对效果并不理想。多粒度融合方法旨在结合不同切分粒度的校对模型,以期能够利用不同粒度级别的信息,显著提升校对模型效果,避免单独应用字粒度级别模型所带来的局限性。基于多粒度融合与Bert筛选的中文自动校对通过两种粒度有效结合不同层次信息,通过N-Gram LM打分与Bert进行筛选,能够有效提高错误的召回率。

使用了Bert来进行最终错误词的候选集选择器。Bert强大的语言表征能力能够极大的提高校对模型最终的准确率,而且加入音似形似特征可以有效地避免Bert模型对文本的过纠误纠现象。

附图说明

图1是本发明一种使用Bert进行文本自动校对方法流程图;

图2是本发明一种多粒度融合与Bert筛选的中文文本自动校对方法的字粒度校对方法;

图3是本发明一种多粒度融合与Bert筛选的中文文本自动校对方法的词粒度校对方法。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例,仅仅用以解释本发明,并不用于限定本发明。

实施例1

一种基于多粒度融合与Bert筛选的中文文本自动校对方法,包括如下步骤:

步骤1)训练字粒度级别的5-gram语言模型;

bin/lmplz-o 5-S 60%-T/tmp 5gram.arpa

训练命令的含义为:

1)设置-o参数,表示训练5-gram语言模型;

2)设置-S参数,指定KenLM至多使用60%的内存空间。如果分配的内存空间不够,KenLM会自动执行基于磁盘的聚合排序;

3)设置-T参数,指定/tmp为临时文件存放路径;

4)KenLM默认从标准输入读取训练语料,若训练语料按字切分则训练字粒度级别的LM,按词切分则训练词粒度级别的LM。

模型压缩命令为:

bin/build_binary text.arpa text.binary

压缩模型为二进制,方便模型快速加载。

步骤1)又包括如下子步骤:

步骤1-1)将训练语料(人民日报中文语料)按字以空格进行切分;

步骤1-2)按上述命令使用KenLM训练5-gram LM,训练命令为:bin/lmplz-o 5-S60%-T/tmppeople_zh_char_5gram.arpa;

步骤1-3)按上述命令将模型压缩为二进制,方便模型快速加载。命令为:bin/build_binary people_zh_char_5gram.arpa people_zh_char_5gram.klm;

最终可得到一个二进制5-gram语言模型规模为2.75G。

步骤2)对文本进行词粒度级别检错;

本发明中的词粒度检错流程如图3所示,主要通过分词后,然后利用常用词词典、切分碎片等进行检错分析:

字粒度级别的校对模型无需分词,逐字分析,完成检错纠错过程。而词粒度级别的校对模型需要以词语为分析对象。自然需要先对文本进行分词然后以词语为对象发现文本中可能潜在的错误。包括疑似错词错误检测、疑似冗余或缺失错误检测。

步骤2)又包括如下子步骤:

步骤2-1)首先对待纠错文本进行分词操作(可使用大规模自定义分词字典);

分词工具可采用jieba或nlpir等;

步骤2-2)对分词过后的文本单词逐个分析,判断单词是否在常用词语字典中。若不在,则将其视为疑似错词,是后期纠错模块中的重点对象;

步骤2-3)按照步骤2-2)得到的结果,记录单词的位置下标、单词内容以及错误类型,保存在可能错误列表中作为词粒度的检错结果;

步骤2-4)对于文本分词后所形成的单字碎片,利用常用词语字典得到该单字出现的频数,如果该单字属于低频单字,则将其视为疑似可能发生了冗余错误或缺失错误;

步骤3)在词粒度检错基础上,对文本进行字粒度检错;

本发明中的字粒度检错流程如图2所示:

词粒度检错过于依赖用户自定义词典,这是一种十分有效但并不灵活的方法。因此我们可以加入字粒度纠错来对文本中可能并没发现的错误进行补充,以及发现因为错字而形成新词的错误。

N元语言模型可以反映句子中局部N个token之间是否符合语言规范,而其语言模型分数即可量化这种特征;但语言模型分数是针对token序列进行计算的。在此我们需要近似计算出单个字符的语言模型分数,才能根据字符的得分情况判断出最有可能出错的位置。因此,可以按照如下方法计算:

步骤3)具体包括如下子步骤:

步骤3-1)逐字取出token序列中的字符,再以该字符为中心,向前向后取n个字符得到token子序列;

步骤3-2)按照步骤3-1)得到的token子序列,使用N-gram LM计算该token子序列的语言模型分数作为该字符得分;

步骤3-3)对于开始与结尾处部分字符,可使用移动窗口补全字符得分;

步骤3-4)对于最终得到的语言模型分数列表,可通过平均绝对离差获取疑似错字的位置;

步骤3-5)将步骤3-4)得到的错误字的位置下标、内容以及错误类型等添加到可能错误列表中;

至此完成了文本的检错阶段,包括词粒度检错以及字粒度检错,最后我们能够得到一个可能出错的信息列表,里面有可能的出错下标位置、出错内容、以及错误类型(字错误、词错误或缺失冗余错误),下面我们要根据此出错信息列表完成错误纠正。

步骤4)文本纠错,对字粒度错误和词粒度错误分开处理,最终实现校对融合;

步骤4)具体包括如下子步骤:

步骤4-1)对出错信息列表按照出错起始位置进行排序;然后逐个遍历可能出错信息列表;

步骤4-2)获取该错误的起始位置、错误内容以及错误类型,然后首先判断错误类型,如果是字错误,转到步骤4-2-1),如果是词错误,转到步骤4-2-2);

步骤4-2-1)字错误校对步骤:

字粒度的校对方法如图2后半部分所示:

步骤4-2-1A)定位到错误字位置;

步骤4-2-1B)根据检错得到的错误字信息再根据音似、形似字典构建相应的音似形似候选集;

中文,作为世界上仅存的几种象形文字之一,大部分字错误均存在于音似与形似当中。我们可以在相关数据集中获得了相对全面的音似、形似字典。比如,对于入字,获得音似和形似字后,对其进行繁体转换等处理后格式如下所示:

音似:入茹褥辱孺燸女儒茹嚅濡汝蠕乳如辱孺

形似:入仟件任作伯傀人竹佚佾侏俄倭俾荏化仰乒低俐系趴飞倪疹偏赁僱

步骤4-2-1C)然后使用Bert在这些候选集中挑选最佳候选作为最终校对结果;

使用Bert进行文本校对的原理如图1所示,利用Bert强大的语义表征能力可获得语义候选集以及对应概率,再与得到的音形候选集进行双向筛选可获取最后的校对结果。

步骤4-2-2)词错误校对步骤:

词粒度的校对方法如图3后半部分所示:

步骤4-2-2A)对上面得到的疑似错词逐个构建相应的混淆集(可通过交换词中字位置顺序、将其中某个字通过音似形似字典更换为相应的音似形似字);

步骤4-2-2B)利用N-Gram LM中计算困惑度方法挑选最佳候选完成纠错;

步骤4-3)对错误类型为词错误的错误进行冗余缺失等相关错误类型的校正,具体为:

步骤4-3-1)冗余错误校对;

步骤4-3-1A)判断该词是否为低频单字词,即其可能发生冗余错误;

步骤4-3-1B)尝试将该单字词删掉,即以空作为它的候选集;

步骤4-3-1C)使用N-Gram LM计算句子的困惑度。倘若删掉单字词后句子的语言困惑度更低了。则判定该处发生了冗余错误;

步骤4-3-2)缺失错误校对;

步骤4-3-2A)判断该词是否为低频单字词,即其可能发生缺失错误;

步骤4-3-2B)构造缺失错误的候选集,即在可能发生缺失错误的位置前或后插入一个最符合语境的字。Bert正好可以解决这个问题,可以在错误位置前后mask一个字符。让Bert预测一个最符合语境的字构成候选集;

步骤4-3-2C)使用N-Gram LM计算句子困惑度。取困惑度最小的候选为最终纠错结果;

步骤4-4)校对融合,采用贪心解码方式,处理完一处错误后,再把校对结果代入,执行下一处校对;

上述过程如图2和图3所示,分别对字粒度和词粒度的检错纠错过程给出了流程示意。

试验结果

使用上述方法,在服务启动时先加载已经训练好的N-Gram语言模型。往分词工具中加载用户自定义词典。

首先对待纠错文本进行切分,可按标点进行切分,然后对每个文本段先使用分词工具分词,然后对得到的token逐个分析。

倘若某个token不存在于当前大规模用户词典中,可近似认为该词可能存在错误,记录该词的位置下标,token内容,错误类型为词错误,加入到可能错误列表中,对于分词结果中的切分碎片,即低频单字,可认为该字可能出现冗余缺失错误,记录该词的位置下标,token内容,错误类型为冗余缺失错误,加入到可能错误列表中。

其次再实现字粒度的文本检错,逐字分析,以该字符为中心,向前向后取n个字符得到token子序列,使用N-gram LM计算该token子序列的语言模型分数作为该字符得分。对于开始与结尾处部分字符,可使用移动窗口补全字符得分。对于最终得到的语言模型分数列表。可通过平均绝对离差获取疑似错字的位置。倘若该字位置已经包含于错误词位置中,则直接跳过。最后也是记录可能错误字位置、错误字内容以及错误类型为字错误,加入到可能错误列表中。

至此,文本检错阶段已经完成,以下是文本纠错阶段:

首先对可能错误列表按错误起始位置进行排序;

其次逐个分析可能出错字词,针对不同错误类型,分别分析纠错:

如果是词错误,则首先根据该错误词构建相应的候选集,包括但不限于交换位置顺序、将其中某个字通过音似形似字典更换为相应的音似形似字。然后逐个代入到待纠错文本中,利用N-Gram语言模型计算相应困惑度,取困惑度最小的那个词作为最后校对结果。另外,针对分词后可能出现的冗余缺失错误,针对其可能出现冗余错误,可以对其添加空的候选集,针对缺失错误,可以在错误位置前后mask一个字符。让Bert预测一个最符合语境的字构成候选集。

如果是字错误,则首先也是根据该字构建相应的候选集,主要是利用音似形似字典获取该字的候选集。然后利用Bert强大的表征能力,从这些候选集中挑出Bert得分最高的结果作为校对结果。

如表1所示,整体来说,基于上述双粒度融合与Bert筛选的中文文本校对模型能够提升模型总体指标。其中纠错F1综合指标较字粒度模型平均提升了10.19%。

表1多粒度融合模型的对比实验

为了说明本发明的内容及实施方法,本说明书给出了一个具体实施例。在实施例中引入细节的目的不是限制权利要求书的范围,而是帮助理解本发明所述方法。本领域的技术人员应理解:在不脱离本发明及其所附权利要求的精神和范围内,对最佳实施例步骤的各种修改、变化或替换都是可能的。因此,本发明不应局限于最佳实施例及附图所公开的内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号