当前位置:网站首页>文本纠错--CRASpell模型
文本纠错--CRASpell模型
2022-06-13 11:21:00 【xuanningmeng】
文本纠错–CRASpell模型
CRASpell: A Contextual Typo Robust Approach to Improve Chinese Spelling Correction 这篇论文是发表于22年ACL,在Chinese spelling correction (CSC)任务上是SOTA。基于bert预训练模型的CSC的模型有两个极限:
(1) 在多错误文本上模型效果不好,通常在拼写错误的文本,拼写错误字符至少出现1次,这会带来噪声,这种噪声文本导致多错字文本的性能下降。
(2) 由于bert掩码任务,这些模型过度校正偏向于高频词的有用表达词。
CRASpell模型每一个训练样本构建一个有噪声的样本,correct 模型基于原始训练数据和噪声样本输出更相似的输出,为了解决过度校正问题,结合了复制机制来使得我们的模型在错误校正和输入字符根据给定上下文都有效时选择输入字符。
文章地址为:文章
代码地址为:code
模型
任务描述
中文拼写纠错的目的是检测和纠正文本中的拼写错误。通常表述为 X = { x 1 , x 2 , … , x n } \Large\boldsymbol{X} = \{x_{1}, x_{2}, \dots, x_{n}\} X={ x1,x2,…,xn}是长度为 n n n的包含拼写错误的文本, Y = { y 1 , y 2 , … , y n } \Large\boldsymbol{Y} = \{y_{1}, y_{2}, \dots, y_{n}\} Y={ y1,y2,…,yn}是长度为 n n n的正确文本,模型输入 X \Large\boldsymbol{X} X生成正确的文本 Y \Large\boldsymbol{Y} Y.
CRASpell 模型

左边是Correction模型,右边是Noise模型,下面详细介绍模型。
(1) Correction Module
给定输入文本 X = { x 1 , x 2 , … , x n } \Large\boldsymbol{X} = \{x_{1}, x_{2}, \dots, x_{n}\} X={ x1,x2,…,xn}得到embedding 向量 E = { e 1 , e 2 , … , e n } \Large\boldsymbol{E} = \{e_{1}, e_{2}, \dots, e_{n}\} E={ e1,e2,…,en},其中每一个字符 x i x_{i} xi对应的embedding向量记为 e i e_{i} ei,将 E \Large\boldsymbol{E} E输入到Transformer Encoder中得到hidden state matrix H = { h 1 , h 2 , … , h n } \Large\boldsymbol{H} = \{h_{1}, h_{2}, \dots, h_{n}\} H={ h1,h2,…,hn},其中 h i ∈ R 768 h_{i}\in\Large\boldsymbol{R}^{768} hi∈R768是字符 x i x_{i} xi经过Transformer Encoder得到特征。
(2) Generative Distribution
X = { x 1 , x 2 , … , x n } \Large\boldsymbol{X} = \{x_{1}, x_{2}, \dots, x_{n}\} X={ x1,x2,…,xn}经过Transformer Encoder得到特征向量 H = { h 1 , h 2 , … , h n } \Large\boldsymbol{H} = \{h_{1}, h_{2}, \dots, h_{n}\} H={ h1,h2,…,hn},经过一个前向线性层和一个softmax层得到每个一字符token的生成概率,公式如下:
p g = s o f t m a x ( W g h i + b g ) p_{g} = softmax(W_{g}h_{i} + b_{g}) pg=softmax(Wghi+bg)
其中 W g ∈ R n v × 768 W_{g}\in \Large\boldsymbol{R}^{n_{v}\times768} Wg∈Rnv×768, b g ∈ R 768 b_{g}\in \Large\boldsymbol{R}^{768} bg∈R768, n v n_{v} nv是预训练模型词表的大小。
(3) Copy Distribution
x i x_{i} xi的copy distribution p c ∈ { 0 , 1 } n v p_{c} \in \{0,1\}^{n_{v}} pc∈{ 0,1}nv是 x i x_{i} xi在字典中的 i d x ( x i ) idx(x_{i}) idx(xi)的one-hot 表示,具体表示如下:
(4) Copy Probability
Copy Probability是模型图中的Copy Block中的输出$\omega \in\Large\boldsymbol{R}$,即transformers encoder 得到的隐藏层特征向量$h_{i}$经过两个前向线性层和一个layer normalization得到$\omega$,具体公式如下:
h c = W c h f l n ( h i ) + b c h h c ′ = f l n ( f a c t ( h c ) ) ω = S i g m o i d ( W c h c ′ ) h_{c} = W_{ch}f_{ln}(h_{i}) + b_{ch} \\ h_{c}^{'} = f_{ln}(f_{act}(h_{c})) \\ \omega = Sigmoid(W_{c}h_{c}^{'}) hc=Wchfln(hi)+bchhc′=fln(fact(hc))ω=Sigmoid(Wchc′)
其中 W c h ∈ R 768 × d c W_{ch}\in\Large\boldsymbol{R}^{768\times d_{c}} Wch∈R768×dc, b c h ∈ R d c b_{ch} \in \Large\boldsymbol{R}^{d_{c}} bch∈Rdc, W c ∈ R d c × 1 W_{c}\in\Large\boldsymbol{R}^{d_{c}\times 1} Wc∈Rdc×1, f l n f_{ln} fln是layer normalization, f a c t f_{act} fact是激活函数,在代码使用的激活函数为glue.详细见代码
Copy Block输出概率 p p p结合了生成Generative Distribution p g p_{g} pg和Copy Distribution p c p_{c} pc
p = ω × p c + ( 1 − ω ) × p g p = \omega\times p_{c} + (1 - \omega)\times p_{g} p=ω×pc+(1−ω)×pg
与之前CSC模型的不同之处在于,CRASpell模型在模型最终生成输出考虑了Copy Probability p c p_{c} pc,使得模型在输入字符有效但不是最适合 BERT 时有更多机会选择输入字符,避免过度矫正。
(5) Noise Modeling Module
Noise Modeling Module通过校正模型为原始上下文和噪声上下文产生相似的分布来解决上下文错字干扰问题。 如上面模型图的右侧,Noise Modeling Module 大致分为下面几个过程:
a. 根据输入样本 X \Large\boldsymbol{X} X生成噪声上下文 X ~ \Large\widetilde{\boldsymbol{X}} X
b. 将噪声上下文 X ~ \Large\widetilde{\boldsymbol{X}} X作为输入得到Transformer Encoder得到隐藏特征向量 H ~ \widetilde{\boldsymbol{H}} H
c. 根据隐藏特征向量 H ~ \widetilde{\boldsymbol{H}} H生成生成分布 p g ~ \widetilde{p_{g}} pg
d. 生成分布与校正模型生成的分布相似。生成分布与校正模型生成的分布相似这个是通过minimizing the bidirectional Kullback-
Leibler divergence体现,具体公式如下:
L K L = 1 2 ( D K L ( p g ∥ p g ~ ) + D K L ( p g ~ ∥ p g ) ) \mathcal{L}_{KL} = \frac{1}{2}(\mathcal{D}_{KL}(p_{g}\Vert\widetilde{p_{g}}) + \mathcal{D}_{KL}(\widetilde{p_{g}}\Vert p_{g})) LKL=21(DKL(pg∥pg)+DKL(pg∥pg))
备注:Noise Modeling Module仅在训练过程中出现,模型推理只使用校正网络
Noisy Block
下面介绍数据添加噪声数据。通过替换原始训练样本的字符来生成噪声样本。在替换字符的过程中只替换拼写错误字符上下文附近 d t d_{t} dt个词,如果训练样本没有拼写错误,该样本不进行替换生成噪声样本。如下图所示:
d t d_{t} dt选择实验结果
我们根据公开可用的混淆集将每个选择的位置替换为相似的字符。 具体来说,我们选取位置处的词进行替换
(i) 70% 的替换随机选择语音相似字符
(ii) 15% 的替换随机选择字形相似字符
(iii) 15% 的替换从词汇表中的随机选择。
Loss
给定训练样本 ( X , Y ) (\Large\boldsymbol{X}, \Large\boldsymbol{Y}) (X,Y), X \Large\boldsymbol{X} X是输入错误样本, Y \Large\boldsymbol{Y} Y是校正正确样本,每一个校正正确样本 Y i \Large\boldsymbol{Y_{i}} Yi的loss为
L c i = − log ( p ( Y i ∣ X ) ) \mathcal{L}_{c}^{i} = -\log(p(\Large\boldsymbol{Y_{i}}|\Large\boldsymbol{X})) Lci=−log(p(Yi∣X))
其中 p p p为
p = ω × p c + ( 1 − ω ) × p g p = \omega\times p_{c} + (1 - \omega)\times p_{g} p=ω×pc+(1−ω)×pg
详细见上面介绍。
模型loss为 L \mathcal{L} L
L i = ( 1 − α i ) L c i + α i L K L i \mathcal{L}^{i} = (1 - \alpha_{i})\mathcal{L}_{c}^{i} + \alpha_{i} \mathcal{L}_{KL}^{i} Li=(1−αi)Lci+αiLKLi
其中 α i \alpha_{i} αi
其中 α \alpha α是 L c \mathcal{L}_{c} Lc和 L K L \mathcal{L}_{KL} LKL的权衡因子。构建的噪声样本本身不会参与训练过程,而只会作为上下文参与。这个策略旨在确保构造的噪声数据不会改变训练语料中正负样本的比例。
实验结果
后期补充sighan数据集上的结果。
CRASpell模型实验结果
边栏推荐
- Socket programming (medium)
- [tcapulusdb knowledge base] tcapulusdb doc acceptance - table creation approval introduction
- Multiplicative inverse action
- 基于Vue+Nest.js+MySQL的跨平台开源社区运营管理系统
- 1051. 高度检查器
- Digital DP example
- TS進階之條件類型
- Go needs to add an arrow syntax, which is more like PHP!
- 2020 ICPC Asia Taiwan Online Programming Contest C Circles
- Discord机器人开发
猜你喜欢

元宇宙土地:是什么让数字房地产变得有价值

【TcaplusDB知识库】TcaplusDB单据受理-建表审批介绍

状态压缩DP例题(旅行商问题和填矩形问题)

Use of servers

Do you agree that the salary of hardware engineers is falsely high?

Interval modification multiplication and addition (a good example of understanding lazy tags)
![[tcapulusdb knowledge base] tcapulusdb Model Management Introduction](/img/2a/2a3d1b813ea6ed58695e9deac05b0d.png)
[tcapulusdb knowledge base] tcapulusdb Model Management Introduction

Miidock file distribution

Anonymity in Web3 and NFT

MIIdock文件分布
随机推荐
About SAP Spartacus cmsservice Possible optimization ideas for getcomponentdata
Web3 系统构建:去中心化的原则、模型和方法(上)
(幼升小信息-04)如何用手机WPS在PDF上进行电子签名
[tcapulusdb knowledge base] Introduction to tmonitor background one click installation (II)
22. Class E power amplifier design of ads usage record (Part 2)
MIIdock文件分布
Multiplicative inverse action
Web3和NFT中的匿名性问题
抖音如此重视直播销售外卖套餐,会不会是创业者巨大机会?
【Verilog向SystemVerilog过渡遇到的问题】~ 信号变量类型的转变、 == 和 ===的区别
Socket programming (Part 1)
Nim游戏阶梯 Nim游戏和SG函数应用(集合游戏)
Acwing game 55
我是如何解决码云图床失效问题?
[tcapulusdb knowledge base] Introduction to tmonitor background one click installation (I)
Four methods of finding combinatorial numbers
VSCode 如何将已编辑好的文件中的 tab 键转换成空格键
Easyclick run code snippet out null
The leader said he would go online tomorrow, but he didn't know the development process at all
Actual combat analysis of malicious code lab05-01