参考文献:

[1] https://www.jishux.com/p/d9e1d2bf4c9426ac

[2] https://www.jianshu.com/p/9eafea59bcde

最近根据老师的项目,尝试了百度Unit的一些使用,结合相关参考文献,整理一下,主要是记录一下整个平台训练和使用的个人理解,为后面NLP理论研究做基础,不涉及具体的SDK代码和工程性讨论。

【注】由于UNIT目前有1.0和2.0两个版本,两者还是主要有些差距的,具体有:

1) UNIT1.0 中『场景』的概念调整为UNIT2.0 的『BOT』;
2) UNIT1.0 中的『单元』概念去掉,UNIT2.0 新增了技能的概念,分为自定义技能与系统技能;
3) UNIT1.0 中的『对话单元』、『问答单元』改为了UNIT2.0 的『对话意图』、『问答意图』。

详细请参考百度官方的用户手册https://ai.baidu.com/docs#/UNIT-v2-guide/top。自己主要是使用2.0版,所以一下内容为2.0。

一、UNIT整体结构

UNIT结构如下图所示,对话意图是最主要的自定义功能。通过定义词槽来确定意图,再根据意图里的规则从而执行回应。下面重点说一下词槽和规则的作用。

1.1 词槽

词槽可以看作用来明确对话目的(意图)的特征,词槽内填充的值可以看作特征值。在UNIT中,新建词槽后会选择词槽词典,包含一些常用词,例如定义usr_bank,词典可以自定义上传txt格式的词典,如果词槽非常通用(如时间、地点),百度也提供了词典可以直接使用。词槽定义如下:

关于定义过程百度手册已经给出了很详细的的过程,在这里不再赘述。从目前UNIT提供给用户的接口来看,还不涉及到根据语义自动提取词槽,也就是自动学习哪些是特征,必须人工定义。所以针对专门的对话领域(查询天气、酒店预订等),词槽定义比较方便,因为制定者可以根据业务逻辑很快定位对话中哪些词是关键属性,但是对于开放性对话系统、聊天系统,就会比较困难。

词槽的使用地方有四处:意图内、意图规则内、对话样本、对话模板:

1)意图内是指匹配意图后,根据意图内词槽是否为必填,决定需要澄清话术与否。例如,在查询天气意图中,时间和地点设置必填,而在训练对话样本中,有一句“[usr_time:明天]天气怎么样”标注为查询天气意图,训练后输入这句话,识别为查询天气意图,但是缺少地点词槽值,澄清话术就会要求输入地点。

2)意图规则内是指当规则组内所有词槽同时满足某些条件时(一条规则一个词槽),触发该意图的回应。

3)对话样本中的词槽必须标注具体的词才能起到效果,后面的例子会说明这一点。

4)对话模板可以直接使用词槽,而不需要设置具体对应的词槽值。

1.2 规则(组)

根据参考文献 [2],无论是开放域聊天还是封闭域,根据对话样本、对话模板或者问答对识别出意图后,若满足其中的规则就会返回相应的3种动作。UNIT中的规则设置比较灵活,考虑到3种情况,使得意图匹配更加灵活。

· 会话过程中:即在整个session过程中,填充进入了就算,适用于多轮对话

· 当前用户输入:指用户输入的上一句,填充进入了才算,此前隔了几个对话说的内容不算

· 上轮对话意图:即之前的对话满足/不满足某个意图后,才能触发符合这个条件

但是,UNIT的规则是多对一的,即在同一个对话意图内,无论制定多少个规则组,最终都是执行这个意图的唯一回应。这样考虑也有道理,因为人在自然交流中,可能说多句话才能表达出这个意思,也可能一句话就能识别意图,因人而异,因场景而异。

二、训练模式

UNIT中最重要的一部分是训练阶段,该阶段需要三种数据集:对话模板集、对话样本集和问答集。问答集就是设置问答对,要求100%匹配问题才可以返回既定答案,没什么好说的。重点说一下模板和样本。

2.1 对话模板

对话模板要比问答对要灵活一点,因为其中可以放置定义好的词槽和特征值,而词槽值暂时可以空着,但是,定义好的对话模板必须按照这个句式才能匹配上标注的意图,也就是说,词槽和特征值的词序以及固定的普通字必须完全匹配

例如,我们只定义了如下的模板:

训练后如果输入“北京明天天气怎么样”是不被识别到查询天气意图中的。

所以对话模板有利有弊,若应用场景较小,则人们说话的句式较少,且词槽都是通用语义的,可以利用对话模板来标注,甚至不怎么使用对话样本去训练,但是就会很死板。

2.2 对话样本

对话样本作为UNIT训练的核心,个人理解还是依靠监督学习的大批量标注实现的。对话样本具体形式为某句自然话,如果想要训练效果好,不仅需要标注意图,句内的词槽值也需要人工标注,否则即使识别为意图,还是要靠澄清话术来重新输入的

举个简单的例子,不考虑对话模板,只定义如下对话样本:

训练后输入如下问句作为测试,后面为返回结果:

1)查询明天天气------》请澄清一下:地点。原因为匹配意图后地点词槽必填,但是问句里没有标注

2)南京后天是什么天气--------》请澄清一下:时间、地点。样本2中两者都没有标注

3)9号天气怎么样啊---------》无法回答。必须为8号才能识别意图。

所以从标注上讲,工作量还是挺大的,但是对话样本可以有较好的灵活性,对词序要求不严格,而且此例样本量太少,并不能反映出训练的效果,比如第3个测试,如果样本中含有大量的“N号天气怎么样啊”(),训练完成后输入该问句可以正确匹配到查询天气意图。

三、总结

只考虑一轮对话匹配意图情况,整个流程如下:

在匹配阶段,个人理解是优先匹配对话模板,如果句式有完全一致的,则进入该句式标注的意图,若没有,则寻找训练集中最接近的样本。

需要注意的是,若词典中没有澄清的词值,则会一直提醒澄清,直到设定的最大次数,所以总的来说,词典是尽可能要完善的。

总之,UNIT平台对于像我这种刚刚接触NLP/NLU的人还是很友好的,图形界面完好地封装了用户接口,即使不太懂内部机制原理也可以较好地定义对话/问答系统,上手比较容易,但是对于理论研究,就比较吃力,作用不是很大,大体能够了解监督学习的过程。

接下来会看关于CNN、RNN、LSTM、Attention具体机制,深入到NLP理论研究去。

百度Unit 2.0平台学习理解相关推荐

  1. 百度SDK移动开发平台学习 - 人体分析

    这里我用的是百度的SDK: 1.连接百度开发平台:从百度管理平台应用列表可以获取到 string API_KEY = "He53N3WsvqUiqHgdTlMYn1eF";stri ...

  2. 智能对话平台UNIT 7.0三大引擎正式亮相

    ​在人工智能技术与产业深度融合发展的大潮下,企业应用全面迈入"智能对话+"时代,智能对话平台已成为企业智能化转型的首选产品.5月18日,在"2022云智技术论坛-智能对话 ...

  3. 百度UNIT使用的步骤与自己的一点简单理解(下)

            最近项目需要语音上下文对话,找了几家都没有找到可以定制个性化上下文场景对话的技术,一般都是固定场景的对话,刚好,百度近期推出了UNIT技术,感觉刚好可以实现功能,可能需求与UNIT技术 ...

  4. 统信 UOS 适配支持百度飞桨 AI 深度学习平台;阿里回应“马云遭印度法院传唤”;fastjson 1.2.73 发布 | 极客头条

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 一分钟 ...

  5. 《ANSYS Workbench 16.0超级学习手册》——1.2 ANSYS Workbench 16.0平台及模块

    本节书摘来自异步社区<ANSYS Workbench 16.0超级学习手册>一书中的第1章,第1.2节,作者: 黄志新 更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  6. 全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍

    全景丨0基础学习VR全景制作,平台篇第13章:热点功能-总览介绍 大家好,欢迎观看蛙色VR官方--后台使用系列课程! 一.热点功能概览 热点,指在全景作品中添加各种类型图标的按钮,引导用户通过按钮产生 ...

  7. 微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试

    微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 技术qq交流群:JavaDream ...

  8. 百度云搭建微信公众平台服务器,微信大众开放平台开发03-百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试...

    微信公众开放平台开发03---百度BAE上搭建属于自己的微信公众平台 -JAVA,微信公众开放平台部署到百度云中BASE2.0,进行调试,木有钱买云服务器的亲们试试 微信公众开放平台开发03---百度 ...

  9. 杨晓峰-java核心技术36讲(学习笔记)- 第1讲 | 谈谈你对Java平台的理解?

    杨晓峰-java核心技术36讲(学习笔记) 接下来我会分享杨晓峰-java核心技术36讲的学习笔记,内容较多,补充了其中一些牛人评论,相对详细(仅供个人学习记录整理,希望大家支持正版:https:// ...

  10. 关于基于stm32的0.96寸oled显示屏的学习理解心得。

    关于基于stm32的0.96寸oled显示屏的学习理解心得. oled粗了解 如何理解OLED分辨率? 这里0.96寸OLED分辨率是12864;即OLED显示是128行64列; 但是由于OLED不能 ...

最新文章

  1. 【Windows 逆向】OD 调试器工具 ( 显示模块窗口 | 显示记录窗口 | 显示内存窗口 | 显示线程 | 显示句柄 | 显示 CPU | 多窗口界面 )
  2. 多云世界中的SD-WAN—Vecloud
  3. SQL SERVER 存储过程执行带输出参数的SQL语句拼接
  4. velocityjs 动画库 比jquery默认的animate强
  5. python 最简单的实现适配器设计模式
  6. python list转map_Python 进阶之术 Map Filter Reduce
  7. 【Java】基于IDE的JUnit软件测试入门
  8. Vue中的三种Watcher
  9. 转载 敏捷教练,从A到Z
  10. 关于C#中timer类
  11. c语言低级语言分为,认识C语言 -低级语言是什么?
  12. Theano 编程核心
  13. C++ Primer Plus学习(一)—— 基础知识
  14. Linux安装python第三方库的步骤
  15. 关于使用J-Flash直接烧录bin文件的方法
  16. 中通hadoop去CDH的实践之路
  17. Highcharts3D环形图
  18. 中小学数学卷子自动生成程序
  19. C语言_函数认知和函数三要素
  20. 破壳而出的琉璃之鸟汉化 QA

热门文章

  1. 【javaWeb】SonarQube的安装、配置与使用
  2. Java将 PDF 拆分为多个 PDF 文件
  3. 计算机系统崩溃重新装机,电脑系统崩溃有几种重装系统的方法,赶紧试试看
  4. Rational License Key Error的解决办法
  5. linux老自动重启原因,【重启】查询linux自动重新启动原因
  6. 2020年最新版CSDN博客排名第一名的博客
  7. coreldraw x4被禁用怎么解决及不能使用序列号警告办法
  8. html制作中英文双语菜单,CSS实现的中英文双语菜单效果代码
  9. 【codecademy笔记1】
  10. HTML常用标签和表格教材,常用标签及表格.html