NLU误召问题解决绪论

第一章 NLU误召问题解决绪论

  • 第一章 NLU误召问题解决绪论
  • 第二章 数据层面降低NLU误召-构造误召语料

文章目录

  • 第一章 NLU误召问题解决绪论
  • 前言
  • 理论
    • NLU DIS
      • 1. 领域分类
      • 2. 意图分类
      • 3. 提槽
    • NLU误召
      • 1. 数据层面
      • 2. 模型层面
  • 小结


前言

在语音交互系统中,误召常见于 ASR(Automatic Speech Recognition),如噪声误识别。同样,ASR的下游任务 NLU(Natural Language Understanding)同样误召问题:除通过 拒识 降低透出到下游NLU的query比例(降噪),在NLU层面可采用一些 trick 降低误召率。

误召数据在NLU中可视为OOD(out of data),比如:在domain-oriented的分类任务中,假设类别标签分为positive、negative、unknown三类,其中positive和negative类别属于功能点,unknown类别属非功能点

如果OOD的数据误分到功能点中,则发生误召;值得注意的是,功能点通常解释为可枚举,而非功能点不可枚举。

本系列文章将介绍一些 trick 来降低NLU误召率;工业场景下,通常整体误召率需要<=10%


理论

NLU一般采用 DIS(domain-intent-slot)过程:给定query,首先识别出领域(domain),然后识别出意图(intent),最后填充归一化后的槽位(slot):

  • 领域 domain:界定给定query所属intent范围,如:音乐,导航,新闻,问答,对话,天气,股票,订票,酒店等;
  • 意图 intent:界定特定domain下隶属的细分意图(一般不可拆解,且互斥),通常代表一个动作,比如:音乐领域中“播放下一首”,“停止播放”等意图;
  • 槽位 slot :词表归一化,用于透出给BOT或TTS等下游;比如:音乐领域,“播放下一首”的词槽是“next”,“停止播放”的词槽是的词槽是“stop”,可能存在的槽位有:电台名,音乐名,歌手等。

NLU DIS

1. 领域分类

2. 意图分类

目前NLP分类任务几乎都使用 bert 作为base line,NLU也不例外,领域分类任务和意图分类任务都使用 bert预训练模型

工业上,tensorflow 版和torch 版的 bert-base 模型,在训练数据一致的前提下,训练速度和推断速度接近,只是在转类似于.pb的文件时存在差别。

3. 提槽

提取槽位实际上与业务需求相关,比如:音乐领域中,“播放歌曲|歌手|电台|广播“需要提取”播放“的xxx(此处可以是“歌曲|歌手|电台|广播”)透出给下游BOT接口;

词表归一化是提槽的主要工作,比如:“播放周杰伦的歌”需要将“周杰伦”归一化为“歌手”,透出 {“歌手”: “周杰伦”},而整句话的NLU结果为:{“domain”: “音乐”, “intent”: “播放歌手的歌曲”, “slot”: {“歌手”: “周杰伦”}};

常见词表归一化的方法有:正则表达式,模糊查询和检索,语法规则模版等;
比较推荐采用语法规则模版来做槽位词表归一化,比如:前缀匹配树,Laser匹配树等;
优点在于模版比较灵活,可以定义符合产品需求的规则,功能点相对可穷举且不依赖训练数据,在一定程度上能够快速定位和解决 bad cases

NLU误召

回归到NLU误召问题,从上一节NLU DIS中可以看到,提槽是为了透出与业务需求相关的实体,本质上由规则完成,在样本空间划分上与意图分类是等价的;

而领域分类和意图分类任务能够通过模型切分整个样本空间,所以解决NLU的误召问题也就是在domain和intent两个分类任务上降低误召——领域和意图分别兜部分误召指标。如下是本系列文章的 tricks

1. 数据层面

人工构造(非手工)批量的领域和意图层面的误召语料,分别放到领域分类的 others 垂域和意图分类的 _unknown 意图;在不改变模型结构/输入的前提下,通过增加误召子域语料的方法降低误召;

2. 模型层面

  1. Unknown Intent Detection
    将误召问题建模为未知意图判别模型,其中误召=OOD(out of data),功能点=IND(in data);
  2. Contrastive Learning
    将误召问题建模为对抗模型,在训练数据中添加噪声,做对抗模型训练。

小结

以上便是绪论部分,本便文章简要介绍了NLU的误召问题和理论方案,下一章将从数据层面探讨降低NLU误召和构造误召语料的方法。数据层面降低NLU误召-构造误召语料

你可能感兴趣的:(NLP,python,自然语言处理,人工智能,深度学习)