关于算法:全国中文纠错大赛达观冠军方案分享多模型结合的等长拼写纠错

7次阅读

共计 6989 个字符,预计需要花费 18 分钟才能阅读完成。

参加工作

中文拼写查看工作是中文自然语言解决中十分具备代表性和挑战性的工作,其本质是找出文本段落中的错别字。这项工作在各种畛域,如公文,新闻、财报中都有很好的落地利用价值。而其工作的艰难水平也赋予了它十分大的钻研空间。达观数据在 CCL2022 汉语学习者文本纠错评测较量的赛道一中文拼写查看(Chinese Spelling Check)工作中获得了全国冠军, 赛道二中文语法纠错(Chinese Grammatical Error Diagnosis)工作中取得了亚军。本文基于赛道一中文拼写查看工作的内容,对较量过程中采纳的一些办法进行分享,并介绍较量采纳的技术计划在达观智能校对零碎中的利用和落地。赛道二中文语法纠错的获奖计划曾经分享在达观数据官网公众号中。

本次中文拼写查看的工作是检测并纠正中文文本中的拼写错误(Spelling Errors)。拼写工作包含:音近,形近,音形兼近。特点是谬误内容与被替换内容长度雷同,这也意味着输出语句与输入语句的长度雷同。

图 1 音近字谬误示例

在上述图 1 形容的案例中,输出句中的“干”是一处近音字的谬误应用,应被替换为正确的“赶”,从而失去输入句子。

图 2 多字谬误示例

这种工作在理论利用中会遇到一些艰难。1. OOV(out of vocabulary)的问题会重大影响模型成果。首先,模型不可能纠错出没有在训练中见过的表达方式;其次,模型会因为在训练中没有见过相干实体而将他们错纠。2. 如上图 2 所示,当一个句子存在多处谬误(糊涂两个字都错了),纠错时会受到上下文的影响,也就是受到其余谬误的影响导致难以纠错胜利。

纠错零碎

如图 3 所示,纠错零碎顾名思义是以一个零碎流程的形式进行纠错工作。咱们的零碎为串联式,共有五个步骤。首先,咱们对根底模 型进行预训练和微调,而后进行多轮纠错式推理,第三步是应用训练好的困惑度模型进行误召回查看,第四步则是应用实体纠错办法对于相干实体再次审核,最初应用精度很高但召回较低的 Ngram 语言模型进行再一次的补充。具体内容的介绍将会在该模块下逐个开展。

图 3 拼写纠错计划流程图拼音编码根底模型 

图 4 拼音编码模型构造

不同于惯例的 BERT 模型,这次工作中,咱们增强了模型对属于文本拼音的辨认,这样能够针对性高空对近音字问题。如图 4 所示,除了惯例的 Embedding Layer,也就是字符的编码外,咱们还退出了拼音输入。咱们借鉴了 DCN (Wang et al., 2021)中采纳的编码方法,每一个拼音组合首先会被编码成一个举世无双的整数,输出模型中。而后,将拼音通过 Convolutional layer 后的矩阵与文本通过 Embedding Layer 之后的矩阵相加,再输出到 Attention 中,以此强化拼音编码在模型中的权重。不同于 DCN 中只在 Embedding 阶段将拼音编码与字符编码相组合,咱们借鉴了 DeBERTa (He et al., 2020)中所提及的 Disentangled attention 办法,此过程将在每一次的 Transformer encoder 中进行反复。在模型训练方面,咱们借鉴 cbert (Liu et al., 2021)中文拼写查看模型,在大规模语料中进行训练和微调,对于无标注数据则采纳混同集主动生成数据的办法进行结构。cbert 是基于混同集结构的 bert 模型,因为咱们须要大量未标注数据来扩充模型训练的数据量,应用混同集来生成纠错谬误对变得尤为要害。而 cbert 所表述的办法与咱们的要求统一,所以咱们采纳了该办法。在除了拼音编码的局部之外,模型其余结构和 base bert (Devlin et al., 2019)的构造雷同。共有 12 个 transformer 层,hidden units 的大小为 768,attention head 共有 12 个。而输入层则是拼接了一个输出维度为 768,输入维度为单词数量的全连贯层。最终再应用 Softmax 计算出每个备选单词的概率。

多轮纠错零碎

图 5 多轮纠错计划模型构造

在中文拼写查看畛域,解决同一句话存在多个谬误的问题始终是一项重要的挑战。其起因是存在谬误的上下文会对预测产生影响。在之前的工作中,CRASpell (Liu et al., 2022)通过在训练时随机在错字四周生成新的错字来模仿单句多错字的环境,但这种办法也会对数据的实在散布产生影响。个别的 Transformer 类纠错模型,会在每个地位返回其概率最大的字,如果存在多个错字,也将一并返回。而咱们对此提出了多轮纠错的办法。如上图 5 所示,具体来说,如果一句话中存在多个谬误,在模型预测阶段,咱们每次只选取预测谬误概率最高的字,将其更正后放回原句,再进行第二轮的纠错,直到不再呈现新的谬误的句子。

图 6 多轮纠错 - 每一轮纠错后果示例

以上方图 6 为例,第一轮纠错模型将“珈”纠错成“蒻”字,在第二轮再把“草头弱”纠错成“咖”,最初因为“咖”对于上下文的补充,原本无奈纠出的“琲”也被以十分高的概率胜利纠错成“啡”。该办法将所有单句多错字问题转换成了单句单错字问题,使得训练与预测的工作更具备一致性,散布更加对立,并且没有抛弃任何输出信息。

困惑度缩小误召回

误召回问题同样是中文拼写查看中面临的挑战。因为纠错工作实质是选取地位上概率最高的字,所以会不断呈现”用正确的字替换正确的字“的状况。咱们通过比照句子批改前后的困惑度来缩小误召回的状况 (Bao, 2021)。

该办法次要由以下几个步骤组成:

  1. 针对一句话,将每个字顺次[MASK]。例如:我在吃饭。
  2. 将被 MASK 成四个 sequence:[MASK]在吃饭,我 [MASK] 吃饭,我在 [MASK] 饭,我在吃[MASK]。将上述四个句子通过 tokenizer 编码后输出进模型。
  3. 返回所有 [MASK] 字符对于原字的预测概率。一整句话也就变成:[P1, P2, …, Pn]为这组概率计算
  4. 一个整体分数:

故此,socre 较大的句子较 socre 较小的句子更为不通顺。

图 7 句子困惑度示例

上述图 7 中的例子显示,模型将“我晓得他很忙,没有工夫跟我分割。”误纠成“我晓得他很忙,没有工夫跟我练习。”,因为输出句自身就是通顺的句子,所以困惑度并未因而回升,这个误召回的状况也就能够被胜利缩小。该办法对于纠错的整体性有着针对性的进步,会缩小呈现句子局部纠错正确但未全副纠错正确的状况,弊病是对于字符级别的纠错性能可能带来损失。

实体纠错

当错字呈现在诸如人名、地名、作品名的实体上时往往惯例的纠错模型计划很难达到优异的体现,因为纠错模型的学习工作里不蕴含辨识实体的能力,而语料也不能笼罩所有可能的实体名,所以未免会呈现在实体上的错纠或漏纠。

图 8 实体纠错示例

以上方图 8 为例,第一条样例是把日本的地名 [绳文杉] 错纠成 [绳文彬],这是因为模型不具备绳文杉是个地名的常识,而[文彬] 的字词组合在模型输入中概率更高;第二条样例是漏纠了 [格得战记] 的谬误,正确的作品名是 [格德战记],这是因为模型学习语料中没有笼罩这个作品名称。为了解决实体误纠、漏纠的问题,咱们训练了命名实体辨认模型,模型构造是以 Bert base (Devlin et al., 2019) 加 CRF 的序列标注模型。预测时将实体词典和命名实体辨认模型进行肯定策略排布。

Ngram 纠错办法

Ngram 办法采纳无监督形式纠错,即通过无标注语料训练 n 元语言模型,应用 n 元语言模型进行谬误检测与纠正,通常认为 ngram 纠错形式在准确率方面成果个别,但联合过滤策略可在肯定水平上晋升准确率,即加强语义信息方面的检测,解其余形式带来的误纠。n 元语言模型,一个语言模型构建字符串的概率分布 P(W),假如 P(W)是字符串作为句子的概率,则概率由下边的公式计算:

其中 Wi 示意句中第 i 个词。P(W4|W1W2W3)示意后面三个词是 W1W2W3 的状况下第四个词是 W4 的概率。W1W2W3…Wi- 1 称作历史,如果 W 共有 5000 个不同的词,i= 3 的时候就有 1250 亿个组合,然而训练数据或已有语料库数据不可能有这么多组合,并且绝大多数的组合不会呈现,所以能够将 W1W2W3…Wi- 1 依据规定映射到等价类,最简略的形式就是取 Wi 之前 n - 1 个历史,依据马尔科夫假如,一个词只和他后面 n - 1 个词相关性最高,这就是 n 元语言模型:

咱们在无监督数据集中训练出该模型,并用比拟高的阈值严格过滤后果,起到少召回的成果,在纠错零碎的最终步骤实现对后果的补足。

数据集生成

因为先前提到的 out of vocabulary 对于纠错工作的重大影响,咱们须要模型在尽可能大的数据集中进行训练。由此,须要应用混同集在无标注数据下主动生成训练集。所有用到的混同集和数据生成的代码均在我的项目文件中开源。咱们应用的混同集具体阐明如下。

数据生成

针对未标注数据集,咱们采纳如下办法进行主动纠错对的生成。

  1. 应用分词算法将原句子进行分词解决。
  2. 应用序列标注模型对所有词语进行属性标注。
  3. 对被序列标注模型所标注出的人名,地名类词语(如 xx 酒店,xx 公司)进行不设错解决,即不会被替换为错字。同样被过滤的还有非中文词和停用词。
  4. 随机按比例抽取字词进行改变。如该词在混同集中,15% 不改变,15% 概率随机改变,70% 概率在混同集中随机抽取改变。如该词不在混同集中则不改变。

混同集

对于近音字,在应用混同集进行过滤工作时,咱们采纳以下算法进行近音字断定:思考所有的多音字状况,当 A 字与 B 字所含拼音字母的差别小于 2 个,即断定为近音字。在应用混同集进行生成工作时,则采纳储备的混同集间接进行替换。而对于近形字,因为先前对验证集数据的剖析,咱们认为绝大多数的谬误都是音近或音近形近的谬误,所以在应用混同集进行生成工作时,咱们没有应用形近字混同集。而在过滤工作时则采纳储备的形近字混同集进行过滤。

试验后果

按照较量的要求,咱们应用 F1 作为验证模型成果的指标,其中包含纠错 F1 和检测 F1,并且分为句子和字词两个级别,其数据将以省略百分号(*100)的模式出现。以下表 1 为模型在 YACLC-CSC 的测试集上的体现。值得注意的是,字词级别的 Correlation F1 只查看被模型检测到的谬误,而不是所有谬误。举例来说,假如模型只批改了一处谬误,且批改正确,字词级别的 Correlation F1 将是 100。

表 1 各个计划试验后果比照

在如上表格中,Baseline 是官网提供的基线模型;PYbert 为退出拼音编码的根底模型;Multi-round 为多轮纠错办法;Fluent 为困惑度检测办法;NER 为实体纠错办法;Ngram 为 Ngram 纠错办法。在上述所有办法中,多轮纠错办法会减少召回数量,找到局部原先无奈纠错的案例。困惑度检测则会缩小召回的数量,将局部谬误纠正的句子删除,但同时也会损失大量正确的句子。实体纠错办法则是针对所有实体进行再一次审查,将未正确纠错的实体正确纠错,将谬误纠错的实体删除,准确率较高。最初,Ngram 办法将补充未找到的案例,其召回数量很低(在该 1100 个句子的案例中只召回 88 条),所以不会删除谬误召回。此办法的应用程序大体基于模型的准确率(precision)。准确率较高而召回率(recall)较低的办法将搁置于零碎尾部,保障其输入的后果被删改的概率更低。如图所示,根底的拼音模型在通过生成数据的预训练和其余的微调过后,成果比照基线模型有大幅晋升。而后,零碎的每一个步骤都对 Correlation F1 的晋升起到了帮忙。

技术落地计划

图 9  达观智能校对零碎演示

达观智能校对零碎依靠于自然语言解决和光学字符识别等技术,实现了不同格局的输出文本的主动校对。该零碎涵盖了内容纠错、格局纠错和行文规定纠错等针对不同利用场景下的纠错模块,其中内容纠错模块包含拼写纠错、语法纠错、领导人纠错、符号纠错和敏感词检测等多种校对模块。目前达观智能校对零碎已反对公文畛域、金融畛域和通用畛域的文本校对工作,并且可针对不同畛域的校对需要为客户提供定制化的解决方案。零碎概览如上图 9 所示。本文的办法次要利用在文本纠错零碎内容纠错中,蕴含别字纠错和别词纠错。除此之外,达观文本纠错零碎还反对语法纠错,包含缺字,漏字,乱序,搭配谬误等,能够进行输出句与输入句不同长度的纠错。纠错零碎还针对公文等相干畛域有加强策略。如领导人姓名,语录,行政区谬误等。除了对文字内容的纠错检测,纠错系统对文本格式也能进行修改,包含低头谬误,文种谬误,抄送机关谬误等。

总结

文本提出了一种针对于中文拼写查看工作的纠错零碎,并对其次要蕴含的五个局部进行了详细描述。并给出了该零碎所进行的试验。在模型方面,咱们提出了将拼音编码进 Transformer Encoder 的模型后果;针对于单句多错状况的多轮纠错办法;更加思考句子整体性的混同度查看办法;针对实体谬误的实体纠错办法等。在数据方面,咱们针对多音字进行数据加强,通过混同集在巨量语料中主动生成正确 - 谬误句子对。咱们对于该零碎进行了相干试验,验证了每个局部的有效性。并且介绍了模块在理论落地产品中的利用。

参考文献:Junshan Bao. nlp-fluency. https : / / github . com / baojunshan / nlp-fluency. 2021.Jacob Devlin et al.“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”. In: Proceedings of the 2019 Conferenceof the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long and Short Papers). Minneapolis, Minnesota: Association for Computational Linguistics, June 2019, pp. 4171–4186. doi: 10.18653/v1/N19- 1423. url: https://aclanthology.org/N19-… et al.“A Hybrid Approach to Automatic Corpus Generation for Chinese Spelling Check”. In: Proceedings of the 2018 Conferenceon Empirical Methods in Natural Language Processing (EMNLP). Brussels, Belgium, Nov. 2018.Pengcheng He et al. DeBERTa: Decoding-enhanced BERT with Disentangled Attention. 2020. doi: 10.48550/ARXIV.2006.03654. url: https://arxiv.org/abs/2006.03… Li and Shuming Shi. Tail-to-Tail Non-Autoregressive Sequence Prediction for Chinese Grammatical Error Correction. 2021. doi: 10.48550/ARXIV.2106.01609. url: https://arxiv.org/abs/2106.01… Liu et al.“Visually and Phonologically Similar Characters in Incorrect Simplified Chinese Words”. In: Coling 2010: Posters. Beijing, China: Coling 2010 Organizing Committee, Aug. 2010, pp. 739–747. url:https://aclanthology.org/C10-… Liu et al.“CRASpell: A Contextual Typo Robust Approach to Improve Chinese Spelling Correction”. In: Findings of the Association forComputational Linguistics: ACL 2022. Dublin, Ireland: Association forComputational Linguistics, May 2022, pp. 3008–3018. doi: 10 . 18653 /v1/2022.findings-acl.237. url: https://aclanthology.org/2022… Tseng et al.“Introduction to SIGHAN 2015 Bake-off for Chinese Spelling Check”. In: Proceedings of the Eighth SIGHAN Workshop on Chinese Language Processing. Beijing, China: Association for Computational Linguistics, July 2015, pp. 32–37. doi: 10.18653/v1/W15-3106. url: https://aclanthology.org/W15-…

正文完
 0