《A Survey on Spoken Language Understanding: Recent Advances and New Frontiers》(github) 是一篇2021年发表的关于口语理解的综述。
注:论文本身只是对SLU做了一个介绍,参考github](https://github.com/yizhen20133868/Awesome-SLU-Survey)的论文索引可找到感兴趣的论文。此外,github还包括了IJCAI 2022的tutorial连接,里面的ppt可作为模型理解参考;以及OpenSLU实现了一些单意图和多意图模型。
SLU的相关概念
口语理解(Spoken Language Understanding (SLU))是任务型对话系统的核心组件,通常包括两个任务:意图识别(intent detection)和槽位填充(slot filling),比如论文图1例子“I like to watch action moive”,SLU的输出包括意图类别标签(WatchMoive)和槽位标签序列(O, O, O, B-movie-type, I-movie-type, I-movie-type)。
意图识别(Intent Detection):给定输入语句
X
=
(
x
1
,
…
,
x
n
)
X=(x_1,\ldots,x_n)
X=(x1,…,xn)(n指X的长度),可将意图识别看作一个句子分类任务来决定意图标签
o
I
o^I
oI,用公式表示如下式:
o
I
=
Intent-Detection
(
X
)
(
1
)
o^I = \text{Intent-Detection}(X) \qquad \qquad (1)
oI=Intent-Detection(X)(1)
槽位填充(Slot Filling):槽位填充可被当做一个序列标注任务,它输出一个槽位序列
o
S
=
(
o
1
S
,
…
,
o
n
S
)
o^S = (o^S_1, \ldots, o^S_n)
oS=(o1S,…,onS),公式记为下式:
o
S
=
Slot-Filling
(
X
)
o^S = \text{Slot-Filling}(X)
oS=Slot-Filling(X)
联合模型(Join Model):联合模型可同时预测意图类别和槽位序列,这意味着可以捕捉到相关任务的共享知识:
(
o
I
,
o
S
)
=
Joint-Model
(
X
)
(o^I, o^S) = \text{Joint-Model}(X)
(oI,oS)=Joint-Model(X)
较常用的两个SLU数据集为ATIS和SNIPS:
-
ATIS:包括航班预定的语音记录,训练集数据4478条,验证集数据500条,测试集数据500条。它包含21个意图类别,120个槽位标签。
-
SNIPS:由Snips收集的客户意图,训练集数据13084条,验证集数据700条,测试集数据700条。它包括7个意图类别,72个槽位标签。
SLU的评估指标如下:
- F1分数(F1 scores):F1分数是用来评估槽位填充的指标,当槽位预测与槽位标签完全匹配时时说明预测正确。
- 意图准确率(Intent Accuracy):意图准确率用来评估意图识别的性能,计算意图被正确预测的比例。
- 整体准确率(Overall Accuracy):一个句子意图和槽位都被预测正确占所有句子的比例。
SLU模型分类
单模型
单模型将意图识别和槽位填充任务分别进行训练,如论文图3(a)所示意。
意图识别:很多句子分类模型被用于意图识别,CNN、RNN、LSTM都被用于意图识别。
槽位填充:流行的槽位填充模型一般都包括CRF。
论文表1总结了单模型在ATIS数据集上意图识别和槽位填充的效果。使用单模型的工作基本都在2016年之前。
联合模型
因为意图识别和槽位填充之间是相互依赖的,比如如果用户的意图是WatchMovie,槽位更可能包括电影名称槽位,而不是音乐名称槽位。所以文献中主流的工作是采用联合模型来利用任务间的共享知识。现有的联合模型工作可被分类成两个主要类别:隐式联合建模(implicit joint modeling)和显式联合建模(explicit joint modeling)。
- 隐式联合建模:隐式联合模型只共享encoder,如论文图3(b)所示意。
- 显式联合建模: 如论文图3©所示意,用一个显示交互模块来显式地建模意图识别和槽位填充之间的交互。现有的显式联合建模分为单向流交互(single flow interaction)和双向流交互(bidirectional flow interaction)。单向流交互主要考虑从意图到槽位的单向信息,让槽位填充考虑学到的意图信息。双向流交互则考虑意图识别和槽位填充之间的双向交互。
论文表2比较了联合模型在ATIS和SNIPS上的评估效果。
相比于隐式联合模型,显式联合模型有如下优势:1. 仅仅通过共享隐藏表征的多任务框架来隐式地考虑两个任务之间的互相联系,无法达到想要的效果,而显式联合模型可以使模型充分地捕捉到任务间的共享知识,这会带来两个任务性能的提升。2. 显式控制任务间的知识迁移可以提升可解释性,因为意图识别和槽位填充之间的相互影响更容易分析。
预训练范式
随着BERT在2018年后开始流行之后,也出现了很多使用预训练模型的SLU方法,一般使用[CLS]的表征来进行意图识别,使用其他token的表征进行槽位填充,如论文图3(d)所示意。
挑战
前一节介绍的SLU模型基本上只是在进行单领域和单轮(single-turn)的语言理解,这在现实场景的应用是不够的。论文第四部分就介绍了一些更复杂的场景和挑战。
基于上下文的SLU
在完成一个任务的过程中,用户和对话系统通常需要进行多轮对话,这要求系统有上下文理解能力。 基于上下文的SLU(contextual SLU)需要利用上下文信息来理解用户当前轮的问题。面临的挑战有:
- 上下文信息集成:如何利用历史对话来理解当前轮次对话;
- 长距离障碍:有些对话有很长的历史记录,需要有效地建模长距离历史对话以及过滤不相关噪声。
多意图SLU
论文《Joint multiple intent detection and slot labeling for goaloriented dialog》表明在亚马逊内部数据集里有52%的数据是多意图(multi-intent),所以在实际应用场景里多意图设置是有必要的。多意图SLU的进展缓慢的挑战有:
- 多意图和槽位之间如何交互,因为有多个意图,就要考虑槽位具体是对应于哪个槽位了。
- 缺少多意图SLU人工标注数据集
中文SLU
中文因为要分词,相比英文SLU的挑战更大,面临的主要挑战有:
- 如果利用词信息来进行中文SLU
- 存在不同的分词标准,如果有效组合不同的分词信息。
跨领域SLU
SLU模型单领域中取得了良好的性能,但现有的 SLU模型依赖于大量带标注的数据,这限制了它们在新领域和扩展领域中的实用性。在实践中,为每个新领域收集丰富的标记数据集是不可行的。
目前跨领域方法分为两类:具有参数共享的隐式领域知识迁移(Implicit domain knowledge transfer)和显式领域知识迁移(explicit domain knowledge transfer)。隐式领域知识转移意味着模型简单地组合多领域数据集进行训练以捕获领域特征。显式领域知识转移方法表示模型使用共享私有框架,包括捕获领域共享特征的共享模块和每个领域的私有模块,其优点是显式区分共享知识和私有知识。主要挑战有:
- 如何进行领域知识迁移
- 当目标领域没有训练数据时,如果进行zero-shot知识迁移
跨语言SLU
跨语言SLU意味着以英语训练的SLU系统可以直接应用于其他低资源语言(在大模型时代,感觉这个问题已经好了很多)。主要挑战有:
- 源语言和目标语言之间的对齐
- 泛化性,能否训练一个可泛化到所有语言的模型。
低资源SLU
低资源(Low-resource) SLU包括few-shot SLU, Zero-shot SLU, Unsupervised SLU。