精华内容
下载资源
问答
  • 向AI转型的程序员都关注了这个号????????????人工智能大数据与深度学习 公众号:datayx今年,字节AI-Lab与复旦大学合作提出了一种中文文本纠错模型:Soft-Maske...


    向AI转型的程序员都关注了这个号????????????

    人工智能大数据与深度学习  公众号:datayx

    今年,字节AI-Lab与复旦大学合作提出了一种中文文本纠错模型:Soft-Masked BERT[1].这项工作发表在了ACL 2020上,由于论文并没有开源代码,所以我将对这篇论文进行解读与复现。

    问题提出:

    中文文本纠错是一项挑战性的任务,因为模型要想获得令人满意的解决方案,就必须具备人类水平的语言理解能力。比如:

    • eg1 Wrong:埃及有金塔。Correct: 埃及有金塔。

    • eg2 Wrong: 他的求胜欲很强,为了越狱在挖洞。Correct: 他的求生欲很强,为了越狱在挖洞。

    • eg3 Wrong: 他主动拉了姑娘的手, 心里很高心。Correct: 他主动拉了姑娘的手, 心里很高兴

    在Soft-Masked BERT被提出之前,最好的方法是先通过在句子的每个位置建立基于BERT的语言表示模型,再从候选字符列表中选择一个字符进行修正。然而,BERT使用了mask的方式进行预训练,没有足够的能力来检测每个位置是否存在误差(只有15%的错误被找出),所以这种方法的精度不够好。

    Soft-Masked BERT解决方案:

    使用两个网络模型,一个用于错误检测;另一个基于BERT进行纠错。

    Soft-Masked BERT结构
    • Detection Network

    Detection Network通过双向的GRU来实现:

    构建Detection_Network中的网络层与实例化代码:

    • Soft Masking Connection

    • Correction Network

    该层主要的结构就是Bert模型,其中有12个Encoder层,以整个序列作为输入。每个block包含一个多头部的self-attention操作,然后接一个前馈网络:

    实验结果

    论文中使用的数据集有3个:

    1. Chinese Spelling Check Task(CSC)数据集:选择了其中《对外汉语测试》的作文部分(SIGHAN);

    2. News Title数据集:来自于今日头条app中的文章的标题部分;

    3. 5 million news titles数据集:从一些中文新闻app中爬取,该数据集只用来fine-tuning

    其中公开数据集为Chinese Spelling Check Task数据集[2],包含1100个文本和461种错误(字符级别).

    可以看出,在CSC数据集的测试中,Soft-Masked BERT模型的效果基本上都是比其他Baseline模型的效果要好。

    而在Detection部分,HanSpeller++模型的精准率要高于Soft-Masked BERT模型的精准率,且Correction部分HanSpeller++模型的精准率也高于Soft-Masked BERT模型的精准率.

    这是因为HanSpeller++模型中有许多人工添加的规则与特征,这些人工添加的规则与特征能在Detection部分过滤错误的识别,虽然这种人工规则与特征效果很好,但这种方式需要很多人工成本,而且泛化性也不好.

    综上,在SIGHAN数据集的测试集上,Soft-Masked BERT模型的效果是最优的。

    此外作者还用实验证明了:

    1. fine-tuning的数据集(在5 million news titles数据集上)的规模越大,fine-tuning之后的模型在CSC任务中的效果也会越好;

    2. 消融对比研究,证明该提出的模型每一部分都是不可或缺的.

    关于以上内容:

    完整代码以及更详细的注释(一行代码三行注释)已上传到github

      代码 获取方式:

      分享本文到朋友圈

      关注微信公众号 datayx  然后回复 纠错  即可获取。

      AI项目体验地址 https://loveai.tech

    参考

    1. ^[1] https://arxiv.org/pdf/2005.07421.pdf

    2. ^http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html

    3. ^https://github.com/shibing624/pycorrector

    4. ^https://zhuanlan.zhihu.com/p/164873441


    阅读过本文的人还看了以下文章:

    TensorFlow 2.0深度学习案例实战

    基于40万表格数据集TableBank,用MaskRCNN做表格检测

    《基于深度学习的自然语言处理》中/英PDF

    Deep Learning 中文版初版-周志华团队

    【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

    《美团机器学习实践》_美团算法团队.pdf

    《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

    特征提取与图像处理(第二版).pdf

    python就业班学习视频,从入门到实战项目

    2019最新《PyTorch自然语言处理》英、中文版PDF+源码

    《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

    《深度学习之pytorch》pdf+附书源码

    PyTorch深度学习快速实战入门《pytorch-handbook》

    【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

    《Python数据分析与挖掘实战》PDF+完整源码

    汽车行业完整知识图谱项目实战视频(全23课)

    李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

    笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

    《神经网络与深度学习》最新2018版中英PDF+源码

    将机器学习模型部署为REST API

    FashionAI服装属性标签图像识别Top1-5方案分享

    重要开源!CNN-RNN-CTC 实现手写汉字识别

    yolo3 检测出图像中的不规则汉字

    同样是机器学习算法工程师,你的面试为什么过不了?

    前海征信大数据算法:风险概率预测

    【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

    VGG16迁移学习,实现医学图像识别分类工程项目

    特征工程(一)

    特征工程(二) :文本数据的展开、过滤和分块

    特征工程(三):特征缩放,从词袋到 TF-IDF

    特征工程(四): 类别特征

    特征工程(五): PCA 降维

    特征工程(六): 非线性特征提取和模型堆叠

    特征工程(七):图像特征提取和深度学习

    如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

    Machine Learning Yearning 中文翻译稿

    蚂蚁金服2018秋招-算法工程师(共四面)通过

    全球AI挑战-场景分类的比赛源码(多模型融合)

    斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

    python+flask搭建CNN在线识别手写中文网站

    中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

    不断更新资源

    深度学习、机器学习、数据分析、python

     搜索公众号添加: datayx  


    机大数据技术与机器学习工程

     搜索公众号添加: datanlp

    长按图片,识别二维码

    展开全文
  • 今年,字节AI-Lab与复旦大学合作提出了一种中文文本纠错模型:Soft-Masked BERT[1].这项工作发表在了ACL 2020上,由于论文并没有开源代码,所以我将对这篇论文进行解读与复现。问题提出:中文文本纠错是一项挑战性的...

    09911db61f275c6819490866b94fc4ed.png

    今年,字节AI-Lab与复旦大学合作提出了一种中文文本纠错模型:Soft-Masked BERT[1].这项工作发表在了ACL 2020上,由于论文并没有开源代码,所以我将对这篇论文进行解读与复现。

    问题提出:

    中文文本纠错是一项挑战性的任务,因为模型要想获得令人满意的解决方案,就必须具备人类水平的语言理解能力。比如:

    • eg1 Wrong:埃及有金塔。Correct: 埃及有金塔。
    • eg2 Wrong: 他的求胜欲很强,为了越狱在挖洞。 Correct: 他的求生欲很强,为了越狱在挖洞。
    • eg3 Wrong: 他主动拉了姑娘的手, 心里很高心。 Correct: 他主动拉了姑娘的手, 心里很高兴

    在Soft-Masked BERT被提出之前,最好的方法是先通过在句子的每个位置建立基于BERT的语言表示模型,再从候选字符列表中选择一个字符进行修正。然而,BERT使用了mask的方式进行预训练,没有足够的能力来检测每个位置是否存在误差(只有15%的错误被找出),所以这种方法的精度不够好。

    Soft-Masked BERT解决方案:

    使用两个网络模型,一个用于错误检测;另一个基于BERT进行纠错。

    9a7a250374db0a8f172649a489a98b3b.png
    Soft-Masked BERT结构
    • Detection Network

    Detection Network通过双向的GRU来实现:

    输入

    (input embeddings)是包含每个字符的字嵌入(word embedding)、位置嵌入(position embedding)、段嵌入(segment embedding)三部分的相加的embedding.

    输出

    是对应每个字符的0到1之间的概率标签,该值越小表示对应字符错误的可能性越大.

    那么文本序列中的每一个字符的错误概率计算公式为:

    其中

    就是由Detection Network计算出的错误概率,
    是sigmoid函数,W为全连接的权重矩阵,
    为偏置项,
    就是Bi-GRU最后一层的hidden state,具体为:

    构建Detection_Network中的网络层与实例化代码:

    #构建Detection_Network网络层
    
    • Soft Masking Connection

    input embeddings

    与使用Detection Network计算出的
    加权求和后的结果在论文中叫做soft-masked embedding,
    是以误差率为权重的mask embeddings .下式中的
    即代表第
    个字符通过计算得到的soft-masked embedding.

    不难看出,上个步骤中得到的

    越小,则soft-masked embedding计算出的
    越接近input embeddings 中的
    ,此字符错误的可能性也越小.

    构建Soft Masking Connection层代码

    # 中文预训练的Bert模型词表,特殊符[MASK]在词表中的索引都为103
    
    • Correction Network

    该层主要的结构就是Bert模型,其中有12个Encoder层,以整个序列作为输入。每个block包含一个多头部的self-attention操作,然后接一个前馈网络:

    取Bert模型中最后一层Encoder的所有隐藏状态与input embeddings对应相加进行残差连接(Residual Connection)得到残差连接值

    接着将残差连接值

    输入到一个全连接层中,该全连接层会使用bert的hidden state将残差连接值映成为与候选词表维数相同的向量. 后面再跟一个softmax函数输出字符
    可以被纠正为候选字符
    的概率:

    # bert嵌入、encoder、池化、权重.
    
    • 训练

    训练数据是原始序列对和修正序列对组成的元组

    创建训练数据的是使用混淆表反复生成包含错误序列
    的序列.

    损失函数是由Detection Network的损失与Correction Network的损失函数线性相加构成:

    系数

    一般要取一个大于0.5的值,因为
    是 Correction Network的损失函数前的线性组合系数,Correction Network的损失函数为多分类损失函数,分类任务明显更难;而Detection Network的损失函数是二分类损失函数,任务明显更简单,这样也会令整个Soft-Masked BERT模型的效果更好。

    其中Detection Network与Correction Network的损失均为交叉熵损失,即:

    实验结果

    论文中使用的数据集有3个:

    1. Chinese Spelling Check Task(CSC)数据集:选择了其中《对外汉语测试》的作文部分(SIGHAN);
    2. News Title数据集:来自于今日头条app中的文章的标题部分;
    3. 5 million news titles数据集:从一些中文新闻app中爬取,该数据集只用来fine-tuning

    其中公开数据集为Chinese Spelling Check Task数据集[2],包含1100个文本和461种错误(字符级别).

    0443e2c4df7922664e9f15ae22402529.png
    不同方法在CSC数据集上的表现对比

    可以看出,在CSC数据集的测试中,Soft-Masked BERT模型的效果基本上都是比其他Baseline模型的效果要好。

    而在Detection部分,HanSpeller++模型的精准率要高于Soft-Masked BERT模型的精准率,且Correction部分HanSpeller++模型的精准率也高于Soft-Masked BERT模型的精准率.

    这是因为HanSpeller++模型中有许多人工添加的规则与特征,这些人工添加的规则与特征能在Detection部分过滤错误的识别,虽然这种人工规则与特征效果很好,但这种方式需要很多人工成本,而且泛化性也不好.

    综上,在SIGHAN数据集的测试集上,Soft-Masked BERT模型的效果是最优的。

    此外作者还用实验证明了:

    1. fine-tuning的数据集(在5 million news titles数据集上)的规模越大,fine-tuning之后的模型在CSC任务中的效果也会越好;
    2. 消融对比研究,证明该提出的模型每一部分都是不可或缺的.

    关于以上内容:

    完整代码以及更详细的注释(一行代码三行注释)已上传到github:wanglke/Soft-Masked-BERT

    其中代码中用到的bert中文训练模型与config文件可以通过以下链接下载:

    config文件下载https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-config.json

    bert中文预训练模型https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-pytorch_model.bin


    遗憾的是该论文的作者并没有对该论文中的算法进行开源,有对中文文本纠错感兴趣的小伙伴可以使用这个开源的中文纠错工具PYcorrector[3]

    pycorrectorgithub.com

    它不仅安装简单,同时支持加载自定义混淆集、英文拼写纠错,也支持加载kenlm、rnn_crf、seq2seq、BERT等各种模型。可以结合具体领域的fineturn,是一款可应用在工业级的中文纠错软件,可以满足大部分场景中的文本纠错需求.

    问题探讨

    那么中文纠错对下游NLP任务有没有影响?,在这里我就使用PYcorrector做了一个小实验,在一个文本分类任务中,我使用的数据集来自电商评论,其中有部分的错误

    但在使用PYcorrector的时候,我发现PYcorrector确实能找出部分文本中的错误:

    原句


    但更多的是False Positive,比如以下:

    原句

    有这种结果是因为:

    1. 我使用默认的kenlm统计语言模型,要比深度学习模型要差;
    2. 更重要的是我使用的是单品类商品的评价文本,而且没有使用自己的数据做fine-tune,之后再使用通用型的 纠错模型纠错就会使模型"水土不服".

    我把该部分数据在纠错前和纠错后以及分别放在相同的模型中(ALBERT+TextCNN[4])进行实验,得到如下的对比结果:

    效果意料之中的变差了,虽然是次失败的尝试,但起码证明了效果差的纠错会对NLP下游任务造成负面影响。

    后续我将会继续探讨纠错任务对下游NLP任务的影响,主要考虑使用深度学习模型在专门的语料上训练针对性模型

    参考

    1. ^[1] https://arxiv.org/pdf/2005.07421.pdf
    2. ^http://ir.itc.ntnu.edu.tw/lre/sighan7csc.html
    3. ^https://github.com/shibing624/pycorrector
    4. ^https://zhuanlan.zhihu.com/p/164873441
    展开全文
  • http://www.sohu.com/a/340981493_129720
    展开全文
  • 中文文本纠错模型 这里提供三种文本纠错模型的实现 bert语言模型+字音字形相似度 correction_basic.py 缺点: 不能解决多字,少字问题 MLM correction_mlm.py 利用bert的MLM训练机制实现纠错功能 输入: [CLS]错误句子...

    中文文本纠错模型
    这里提供三种文本纠错模型的实现

    bert语言模型+字音字形相似度
    correction_basic.py
    缺点:
    不能解决多字,少字问题
    MLM
    correction_mlm.py 利用bert的MLM训练机制实现纠错功能
    输入: [CLS]错误句子[SEP][MASK][MASK]…[MASK][SEP]
    输出: 正确句子
    seq2seq
    correction_seq2seq.py 使用文本生成的方式生成正确句子
    输入: [CLS]错误句子[SEP][MASK][MASK]…[MASK][SEP
    输出: 正确句子
    * 缺点:推断速度比较慢

    https://github.com/fushengwuyu/chinese_spelling_correction

    展开全文
  • 基于文法模型中文纠错系统

    万次阅读 2018-09-06 00:59:22
    基于文法模型中文纠错系统 徐明 编译 论文地址:http://www.anthology.aclweb.org/W/W14/W14-6827.pdf 相关开源项目:https://github.com/shibing624/pycorrector 摘要 本文介绍了我们的系统在SIGHAN-8...
  • 中文纠错——CRF+N-grams中文纠错的两步任务CRF: Conditional Random Field1. CRF的原理2. CRF在本实验的应用3. 数据预处理N-grams1. N-grams的原理2. N-grams在本实验中的应用代码参考文献: 这是我的web搜索课程...
  • 这个博客用于记录学习《Computer Vision: Models, Learning, and Inference》中文版过程中发现的错误,持续更新。。。 1、P17式(3-18)上方 错误:Tr[Ψ]是矩阵Ψ的秩 纠正:Tr[Ψ]是矩阵Ψ的迹 备注:原文中为...
  • 这是一篇论文翻译论文标题:Spelling Error Correction with Soft-Masked BERT论文地址:...在这篇论文中,我们不失普偏性的讨论中文拼写纠错。使用最先进的bert模型(一个语言表示模型),从语料...
  • 基于统计语言模型中文拼写纠错1.流程图2.实验结果局部方法的实验结果:全局方法的实验结果:3.初步结论缺点:a.SLM对训练语料的规模和质量敏感。b.错词检测策略灵活,变化较多。单纯的局部⽅法和全局方法都应该不...
  • 本文的实践内容包括文件的读取、中文分词、词向量表达、模型构建和模型融合。本文所采用的语料库为复旦中文文本分类语料库,包含20个类别。但是,这个网盘里面只有train一个文件夹,我就自己人工把它分成了训练集和...
  • 中文纠错之N-gram

    千次阅读 2019-06-19 15:12:01
    中文纠错之N-gram1. N-gram介绍2. 公式3. Bi-gram例子4. 评估模型优劣 1. N-gram介绍 N-gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关。整个句子出现的概率就等于各个词出现的概率乘积...
  • 中文文本纠错_论文Spelling Error Correction with Soft-Masked BERT(ACL_2020)学习笔记与模型复现 最近在ACL 2020上看到一篇论文《Spelling Error Correction with Soft-Masked BERT》,论文的主题为中文文本纠错中...
  • 除了crf+ngram这种基于统计纠错的方法外还有一种基于深度学习的seq2seq方法,有简单的注释,有训练集和测试集数据,属于很基础的模型
  •  本文简单地讲解如何使用n-gram模型结合汉字拼音来作中文错别字纠错,然后介绍最短编辑距离在中文搜索纠错方面的应用;最后从依赖树入手讲解如何作文本长距离纠错(语法纠错),并从该方法中得到一种启示,利用依赖...
  • 一、中文:1、Pycorrector:https://github.com/shibing624/pycorrector当前主流的中文纠错框架,支持规则和端到端模型 2、FASPell:https://github.com/iqiyi/FASPell/blob/master论文:...
  • PyCorrector中文文本纠错实战 PyCorrector纠错工具实践和代码详解 模型调参demo 1. 简介 中文文本纠错工具。音似、形似错字(或变体字)纠正,可用于中文拼音、笔画输入法的错误纠正。python3.6开发。 ...
  • 中文汉字错别字纠错方法

    万次阅读 2018-11-03 17:17:07
     本文简单地讲解如何使用n-gram模型结合汉字拼音来作中文错别字纠错,然后介绍最短编辑距离在中文搜索纠错方面的应用;最后从依赖树入手讲解如何作文本长距离纠错(语法纠错),并从该方法中得到一种启示,利用依赖...
  • 文本纠错,是自然语言处理领域检测一段文字是否存在错别字、以及将错别字纠正过来的技术,一般用于文本预处理阶段,同时能显著缓解智能客服等... 文本纠错最优模型:Soft-Masked BERT(2020-ACL)5. 立马上手的纠错工...
  • 一、初始化数据和模型_initialize_detector() 1、数据资源: word_freq通用字典(词:词频) custom_confusion混淆字典(变体:本体) custom_word_freq自定义字典(词:词频<可省略>) person_names人物字典...
  • 纠错

    2020-04-24 18:26:03
    1.百度中文纠错技术 百度中文纠错一方面需要支持多种类型的错误识别,另一方面需要支持不同模态的输入数据,同时还需要提供快速的场景迁移以及深度定制能力。 2.基于语言模型的拼写纠错 给定一个自然语言的句子,...
  • 往期回顾NLP.TM[32] | 浅谈文本增强技术NLP.TM[33] | 纠错:pycorrector的错误检测NLP.TM[34] | 纠错:pycorrector的候选召回NLP.TM[35] | 纠错:pycorrector的候选排序NLP.TM[36] | NLP之源:n-gram语言模型之前...
  • 承接前两篇笔记邓文涛:NLP中文文本分类任务的笔记(一)​zhuanlan.zhihu.com邓文涛:NLP中文...关于细节一些可以参考知乎大神们的一些文章:Transformer 模型的 PyTorch 实现 (推荐研读)《Attention is All You Ne...
  • 这篇主要是为了记录如何进行模型更新和模型评估。模型更新loss functioncross-entropy: 针对多分类(二分类为例) focal-loss: 针对数据不均衡的方式,可以采用(二分类为例) 2. optimizer:gradient descend: Adam: ...
  • BERT模型具有遮罩功能的正确错误字符 实在抱歉,之前做项目比较急,然后没有完全上传完文件,导致大家使用受阻,替换更新有人提醒该模型,近期发生,特意将奉上,提取码为:hhxx另外其中某些得文件也有发表,安心...
  • 在上一篇文章中,我们获取了分词的向量表达,接...不忘初心:最全NLP中文文本分类实践(上)——中文分词获取和Word2Vec模型构建​zhuanlan.zhihu.com1 SVM实现我们确实拥有了词的向量表达,可是,每个文章都包含...
  • ConvSeq2Seq模型:基于Facebook出品的fairseq,北京语言大学团队改进ConvS2S模型用于中文纠错,在NLPCC-2018的中文语法纠错比赛中,是唯一使用单模型并取得第三名的成绩 transformer模型:全attention的结构代替了...

空空如也

空空如也

1 2 3 4
收藏数 77
精华内容 30
关键字:

中文纠错模型