Skip to content

意图识别和槽填充

📅 发表于 2018/05/02
🔄 更新于 2025/07/23
👁️ — 次访问
📝 661 字
3 分钟
自然语言处理
#论文笔记
#意图检测
#槽填充
#RNN
#注意力
#对齐

Attention-Based Recurrent Neural Network Models for Joint Intent Detection and Slot Filling

背景

语义理解的两个方面

1. 语义理解的两个主要方面

在对话系统中,Spoken language understanding(语言理解)很重要。主要是下面两个关键点:

  • 理解说话人的意图 -- 意图检测(Intent Detection)
  • 从句子中提取语义成分 -- 槽填充(Slot Filling)

2. 意图检测

意图检测是一个语义句子的分类问题。可以用SVM、DNN来进行分类。

3. 槽填充

槽填充是要读取句子中的一些语义成分,是一个序列标注问题。可以用MEMMs来做。

4. 处理

传统一般是用两个模型去分别处理意图检测和槽填充,现在可以使用一个模型Encoder-Decoder去同时解决这两个问题。

5. 对齐和注意力

序列标注具有明确的对齐信息。

输入n,输出n,相同长度。输入和输出每一个位置严格对齐。Alignment-based RNN。

输入n,输出m,不同长度,本身不具有对齐信息。需要注意力机制来进行对齐。Attention-based Encoder-Decoder。

槽填充

1. 问题

槽填充是一个序列标注问题,具有明确的对齐信息。

句子firstclassfaresfromBostontoDenver
SlotsB-机舱类别I-机舱类别OOB-出发地OB-目的地

意图:订机票。

本质上是学得一个映射函数XY。训练样本:{(x(n),y(n)),n=1,,N}

2. RNN 槽填充

符号定义

  • x :输入序列
  • y :输出序列
  • yt :第t个单词的slot lable

预测yt,需要xyt1

训练是找到一个最大的使概率似然最大的参数θ

argmaxθP(ytyt1,x;θ)

预测是找到最大概率的标记序列y

y^=argmaxyP(yx)

3. RNN Encoder-Decoder 槽填充

序列标注有明确的对齐信息,所以先没有使用注意力机制。把x编码为语义向量c

P(y)=t=1TP(ytyt1,c)

Seq2Seq可以处理不同长度的映射信息,这时没有明确的对齐信息。但是可以使用注意力机制来进行软对齐Soft Alignment

两种方法

Seq2Seq方法

Encoder-Decoder with Aligned Inputs

1. 编码

使用双向RNN对输入序列进行编码,hi=[fhi,bhi]

2. 意图识别

最后时刻的隐状态hT携带了整个句子的信息,使用它进行意图分类。

3. 槽填充

用单向RNN作为Decoder。初始s0=hT。有3种方式:

a. 只有注意力输入

b. 只有对齐输入

c. 有注意力和对齐两个输入

4. 带注意力和对齐输入的RNN槽填充计算方式

s0=hT

计算注意力的上下文ci

αij=softmax(eij)eij=g(si1,hk)ci=j=1Tαijhj

计算新的状态

si=f(si1,yi1,hi,ci)

基于注意力的RNN

总访客数:— · 总访问量:—
PLM's Blog @ 2016 - 2026