赞
踩
神经网络模型和正则表达式等符号规则在各项任务上各有优劣。本文将正则表达式转换为神经网络,研究两种方法结合来完成槽填充任务。在zero-shot和few-shot的情况下仍有着良好的表现。
符号 | 意义 |
---|---|
$ | 词的通配符 |
OO | 标签的通配符 |
<:> | 词的标志 |
Example 1
// fromloc.city_name
$<:>OO * from $<:>B-fromloc.city_name $<:>I-fromloc.city_name ? to $<:>OO *
Example 2
// aircraft_code
@aircraft_code@=(767|737|747|757|dc10|f28|72s)
$<:>OO * @aircraft_code<:>aircraft_code@ $<:>OO *
处理流程
Example 1 parsed
$<:>OO * from<:>O $<:>B-fromloc.city_name $<:>I-fromloc.city_name ? to<:>O $<:>OO *
Example 2 parsed
$<:>OO * ( 767<:>B-aircraft_code | 737<:>B-aircraft_code | 747<:>B-aircraft_code | 757<:>B-aircraft_code | dc10<:>B-aircraft_code | f28<:>B-aircraft_code | 72s<:>B-aircraft_code ) $<:>OO *
Example(该例题出自Google book)
DFA
Example
1. 将M的状态分为两个子集一个由终态k1={C,D,E,F}组成,一个由非终态k2={S,A,B}组成
2. 考察{S,A,B}是否可分
3. 考察{S,B}是否可再分
4. 考察{C,D,E,F}是否可再分
5. {C,D,E,F}以{D}来代替,因为CDEF相同,也可以用C、E、F来代替。最小化的DFA如图:
Example 1
$<:>OO * from<:>O $<:>B-fromloc.city_name $<:>I-fromloc.city_name ? to<:>O $<:>OO *
Example 2
$<:>OO * ( 767<:>B-aircraft_code | 737<:>B-aircraft_code | 747<:>B-aircraft_code | 757<:>B-aircraft_code | dc10<:>B-aircraft_code | f28<:>B-aircraft_code | 72s<:>B-aircraft_code ) $<:>OO *
FST
i-FST
一个有限状态自动机可以定义为一个六元组: τ = < Q , Σ , Γ , Q I , Q F , Ω > \tau = <Q, \Sigma, \Gamma, Q_I, Q_F, \Omega > τ=<Q,Σ,Γ,QI,QF,Ω>
于是我们可以用一个4阶的tensor:
T
Ω
∈
R
V
×
L
×
K
×
K
T_\Omega \in R^{V \times L \times K \times K}
TΩ∈RV×L×K×K 来表示转移权值,两个K维向量
u
u
u和
v
v
v来表示起始和终止状态的权值,权值为0/1。路径
w
1
,
.
.
.
,
w
m
w_1,...,w_m
w1,...,wm 与起始状态
q
i
q_i
qi 和终止状态
q
j
q_j
qj 得分计算公式如下:
μ
[
i
]
⋅
(
∏
k
=
1
m
T
Ω
(
w
k
)
)
⋅
v
[
j
]
\mu [i] · (\prod^{m}_{k=1}T_\Omega(w_k)) · v[j]
μ[i]⋅(k=1∏mTΩ(wk))⋅v[j]
给定一个序列
x
=
x
1
,
.
.
.
,
x
m
x=x_1,...,x_m
x=x1,...,xm ,通过FST推理出输出标签
y
=
y
1
,
.
.
.
,
y
m
y=y_1,...,y_m
y=y1,...,ym。
y
y
y 的得分定义为所有匹配输入和输出的接受路径的得分和,但是直接找到一个序列的最高得分已经被证明是NP-Hard,于是采用如下算法做近似推理:
四阶的tensor导致了如下几个问题:
基于i-FST的独立性,可以改用一个3阶的tensor:
T
∈
R
V
×
K
×
K
T \in R^{V \times K \times K}
T∈RV×K×K 来表示给定输入状态直接的转换,同时用一个矩阵表示结束状态到输出标签的映射
O
∈
R
K
×
L
O \in R^{K \times L}
O∈RK×L。原本的4阶tensor可以表示为:
T
Ω
[
σ
,
γ
,
i
,
j
]
=
T
[
σ
,
i
,
j
]
×
O
[
j
,
γ
]
T_\Omega[\sigma,\gamma,i,j]=T[\sigma,i,j] \times O[j,\gamma]
TΩ[σ,γ,i,j]=T[σ,i,j]×O[j,γ]。i-FST的近似推理算法如下:
应用CP Decomposition(CPD)将T分解成三个矩阵
E
R
∈
R
V
×
R
,
D
S
∈
R
K
×
R
,
D
E
∈
R
K
×
R
E_R \in R^{V \times R}, D_S \in R^{K \times R}, D_E \in R^{K \times R}
ER∈RV×R,DS∈RK×R,DE∈RK×R,R是秩(rank)一个超参数。Algorithm 2中的第5行修改成:
v
t
=
E
R
[
x
t
]
g
=
(
α
t
−
1
⋅
D
s
∘
v
t
)
α
t
=
(
g
⋅
D
E
T
)
∘
o
T
v_t=E_R[x_t] \\ \quad \\ g=(\alpha_{t-1}·D_s \circ v_t) \\ \quad \\ \alpha_t=(g·D^T_E) \circ o^T
vt=ER[xt]g=(αt−1⋅Ds∘vt)αt=(g⋅DET)∘oT
E
R
∈
R
V
×
R
E_R \in R^{V \times R}
ER∈RV×R 被看作是由原正则表达式导出的特殊的词嵌入矩阵。
v
t
v_t
vt 则是词
x
t
x_t
xt 从
E
R
E_R
ER 中选出的embedding.
同样地,修改第8行为:
v
t
=
E
R
[
x
t
]
α
=
(
(
β
t
∘
o
T
)
⋅
D
E
)
∘
v
t
β
t
−
1
=
(
α
⋅
D
S
T
)
v_t=E_R[x_t] \\ \quad \\ \alpha = ((\beta_t \circ o^T)·D_E) \circ v_t \\ \quad \\ \beta_{t-1}=(\alpha·D^T_S)
vt=ER[xt]α=((βt∘oT)⋅DE)∘vtβt−1=(α⋅DST)
令
E
w
∈
R
V
×
D
E_w \in R^{V \times D}
Ew∈RV×D 表示要合并的词嵌入矩阵,
E
w
[
x
t
]
E_w[x_t]
Ew[xt] 则表示词
x
t
x_t
xt 的 D维词向量。引入一个
D
×
R
D \times R
D×R维的可训练矩阵
G
G
G 将预训练词向量从D维转为R维。
G
G
G 初始化为
E
w
t
E
R
E_w^{t}E_R
EwtER,
E
w
t
E_w^t
Ewt 是
E
w
E_w
Ew 的伪逆,
E
w
[
x
t
]
⋅
G
E_w[x_t]·G
Ew[xt]⋅G 近似于
E
R
[
x
t
]
E_R[x_t]
ER[xt]。对这两个R维向量利用超参数
η
\eta
η 进行插值得到新的
v
t
v_t
vt。
v
t
=
η
E
R
[
x
t
]
+
(
1
−
η
)
E
w
[
x
t
]
⋅
G
v_t=\eta E_R[x_t]+(1-\eta)E_w[x_t]·G
vt=ηER[xt]+(1−η)Ew[xt]⋅G
首先采用两种方法获得一个中间的静态词嵌入矩阵 E w ∈ R V × D E_w \in R^{V \times D} Ew∈RV×D
首先将每个位置的标签得分输入一个优先级层解决不同捕获组捕获同一个词的冲突问题。优先级关系由人类专家决定,表示为一组逻辑规则。我们利用MLP将这些规则应用,以
c
t
c_t
ct 为输入并输出一个更新后的向量
c
t
c_t
ct`
∈
R
L
\in R^L
∈RL。
FSTRNN-Softmax
在解码之前,设定一个阈值 τ ∈ ( 0 , 1 ) \tau \in (0, 1) τ∈(0,1) 处理通配符 l ∘ l_\circ l∘, l ∘ l_\circ l∘ 代表不确定,在这种情况下输出label O。FSTRNN-Softmax解码算法如下:
FSTRNN-CRF
同样地,利用阈值处理通配符 l ∘ l_\circ l∘ 。然后将标签分数作为CRF的发射分数,并用维特比算法产出输出序列。最后将通配符 l ∘ l_\circ l∘ 换为 O。FSTRNN-CRF解码算法如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。