Soft-Masked Bert论文阅读记录
论文地址
论文介绍
文本纠错,是自然语言处理领域检测一段文字是否存在错别字、以及将错别字纠正过来的技术,一般用于文本预处理阶段,同时能显著缓解智能客服等场景下语音识别(ASR)不准确的问题。
Soft-Masked Bert的大致原理是基于Bert从句子中的每一个字的候选字组中找到正确的候选字进行纠错。Soft-Maked Bert将文本的纠错任务分为检测网络和纠错网络两个部分,纠错网络的输入来自检测网络的输出,通过soft masking 将检测网络的输出字符特征添加mask embedding进行纠错。
论文原理
检测网络
检测网络的输入是一个包含了n个字符的字符序列X通过embedding处理之后的序列E: X = { x 1 , x 2 , x 3 , . . . , x n } , E = { e 1 , e 2 , e 3 , . . . , e n } X = \lbrace x_1,x_2,x_3,...,x_n \rbrace , E=\lbrace e_1,e_2,e_3,...,e_n\rbrace X={x1,x2,x3,...,xn},E={e1,e2,e3,...,en}其中的 e i e_i ei是 x i x_i xi通过word embedding,position embedding,segment embedding共同处理。
检测网络的输出是一个字符的标签序列 G = { g 1 , g 2 , g 3 , . . . , g n } G= \lbrace g_1,g_2,g_3,...,g_n \rbrace G={g1,g2,g3,...,gn}, g i g_i gi表示当前字符的标签值,其中0代表当前字符无错,1代表当前字符错误。对于每一个字符,使用 p i p_i pi表示当前字符的 g i g_i gi 为1的概率, p i p_i pi值越高表示当前的字符错误可能性越大。 检测网络是由双向GRU组成,利用上下文信息输出 p i p_i pi, p i p_i pi的定义如下: p i = P d ( g i = 1 ∣ X ) = σ ( W d h i d + b d ) p_i=P_d(g_i=1|X)=σ(W_dh^d_i+b_d) pi=Pd(gi=1∣X)=σ(Wdhid+bd)其中的 σ σ σ为sigmoid函数,对于 h i d h_i^d hid的定义: h i 1 d ⃗ = G R U ( h i − 1 d ⃗ , e i ) \vec{h_{i1}^d}=GRU(\vec{h_{i-1}^d},e_i) hi1d=GRU(hi−1d,ei) h i 2 d ⃗ = G R U ( h i + 1 d ⃗ , e i ) \vec{h_{i2}^d}=GRU(\vec{h_{i+1}^d},e_i) hi2d=GRU(hi+1d,ei) h i d ⃗ = [ h i 1 ⃗ ⋅ h i 2 ⃗ ] \vec{h_i^d}=[\vec{h_{i1}}·\vec{h_{i2}}] hid=[hi1⋅hi2]
Soft Masking
Soft Masking相当于是input embedding e i e_i ei、mask embeddings e m a s k e_{mask} emask的加权和,权重为 p i p_i pi,Soft-Masked embedding的表达式如下: e i ′ = p i ∗ e m a s k + ( 1 − p i ) ∗ e i e_i^{'}=p_i*e_{mask}+(1-p_i)*e_i ei′=pi∗emask+(1−pi)∗ei通过表达式可以看出,当 p i p_i pi越高的时候, e i ′ e_i^{'} ei′的值就越接近 e m a s k e_{mask} emask,反之约接近 e i e_i ei。
纠错网络
纠错网络的模型是一个基于BERT的序列多分类标记模型,纠错网络的输入为Soft Masking输出的序列 E ′ = { e 1 ′ , e 2 ′ , e 3 ′ , . . . , e n ′ } E'=\lbrace e_1',e_2',e_3',...,e_n'\rbrace E′={e1′,e2′,e3′,...,en′},输出为纠错完成的字符序列 Y = { y 1 , y 2 , y 3 , . . . , y n } Y=\lbrace y_1,y_2,y_3,...,y_n\rbrace Y={y1,y2,y3,...,yn}。检测网络输出的特征 E ′ E' E′作为BERT的12层Transformer模块的输入 ,其中最后一层的Transformer使用检测网络的输入Emdedding特征 E E E与这一层的输出残差连接作为模型的输出,最终过一遍softmax函数,在候选字表中选取每一个位置的正确字符。 h i ′ = h i c + e i h_i'=h_i^c+e_i hi′=hic+ei
模型的训练
Soft-Masked Bert模型的训练是端到端进行的,训练的数据是由原始句子序列和纠错句子序列组成的
{
(
X
1
,
Y
1
)
,
(
X
2
,
Y
2
)
,
(
X
3
,
Y
3
)
,
.
.
.
,
(
X
n
,
Y
n
)
}
\lbrace (X_1,Y_1),(X_2,Y_2),(X_3,Y_3),...,(X_n,Y_n) \rbrace
{(X1,Y1),(X2,Y2),(X3,Y3),...,(Xn,Yn)}生成训练数据的一种方法是通过给定的字符序列
Y
i
Y_i
Yi,使用困惑字符表中的字符进行生成原始字符序列
X
i
X_i
Xi,模型的损失函数由检测网络和纠错网络加权构成
其中
λ
∈
(
0
,
1
)
λ\in(0,1)
λ∈(0,1)
论文实验结果
实验数据
SIGHAN数据集和新闻标题数据集
实验结果
实验对比了多种CSC模型方法,最终的结果如下图:
实验的结果可以看到经过微调训练的BERT模型相比预训练模型效果有了很大的提升,这个在之前的Faspell项目中也是相同的,微调能极大的提升纠错的效果。
上图是不同训练数据集大小的效果对比,可以看到随着数据集size的增大,检测和纠错的效果都在提升,不过貌似看起来纠错的召回率有点低,比之前我使用FASPELL训练的要低10%左右。