文章目录

  • Soft-Masked Bert论文阅读记录
  • 论文地址
  • 论文介绍
  • 论文原理
  • 检测网络
  • Soft Masking
  • 纠错网络
  • 模型的训练
  • 论文实验结果
  • 实验数据
  • 实验结果


Soft-Masked Bert论文阅读记录

论文介绍

文本纠错,是自然语言处理领域检测一段文字是否存在错别字、以及将错别字纠正过来的技术,一般用于文本预处理阶段,同时能显著缓解智能客服等场景下语音识别(ASR)不准确的问题。

Soft-Masked Bert的大致原理是基于Bert从句子中的每一个字的候选字组中找到正确的候选字进行纠错。Soft-Maked Bert将文本的纠错任务分为检测网络和纠错网络两个部分,纠错网络的输入来自检测网络的输出,通过soft masking 将检测网络的输出字符特征添加mask embedding进行纠错。

论文原理

检测网络

检测网络的输入是一个包含了n个字符的字符序列X通过embedding处理之后的序列E:hanlp文本纠错本地使用_hanlp文本纠错本地使用其中的hanlp文本纠错本地使用_python_02hanlp文本纠错本地使用_人工智能_03通过word embedding,position embedding,segment embedding共同处理。

检测网络的输出是一个字符的标签序列hanlp文本纠错本地使用_自然语言处理_04,hanlp文本纠错本地使用_人工智能_05表示当前字符的标签值,其中0代表当前字符无错,1代表当前字符错误。对于每一个字符,使用hanlp文本纠错本地使用_hanlp文本纠错本地使用_06表示当前字符的hanlp文本纠错本地使用_人工智能_05 为1的概率,hanlp文本纠错本地使用_hanlp文本纠错本地使用_06值越高表示当前的字符错误可能性越大。 检测网络是由双向GRU组成,利用上下文信息输出hanlp文本纠错本地使用_hanlp文本纠错本地使用_06hanlp文本纠错本地使用_hanlp文本纠错本地使用_06的定义如下:hanlp文本纠错本地使用_Soft_11其中的hanlp文本纠错本地使用_hanlp文本纠错本地使用_12为sigmoid函数,对于hanlp文本纠错本地使用_人工智能_13的定义:hanlp文本纠错本地使用_自然语言处理_14hanlp文本纠错本地使用_Soft_15hanlp文本纠错本地使用_python_16

Soft Masking

Soft Masking相当于是input embedding hanlp文本纠错本地使用_python_02、mask embeddings hanlp文本纠错本地使用_人工智能_18的加权和,权重为hanlp文本纠错本地使用_hanlp文本纠错本地使用_06,Soft-Masked embedding的表达式如下:hanlp文本纠错本地使用_python_20通过表达式可以看出,当hanlp文本纠错本地使用_hanlp文本纠错本地使用_06越高的时候,hanlp文本纠错本地使用_python_22的值就越接近hanlp文本纠错本地使用_人工智能_18,反之约接近hanlp文本纠错本地使用_python_02

纠错网络

纠错网络的模型是一个基于BERT的序列多分类标记模型,纠错网络的输入为Soft Masking输出的序列hanlp文本纠错本地使用_人工智能_25,输出为纠错完成的字符序列hanlp文本纠错本地使用_人工智能_26。检测网络输出的特征hanlp文本纠错本地使用_自然语言处理_27作为BERT的12层Transformer模块的输入 ,其中最后一层的Transformer使用检测网络的输入Emdedding特征hanlp文本纠错本地使用_人工智能_28与这一层的输出残差连接作为模型的输出,最终过一遍softmax函数,在候选字表中选取每一个位置的正确字符。hanlp文本纠错本地使用_自然语言处理_29

模型的训练

Soft-Masked Bert模型的训练是端到端进行的,训练的数据是由原始句子序列和纠错句子序列组成的hanlp文本纠错本地使用_自然语言处理_30生成训练数据的一种方法是通过给定的字符序列hanlp文本纠错本地使用_Soft_31,使用困惑字符表中的字符进行生成原始字符序列hanlp文本纠错本地使用_python_32,模型的损失函数由检测网络和纠错网络加权构成

hanlp文本纠错本地使用_python_33


hanlp文本纠错本地使用_Soft_34


其中hanlp文本纠错本地使用_自然语言处理_35

论文实验结果

实验数据

SIGHAN数据集和新闻标题数据集

实验结果

实验对比了多种CSC模型方法,最终的结果如下图:

hanlp文本纠错本地使用_python_36


实验的结果可以看到经过微调训练的BERT模型相比预训练模型效果有了很大的提升,这个在之前的Faspell项目中也是相同的,微调能极大的提升纠错的效果。

hanlp文本纠错本地使用_自然语言处理_37

上图是不同训练数据集大小的效果对比,可以看到随着数据集size的增大,检测和纠错的效果都在提升,不过貌似看起来纠错的召回率有点低,比之前我使用FASPELL训练的要低10%左右。