本文《Simple, Fast, Accurate Intent Classification and Slot Labeling》一种联合的框架来同时解决意图识别和槽位标记的任务,文中提出的框架在模型的准确性、模型训练的速度和推理的速度三个方面取得了平衡。
论文地址:
https://arxiv.org/pdf/1903.08268.pdf
概述
意图识别/意图分类(Intent Classification)和槽位填充 (Slot Filling) 是自然语言理解 (Natural Language Understanding, NLU)领域中的两个比较重要的任务。在聊天机器人、智能语音助手等方面有着广泛的应用。
本文提出了一种联合的框架来同时解决意图识别和槽位标记的任务,文中提出的框架在模型的准确性、模型训练的速度和推理的速度三个方面取得了平衡。
模型介绍
本文设计对比了几种不同的方式对输入的语句进行编码,比较各种方式的优劣,最终设计出一个同时兼顾准确率和速度两个方面的指标模型解决此任务。
本文的主要框架如下图所示,其基本思想为:句子的每一个单词经过不同的方式进行编码,形成词上下文编码(word contextualization),然后将词嵌入信息编码形成句子编码信息,最后通过分类确定每一个句子的意图,对每一个词进行分类得到槽位标记的结果。模型的输入为
x
1
:
T
=
{
x
1
,
x
2
,
.
.
.
,
x
T
}
x_{1:T}=\{ x_1,x_2,...,x_T\}
x1:T={x1,x2,...,xT},表示一个句子序列,相应的输出就是计算概率
P
(
l
1
:
T
,
c
∣
x
1
:
T
)
P(l_{1:T},c|x_{1:T})
P(l1:T,c∣x1:T),c表示意图,l表示槽位标记。
本文主要探讨了三种不同的模型来测试模型的准确率和速度:包括全循环(fully recurrent), 标签循环(label-recurrent), 非循环(non-recurrent)。其中全循环和非循环方式就要改变词上下文编码(Word contextualization)的方式,而标签循环是对槽位标记方法进行的探讨。句子编码时就使用基于soft-attention的方式将词编码信息进行融合的方式,意图识别使用2层的全连接网络利用softmax进行分类。
槽位标记分为2种方法:Independent slot prediction、Label-recurrent slot prediction。Independent slot prediction假设在进行槽位标记时,每一个词的标记与前面的结果无关,都是互相独立的,即
P
(
l
i
∣
h
1
:
T
,
l
1
:
i
−
1
)
=
P
(
l
i
∣
h
i
)
P(l_i|h_{1:T},l_{1:i-1})=P(l_i|h_i)
P(li∣h1:T,l1:i−1)=P(li∣hi),而Label-recurrent slot prediction假设每一个标记结果都与前面的词有关,即
P
(
l
i
∣
h
1
:
T
,
l
1
:
i
−
1
)
=
P
(
l
i
∣
l
1
:
i
−
1
,
h
i
)
P(l_i|h_{1:T},l_{1:i-1})=P(l_i|l_{1:i-1},h_i)
P(li∣h1:T,l1:i−1)=P(li∣l1:i−1,hi),这种依赖关系通过LSTM实现。
词上下文编码有3种实现方法:全连接网络、自注意力、卷积网络。全连接网络作为基准网络,其每一个词的表示方式为
h
1
:
T
=
x
1
:
T
+
a
1
:
T
h_{1:T}=x_{1:T}+a{1:T}
h1:T=x1:T+a1:T,其中
x
x
x表示输入,
a
a
a表示编入的位置信息。自注意力的表示方法为
另外一种方法是使用CNN网络表示词的上下文编码
h
1
:
T
=
r
e
l
u
(
0.5
∗
[
C
N
N
(
x
1
:
T
)
+
x
1
:
T
]
)
h_{1:T}=relu(\sqrt{0.5}*[CNN(x_{1:T})+x_{1:T}])
h1:T=relu(0.5∗[CNN(x1:T)+x1:T]),使用不同大小的卷积核来实现多种尺度编码。
实验结果
另外一种方法是使用CNN网络表示词的上下文编码
h
1
:
T
=
r
e
l
u
(
0.5
∗
[
C
N
N
(
x
1
:
T
)
+
x
1
:
T
]
)
h_{1:T}=relu(\sqrt{0.5}*[CNN(x_{1:T})+x_{1:T}])
h1:T=relu(0.5∗[CNN(x1:T)+x1:T]),使用不同大小的卷积核来实现多种尺度编码。
在Snips和ATIS两个数据集上的结果如下面两个表所示,通过使用不同的模型组合,最终在两个数据集是都取得了较好的效果。
在Snips和ATIS两个数据集对比发现,文中提出的三种不同的模型(全循环、标签循环、非循环)对于意图识别的准确率没有太大差别。而对于槽位填充来说,使用多个卷积核和多层卷积网络的F1值最大,加入标签循环时F1值有提高,但是相应的推理速度也会慢。使用自注意力的模型效果较差,可能是因为数据集较小,无法发挥自注意力的优势。
结论
本文提出了一种联合的框架来同时解决意图识别和槽位标记的任务,文中提出的框架在模型的准确性、模型训练的速度和推理的速度三个方面取得了平衡。