那欢迎各位看我的贴子,我是Impulse. 大家好
本干货系列教程,所有最终的目的是与C#进行交互,而不是单纯使用UNIT,所以在以后的帖子中,可能会涉及到除UNIT以外的服务。
我在UNIT的摸索学习中,有一些小经验可以分享给大家
之后可能会时不时写干货给大家,如果能帮助到大家开发了,我也会感到很愉快
话不多说,我们开始吧
UNIT的用途我在这就不多做介绍了,详情可以参考:http://ai.baidu.com/docs#/UNIT-intro/top
首先,需要根据你的系统逻辑 合理设置意图
例如我的系统将来是可以控制智能家居
那我可能会围绕着3个大意图展开
打开设备 关闭设备 调整设备
那接下去,我以目前我正在研究的灯光子系统为例展开讲解
以下内容纯属个人尝试之后所得的经验与结果 与官方无关 如有出入 纯属正常 请以官方为准
当确认了你大概的意图方向,我们接下去就开始设计对话单元
1.打开设备 对话单元
固然在这个意图甚至所有意图中,我必须要有设备的对象作为操作目的地,所以我在这拟了一个user_target作为对象词槽。
在场景的实际使用中,我会有存在user_place这样的位置指代。可以是卧室厨房等等也可以为空。(这里是一个可空词槽)。
注:这里的词槽顺序,请按照优先级排序,我这里是一个错误的示范。可空的词槽应该尽量往后放
那么考虑到我们设备的对象在中文的表达方式里会有千变万化的现象,例如
我想打开一个彩色灯泡,这个灯泡在中文里的表达就有很多了。
彩灯 彩色灯光 五彩神灯(神tm五彩神灯) 等等
重点一!!拍黑板!!!!
这时候就要向大家推荐 词典归一特性。我们可以用如下的方式编写词典
这样做极大的提高了我们获取对象时的精度 也方便了之后C#抓取到的对象
这样设计词典的好处有很多 方便后期迭代维护 同样的效果新的词汇 只需要添加子项就可以!!不需要修改后期的代码!!!!这简直就是封装的精髓啊有木有!!!!!
对话样本示例
标注词槽 这里不做过多介绍 详情可以参考UNIT官方文档
接着设置bot回应
因为我们最终是要去回调给C#的,所以我这里并不进行常规UNIT交互的介绍,而直接介绍与C#交互的设置流程。
重点二来了!!!拍黑板!!!!!
我们在答复中选择执行函数,并填入
到时候我们要执行的函数名
这里在设置触发规则的时候要注意,我们要把user_place词槽给去掉,因为我们的设计是可空的。他可以不填,可以填,我们需要写两条规则。最后的样子是这样的
那我们之后在C#中封装对象模型的时候,最好就预先将设备open的打开方法给写好。
必须是open 要和C#中定义的函数名保持一致才方便快速调用!
同理,关闭设备的意图写法就不再多做介绍
重点三!!!拍黑板!!!复用词槽!!!!!!
记得之后的意图需要大量使用复用词槽喔!这样做可以将词槽中指定的对象继承到其他的意图中去!!
省事!智能化!!
那以此类推,我可以编写其他几个针对这种设备有针对性的意图 例如 设置色温的意图
最后我有了如下几个意图可以作为灯光系统的几个意图。3~5为专用意图,6~7为设备的公用意图
那以上就是针对对话单元的设置了,希望对各位有所帮助和启发。如果有更好的建议,随时欢迎跟贴喔!!!
很棒
客气客气
谢谢大神.已经搞通UNIT了.真棒.
对的。有关调用可看我第3篇干货
这个函数是根据自己的训练.UNIT调用成功以后回调给C#服务端的吗?
不好意思.刚接触UNIT.问很多小白问题了
语言不是重点~
我也是用C#的.看到gojhou也用就稳妥了.可以伸手了
嗯~
写的很生动啦~连 “拍黑板”这样的词都用上啦,哈哈~
看吧看吧hhhhh。欢迎指出可以修正的地方
你的帖一直都很细致呢,棒棒哒~
我就是感觉楼主在整理的很用心,很靠谱~怎么办,楼主的帖子我都好想要看一看
分析的很到位
好人,谢谢分享
客气~
大佬分析的非常到位~