对话模板是对用户需求表达的一种规则抽象,配置好对话模板,可以快速识别不同表达方式的用户需求。
比如,订一下北京到上海的火车票,多谢了,我们就首先可以从中提取出订票意图的词槽表达。
接着我们还可以抽象出一些特征词,比如把我需要、我要定 都抽象为表达预订的特征词kw_booking,把到、去、往、回归纳为kw_to特征词,这些特征词在新建模板前就可以新建好,并添加好尽量多的词典值,这样能让一条模板可以覆盖尽量多的用户query。而有些即不能归纳为词槽,也不能归纳为特征词,但又经常可能在用户的一句话里出现的,可以用通配符去表达。比如这句话里的多谢了,就可以用通配来表达。
了解完上面的基本概念后,我们来看UNIT2.0中对话模板更强大的用法,多个模板片段组成一个对话模板,每个模板片段都可以由词槽、特征词、特定文本单独或组合而成,而且多个模板片段可以是无序的,也可以是有序的。顺序设为0就表示这个模板片段可以出现在用户query中的任意位置。而非0的,必须按照数字顺序在query中出现。此外还可以设置一个模板片段是否必须在用户query中出现。
看这个对话模板,有5个模板片段, 按照顺序的意思就是 什么时间要订从哪到哪的票,这里出发时间的顺序设为0,表示出发时间可以在用户query中的任何位置,而下面的要定从哪到哪的票 这是固定顺序的。当然用户的一句话里不一定说的这么全,只要有 我要定、火车票 这样的特征词就能确定用户是要订票的意图了——必须匹配设为”是”。其他的信息都可以在后续的对话中让用户去澄清补充的。
最后大家还要了解的一个概念是阈值,它是说当前模板配置的词槽、特征词 占用户query的长度比例,当只有这个比例达到这个阈值的时候,我们才会判定用户的query就是这个模板所表示的意图。大家会需要经常调整这个阈值,调的太低,可能会造成很多误召回,太高可能会导致召回率很低。
当我们有多个对话模板时,它们之间是有优先级的,在对话模板列表的上面的优先级要高于下面的,可以选中一条对话模板,然后执行上移、下移的操作来调整优先级。
这里我们定义了四个特征词:kw_to、kw_booking、kw_ticket、kw_seattype。
我设置了两个词槽a和b 我想要实现 ab或者ba都匹配到 ,但是测试发现单单一个a 也能匹配,问题出在哪里?我已经设置了a和b都是必填了。如图:
忽略通配符,不需要使用,分多模板片段即可,看看整体的介绍,而不是关注某一个小的功能点。
另外,多看看文档中心的文档介绍
请问一个对话模版里,通配符只用一个就行了吗?
学习了
哈哈哈,我自己开发的对话管理系统,看了下跟UNIT非常接近。只是我没有data去训练模型,用的就是模板来解析意图和实体。。
问一下,设置的模版顺序,如果前面一个模版片段是非必须的,那么我这个模版片段顺序是不是要前置了。比如A-B, A是非必须,B必须,A的位置是1,B的位置是2,如果我只输入B,阈值假设是0,能匹配上吗
模板里的必须匹配 是指用户说的话 必须包含这个模板片段里的内容 才会被认为是当前目标所标注的意图。
词槽设置的 必填,是指用户在对话过程中意图被识别了,但缺少该意图的必填词槽时 会要求用户补充这个词槽的内容后才会给用户答复。
"而且多个模板片段可以是无须的" 的 “须”
”而下面的要定从拿到拿的票 “的 “从拿到拿”
错字赶紧查查
模版里的必须匹配,和词槽里的是否必须,是什么关系?
解决了很大困惑
感谢反馈,我们会在下周的升级中解决您遇到的这个问题。
我觉得提供的系统词典sys_generic_unit是不是不靠谱?我建了个意图,模板只用sys_generic_unit,输入最简单的斤,个都触发不了,输入例子给的3千克等单位也触发不了。然后我给sys_generic_unit的词槽加了几个自定义的单位“斤”, “个”来触发,就可以。
D: 可以是词槽和特征词,词槽里可以配正则的
除了[D:XXX] [W:0-1] 还有什么可以用的表达式?
https://ai.baidu.com/forum/topic/show/870024 可以先用这个例子直观感受一下
然后在看看这个深入了解一下 https://ai.baidu.com/forum/topic/show/869808
怎么设置
QQ群 无法加入。
加不了QQ群呀?
今天通过2.0,正好跟着重新学习一遍。
干货!