第一章 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误召-构造误召语料

NLU误召问题解决绪论相关推荐

  1. 数据层面降低NLU误召-构造误召语料

    第一章 NLU误召问题解决绪论 第二章 数据层面降低NLU误召-构造误召语料 文章目录 前言 理论 代码 1. 下载领域相关闲聊视频(YouTube) 1.1 龟速稳定版 1.2 高速开车版 2. 裁 ...

  2. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率...

    (手机的颜色,大小,用户体验来加权统计总体的值)极大似然估计MLE 1.Logistic回归 Logistic regression (逻辑回归),是一种分类方法,用于二分类问题(即输出只有两种).如 ...

  3. 大数据与AI的16个实践分享

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale活动 主办方:DataFun,指导单位:北京智源研究院 文章作者:Hoh Xi ...

  4. 通常我们将python语言程序保存在一个后缀_【单选题】通常我们将Python语言程序保存在一个后缀为( )的文件中。...

    问题:[单选题]通常我们将Python语言程序保存在一个后缀为( )的文件中. 更多相关问题 谢某对某公安局以其实施盗窃为由处以15日拘留的处罚不服,向法院提起行政诉讼.该局向法院提供的证 下列关于刑 ...

  5. linux lib64被改名,问题解决:Centos误将/lib64更改为lib64.bak

    CentOS系统中,lib目录下的库对系统的正常运行起着非常关键的作用.一旦误操作将导致系统瘫痪. /lib64被重命名 故障表现 由于操作失误,把/usr/lib64重命名成了/usr/lib64. ...

  6. Cadence OrCAD Capture 框选误选择连线问题解决方法图文教程

      

  7. Python 技术篇-解决转化后的exe程序被360误杀问题实例演示,python生成的exe被360识别为勒索病毒原因及解决方法

    我用 python 做了两个功能相似的程序,A 程序没问题,B 程序有问题,被 360 误杀,对比后发现 B 程序引用了 os 库,替换成了别的库实现 os 库的功能,新的程序不再有问题.罪魁祸首就是 ...

  8. WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题

    WPF 触屏事件后触发鼠标事件的问题及 DataGrid 误触问题 目录 一.触屏事件连带触发鼠标事件的问题 二.DataGrid 误触问题及解决方法 独立观察员 2021 年 10 月 10 日 一 ...

  9. PRML(1)--绪论(上)多项式曲线拟合、概率论

    PRML绪论 1.1 多项式曲线拟合 1.1.1 问题描述 1.1.2 最小化平方和误差 1.1.3 多项式阶数确定 1.1.4 有趣问题--高阶模型为什么效果不好 1.1.4 数据集规模对模型的影响 ...

最新文章

  1. 面试官:如何实现一个高性能的,短链接生成服务?(附源码)
  2. vbsedit无法创建空文档_vue文档里你没捡起来的宝藏
  3. codeblocks断点不停,无效问题终极解决
  4. POJ-2195 Going Home 最小权值匹配
  5. dell服务器从硬盘引导,就是折腾 篇三:戴尔H710 mini(D1版本)阵列卡刷直通模式 附硬盘引导和还原IR模式办法...
  6. canvas整体放大_【HTML5】Canvas 实现放大镜效果
  7. Java虚拟机类加载机制——案例分析
  8. LoadRunner 常用C语言函数使用
  9. 部署OpenStack问题汇总(五)--openstack中删除虚拟主机,状态一直未deleting
  10. 简单暴力到dp的优化(初级篇)
  11. django-模型类的修改-外键
  12. java t9 字母组合_太赞了!美团T9终于整理出Java架构之完美设计实战开源文档
  13. css3组件实战--绚丽效果篇
  14. Linux内核深入理解定时器和时间管理(5):clockevents 框架
  15. Oracle中开启并行和相关查询
  16. java----EL表达式
  17. SQLServer实现将VARCHAR字符型对象转化为int/float数值型对象后排序、对VARCHAR对象截取指定部分再转化为数值对象进行排序
  18. 【研一周小结】第十周个人学习总结
  19. 基于mvc设计模式下的商品管理平台
  20. 第1131期AI100_机器学习日报(2017-10-23)

热门文章

  1. 讲一点有技术含量的东西(一)
  2. Java整合Python方法总结
  3. 每日刷题记录 (一)
  4. 成人学习国画可能产生哪些错误的思想?
  5. 计算机编程课程顺序_您可以在2月开始免费在线编程和计算机科学课程
  6. Typescript类,泛型,各种类型工具
  7. 关于微信小程序 Error: errCode: -501001 resource system error | errMsg: Environment not found; 错误解决方案
  8. python许可证_一图看懂各种许可协议
  9. webp 动画 android,Android加载animated webp的控制和Glide加载GIF
  10. 干货 | Reactive模式在Trip.com消息推送平台上的实践