0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

几种基于深度学习的中文纠错模型

深度学习自然语言处理 来源:NLP日志 作者:NLP日志 2022-06-09 11:19 次阅读

1 简介

在之前的篇章我们对中文文本纠错做了一个系统的介绍,曾经盛行的纠错系统都是基于混淆集+n-gram语言模型的,其中混淆集构建成本巨大,同时相对笨重,而n-gram语言模型也没考到句子的语义信息,所以导致最终的F1得分都比较小,很难满足真实场景的需要,泛化能力很比较差。同时以往的纠错系统都是基于pipeline的,检测任务跟纠错任务是相互分开的,各个环节紧急相连,前面的环节如果出现了错误,后面的环节也很难进行修正。任何一个环节出现了问题,都会影响整体的结果。

随着深度学习的兴起,人们逐渐用深度学习模型去替换以往的混淆集+n-gram语言模型的方式,根据句子的语义信息去进行纠错,同时,还将检测任务跟纠正任务联合到一起,做成一个end2end的系统,避免pipeline方式带来的问题。在这里我们介绍几种基于深度学习的中文纠错模型,让大家对于中文文本纠错有更加深入的理解。

2Confusionset-guided Pointer Network

Confusionset-guided Pointer Network是一个seq2seq模型,同时学习如何从原文本复制一个正确的字或者从混淆集中生成一个候选字。整个模型分为encoder跟decoder两部分。其中encoder用的BiLSTM用于获取原文本的高层次表征,例如图中左下角部分,decoder部分用的带注意力机制的循环神经网络,在解码的每个时刻,都能生成相应的上下文表征。生成的上下文表征有两个用途,第一个是利用这部分表征作为输入,通过矩阵乘法跟softmax来计算当前位置生成全词表中各个字的概率(右边的概率图)。第二个用途是利用这部分上下文表征加上位置信息来计算当前时刻复制原文本某个位置的字的概率或者需要生成原文本中不存在的字的概率(左边的概率图,这里其实是一个分类模型,假设原文本的长度是n,那么全部分类有n+1种,其中1至n的标签的概率代表当前时刻要复制原文本第i个位置的字的概率,第n+1的类别代表当前时刻要生成原文本不存在的字的概率。如果是1至n中某个类别的概率最大,那么当前位置的解码结果就是复制对应概率最大的原文本的某个字,如果是第n+1个类别概率最大,那么就会用到前面提及的第一个用途,计算当前位置词表中各个字的概率,取其中概率最大的字作为当前时刻解码的结果)。这里要注意的是,生成新字为了保证结果更加合理,会事先构建好一个混淆集,对于每个字,都有若干个可能错别字(形近字或者同音字等),模型会对生成的候选会限制在这个字的混淆集中,也不是在全词表中选择,所以才称为confusionset-guided。训练时会联合encoder跟decoder一同训练,以预测各个类别的交叉熵损失作为模型优化目标。

Confusionset-guided Pointer Network看起来跟之前提及的CopyNet思路很接近文本生成系列之文本编辑,同时考虑到copy原文跟生成新字两种可能性,相对于之前的seq2seq模型的改进主要是引入混淆集来控制可能的候选字符。这种设置也比较合理,中文的错别字多是在形状或者发音上有一定相似之处,通过混淆集可以进一步约束纠错的结果,防止纠错的不可控。但是由于生成的结果一定来源于混淆集,所以混淆集的质量也影响了最终纠错的效果。一个合理的混淆集的构建都需要付出比较大的代价。

80c2be56-e72c-11ec-ba43-dac502259ad0.png

图1:Confusionset-guided Pointer Network框架

3 FASPell

这是爱奇艺发布在EMNLP2019的基于词的中文纠错的方法,FASPell有两个特别的点,一个是用BERT为基础的DAE取代了传统的混淆集,另一点是使用置信度-相似度的解码器来过滤候选集,从而提高纠错效果。

FASPell首先利用Bert来生成句子每个字符的可能候选结果,但是Bert的预训练任务MLM中选中的token有10%是被随机替代的,这跟文本纠错的场景不符,所以需要对Bert进行一定的微调。具体过程就是对MLM任务做一定调整,调整策略如下

a)如果文本没有错误,那么沿用之前Bert的策略。

b)如果文本有错误,那么随机选择的要mask的位置的字,如果处于错误的位置,那么设置对应的标签为纠错后的字,也就是相对应的正确的字。如果不是处于错误的位置,那么设置对应的标签为原来文本中的字。

在获得文本可能的候选结果后,FASPell利用置信度-相似度的解码器来过滤这些候选结果。这里为什么需要对Bert生成的候选字进行过滤呢?因为汉语中常见的错误大部分在字形或者发音有一定相似之处,但是Bert生成的候选字并没有考虑到中文纠错的背景,所以Bert提供的候选结果很多都是纠错任务不相关的。这里每个位置的候选词的置信度由Bert计算得到,相似度这里包括字形相似度跟音素相似度,其中因素相似度考虑到在多种语言中的发音。对于每个位置的候选词,只有当置信度,字形相似度跟音素相似度满足某个条件时,才会用这个候选字符替代到原文对应字符。至于这个过滤条件,一般是某种加权组合,通常需要置信度跟相似度的加权和超过一定阈值才会进行纠错,加权相关的参数可以通过训练集学习得到,在推理时就可以直接使用。

FASPell没有单独的检测模块,利用BERT来生成每个位置的候选字,避免了以往构建混淆集的工作,同时利用后续的置信度-相似度的解码器,对候选结果进行过滤,从而进一步提高纠错效果。

8105f05e-e72c-11ec-ba43-dac502259ad0.png

图2: FASPell框架

4Soft-Masked BERT

Soft-masked Bert是字节发表在ACL 2020的中文纠错方法,针对目前主流的深度学习纠错方法都是利用Bert生成各个位置的可能候选,但是Bert本身缺乏判断每个位置是否需要纠错的能力,也就是缺乏检测能力。为此,提出了一个包含检测网络跟纠正网络的中文纠错方法。整个流程是经过检测网络,然后再经过纠错网络。其中检测网络是的双向GRU+全连接层做一个二分类任务,计算原文本每个位置是否有错误的概率。每个位置有错别字的概率为p,没有错别字的概率是1-p,如图中左边部分。纠正网络采用的是预训练模型Bert,但是在嵌入层的地方有所不同,每个位置的嵌入是由原文本中对应位置的字的词嵌入跟[MASK]的词嵌入的加权和得到的,这里的[MASK]的权重等于检测网络预测的当前位置是错别字的概率。具体如图4所示,所以如果检测网络判断当前位置是错别字的概率较高,那么在纠正网络中该位置的词嵌入中[MASK]的权重就更高,反之,如果检测网络判断当前位置是错别字的概率很低,那么在纠正网络中该位置的词嵌入中[MASK]的权重就更低。利用Bert获得每个位置的表征后,将Bert最后一层的输出加上原文本中对应位置的词嵌入作为每个时刻最终的表征,通过全连接层+Softmax去预测每个位置的字,最终选择预测概率最大的字作为当前结果的输出。训练过程中联合训练检测网络跟纠正网络的,模型的目标包括两部分,一个是检测网络的对数似然函数,另一个是纠正网络的对数似然函数,通过加权求和联合这两部分,使得加权和的负数尽可能小,从而同时优化这两个网络的参数。

8157a6ba-e72c-11ec-ba43-dac502259ad0.png

图3: Soft-Masked BERT框架

81901680-e72c-11ec-ba43-dac502259ad0.png

图4: Softed-masked embedding

Soft-Masked BERT相比直接采用预训练模型BERT,利用检测网络从而得到更合理的soft-masked embedding,缓解了Bert缺乏充足检测能力的问题,虽然改动不大,但是效果提升明显。

5 MLM-phonetics

个人感觉MLM-phonetics是在soft-masked BERT的基础上做的优化,思路也比较接近,同样是包括检测网络跟纠正网络,主要有几点不同,

81b3bd42-e72c-11ec-ba43-dac502259ad0.png

图5: MLM-phonetics框架

a)纠正网络的词嵌入组成不同,Soft-Masked BERT的词嵌入由原文本中各个位置本身的词嵌入和[MASK]的词嵌入组成,而MLM-phonetics则是将相应[MASK]的词嵌入替换为相应位置对应的拼音序列的嵌入。

b)目标函数不同,MLM-phonetics在纠正网络的目标函数中加入了检测网络的预测结果作为一个权重项。

c)检测网络不同,MLM-phonetics的检测网络采用了预训练模型Bert。

d) BERT预训练任务不同,为了更加适配中文纠错任务的场景,MLM-phonetics的Bert的MLM任务中预测的字都是根据汉字常见的错误选取的,要不在字形上有相似之处,要不在发音上有相似之处。

82090e3c-e72c-11ec-ba43-dac502259ad0.png

图6: MLM-phonetics预训练任务

6 总结

为了对比上述几种中文纠错方法之间的差异,可以直接比较这几种方法在几个常见中文纠错数据集上的性能表现,在F1值上都远超基于混淆集+n-gram语言模型的方式。

823edcb0-e72c-11ec-ba43-dac502259ad0.png

图7:不同纠错模型的效果对比

除此之外,关于中文纠错任务,还有一些需要注意的点。

a)由于纠错任务可以分为检测跟纠正两个过程,所以相应的错误也可以分为这两种类型。目前基于BERT的中文纠错方法的检测错误的比例要高于纠正错误的比例,这也得益于Bert训练过程的MLM任务。

b)中文纠错方法基本都是以字为基本单位,很大程度是因为以词为单位的话会引入分词模块的错误,但是可以用分词的结构来作为字的特征增强。

c)目前中文纠错任务有两种类型的错误还没有很好的解决。第一种是模型需要强大推理能力才能解决,例如“他主动牵了姑娘的手,心里很高心,嘴上却故作生气。”这里虽然容易检测出“高心”是错别字,但是至于要把它纠正为“寒心”还是“高兴”需要模型有强大的推理能力才可以。第二种错误是由于缺乏常识导致的(缺乏对这个世界的认识),例如“芜湖:女子落入青戈江,众人齐救援。”需要知道相关的地理知识才能把“青戈江”纠正为“青弋江”。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测
    +关注

    关注

    5

    文章

    4419

    浏览量

    91322
  • 文本
    +关注

    关注

    0

    文章

    118

    浏览量

    17057
  • 深度学习
    +关注

    关注

    73

    文章

    5473

    浏览量

    120918

原文标题:中文文本纠错系列之深度学习篇

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深度学习模型的鲁棒性优化

    深度学习模型的鲁棒性优化是一个复杂但至关重要的任务,它涉及多个方面的技术和策略。以下是一些关键的优化方法: 一、数据预处理与增强 数据清洗 :去除数据中的噪声和异常值,这是提高模型鲁棒
    的头像 发表于 11-11 10:25 111次阅读

    GPU深度学习应用案例

    GPU在深度学习中的应用广泛且重要,以下是一些GPU深度学习应用案例: 一、图像识别 图像识别是深度学习
    的头像 发表于 10-27 11:13 302次阅读

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的一个热门研究方向。以下是一些FPGA加速深度学习
    的头像 发表于 10-25 09:22 120次阅读

    AI大模型深度学习的关系

    AI大模型深度学习之间存在着密不可分的关系,它们互为促进,相辅相成。以下是对两者关系的介绍: 一、深度学习是AI大
    的头像 发表于 10-23 15:25 328次阅读

    深度学习模型有哪些应用场景

    深度学习模型作为人工智能领域的重要分支,已经在多个应用场景中展现出其巨大的潜力和价值。这些应用不仅改变了我们的日常生活,还推动了科技进步和产业升级。以下将详细探讨深度
    的头像 发表于 07-16 18:25 1554次阅读

    深度学习模型量化方法

    深度学习模型量化是一种重要的模型轻量化技术,旨在通过减少网络参数的比特宽度来减小模型大小和加速推理过程,同时尽量保持
    的头像 发表于 07-15 11:01 444次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>模型</b>量化方法

    深度学习模型中的过拟合与正则化

    深度学习的广阔领域中,模型训练的核心目标之一是实现对未知数据的准确预测。然而,在实际应用中,我们经常会遇到一个问题——过拟合(Overfitting)。过拟合是指模型在训练数据上表现
    的头像 发表于 07-09 15:56 712次阅读

    深度学习中的模型权重

    深度学习这一充满无限可能性的领域中,模型权重(Weights)作为其核心组成部分,扮演着至关重要的角色。它们不仅是模型学习的基石,更是
    的头像 发表于 07-04 11:49 857次阅读

    深度学习的典型模型和训练过程

    深度学习作为人工智能领域的一个重要分支,近年来在图像识别、语音识别、自然语言处理等多个领域取得了显著进展。其核心在于通过构建复杂的神经网络模型,从大规模数据中自动学习并提取特征,进而实
    的头像 发表于 07-03 16:06 1158次阅读

    深度学习模型训练过程详解

    深度学习模型训练是一个复杂且关键的过程,它涉及大量的数据、计算资源和精心设计的算法。训练一个深度学习模型
    的头像 发表于 07-01 16:13 1043次阅读

    深度学习模型优化与调试方法

    深度学习模型在训练过程中,往往会遇到各种问题和挑战,如过拟合、欠拟合、梯度消失或爆炸等。因此,对深度学习
    的头像 发表于 07-01 11:41 663次阅读

    目前主流的深度学习算法模型和应用案例

    深度学习在科学计算中获得了广泛的普及,其算法被广泛用于解决复杂问题的行业。所有深度学习算法都使用不同类型的神经网络来执行特定任务。
    的头像 发表于 01-03 10:28 1699次阅读
    目前主流的<b class='flag-5'>深度</b><b class='flag-5'>学习</b>算法<b class='flag-5'>模型</b>和应用案例

    如何基于深度学习模型训练实现工件切割点位置预测

    Hello大家好,今天给大家分享一下如何基于深度学习模型训练实现工件切割点位置预测,主要是通过对YOLOv8姿态评估模型在自定义的数据集上训练,生成一个工件切割分离点预测
    的头像 发表于 12-22 11:07 731次阅读
    如何基于<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>模型</b>训练实现工件切割点位置预测

    如何基于深度学习模型训练实现圆检测与圆心位置预测

    Hello大家好,今天给大家分享一下如何基于深度学习模型训练实现圆检测与圆心位置预测,主要是通过对YOLOv8姿态评估模型在自定义的数据集上训练,生成一个自定义的圆检测与圆心定位预测
    的头像 发表于 12-21 10:50 1687次阅读
    如何基于<b class='flag-5'>深度</b><b class='flag-5'>学习</b><b class='flag-5'>模型</b>训练实现圆检测与圆心位置预测

    深度学习如何训练出好的模型

    算法工程、数据派THU深度学习在近年来得到了广泛的应用,从图像识别、语音识别到自然语言处理等领域都有了卓越的表现。但是,要训练出一个高效准确的深度学习
    的头像 发表于 12-07 12:38 1042次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>学习</b>如何训练出好的<b class='flag-5'>模型</b>