我们知道,通常自然语言理解任务(natural language understanding, NLU)可以被分为词槽填充(slot filling)以及意图检测(intent detection)两个子任务。例如,用户输入一个自然语言句子,词槽填充在词语层面标注出每个词的类型,意图检测则在句子层面对其意图进行分类。
目前词槽填充常被作为序列标注问题进行处理,使用 RNN/CNN 学习得到词表示,再使用 CRF 来推测词槽类型。已有的一些将两个任务联合训练的工作是将词槽填充中 RNN 的最后一个隐藏层或者注意力权重求和,用来训练句子层面的意图检测。其存在的问题是没有考虑到词语、词槽以及意图之间的层级关系。
本文提出了 CapsuleNLU,使用带有动态路由(dynamic routing)的胶囊网络(capsule neural network)在词槽建模以及意图建模之间建立联系,其主要贡献有以下三点:(1) 通过层次化的胶囊神经网络结构,将话语,语段和意图之间的层次关系封装起来。(2) 提出一种具有 rerouting 功能的动态路由方案,以实现联合插槽填充和意图检测的协同效果。
(3) 在两个真实的数据集上展示本文模型的有效性,并与现有模型以及商业 NLU 服务进行比较。
本文在 SNIPS、ATIS 数据集上对 CapsuleNLU 进行了评估,作为 baseline 的模型有:CNN TriCRF, RNN, Attention BiRNN, Slot-gated Full Atten (gate function in LSTM), DR-AGG (使用动态路由为文本分类聚合词层面的信息), IntentCapsNet (使用多头自注意力机制从句子中获取中间语义信息),此外,本文还与 DialogFlow, Waston Assistant, Luis, wit.ai, snips.ai, recast.ai, Amazon Lex 等商业 NLU 服务进行了对比实验。
结果表明,本文提出的的方法优于之前的一些工作,刷新了联合训练词槽填充与意图检测的 SOTA,与一些商业 NLU 服务的效果也比较接近(需要注意的是,本文模型中并未引入 GloVe、ELMo、BERT 等预训练模型,其词表示全部通过 WordCaps 学习得到)。