添加意图
意图共有三种类型:
- 一般意图:由“语料”驱动的意图,是最常用的意图。在对话流程中需要使用语义识别图元对用户语言进行语义识别时,通常配置一般意图
- 未知意图:在未识别出用户输入时所选择的意图。每个领域需要存在一个未知意图,用于为该领域下未匹配到的意图提供回复。未知意图已经预置,无需再另行添加。
- 事件意图:在特定事件触发时选择的意图,例如用户语言中出现了系统配置的敏感词,可触发SENSITIVE_WORDS事件。事件意图通常用于匹配一定的事件,并对匹配到的事件做出相应的返回,系统已预置敏感词汇事件意图、上下文清除事件意图两个。
一般意图和未知意图有什么区别?
一般意图就是普通的意图,会包含语料信息。比如问天气和问机票两个意图,是一般意图。未知意图就是没识别的情况下的走向,不配语料,只配响应信息。
在配置意图过程中,您需要了解如下概念:
- “语料”表示在意图中所罗列的用户所有的可能的说法。举例来说,我们要编辑一个帮用户放音乐的模板,这个模板里要尽可能多的罗列用户所有关于放音乐的说法,如“帮我放音乐”,“放首歌听听”等等。
- 添加普通语料的方法请参照3.d,添加规则语料的方法请参考如何使用规则语料?。
“语料”分为“普通语料”和“规则语料”两部分,普通语料和规则语料有什么区别?
- 普通语料:直接罗列该意图中用户所有可能出现的说法。
普通语料中可以对槽位进行标记,当需要直接使用语料标记槽位,或者表达句式无法抽取出公共的句式特征时,使用普通语料。
- 规则语料:是通过撰写语料规则,匹配用户的输入,规则语料无法标记槽位,但可以适配同样句式的所有表达。能够通过固定的句式进行表达的语句,可以使用规则语料进行添加。例如:[帮忙|我要](办流量套餐|办宽带),方括号定义了可选规则,竖线符来表示多选一,圆括号定义必选部分,那么我要“办流量套餐”、“办宽带”,都能通过语义识别图元进行对应识别。
- 普通语料:直接罗列该意图中用户所有可能出现的说法。
- “槽位”是在对话过程中所需要收集的参数,举例来说,要完成订火车票的意图,用户需要提供“出发地”、“到达地”、“出发时间”等信息,这些信息称为槽位。当获取用户意图时要求用户提供某些信息,例如时间、地点、类别等,可将这些信息添加为槽位。
- “实体”指用户所输入的文本中的具有“参数值”性质的词,举例来说,用户说“我要买3斤苹果”,这句话里“3斤”和“苹果”就具有“买水果”这个意图的参数值;用户说“一张明天到北京的火车票”,这句话里有“一”、“明天”、“北京”这三个参数值。槽位和实体的主要区别在于:槽位是隶属于意图的性质,而实体是意图无关的,但是我们会用实体来填充槽位,这样就做到了参数与值的分离建模。
根据表1所示,我们需要添加2个意图,需新增2个实体,使用系统预置的2个实体。此处以添加一个挂号意图为例介绍配置方法。
操作步骤
- 添加领域。
- 参见添加实体添加两个实体:医生、科室。
图1 添加医生实体界面
图2 添加科室实体界面
- 添加挂号意图。
- 单击进入新创建的领域,单击“新增”,选择“一般意图”。
- 填写意图的名称,例如“挂号”。
- 在“上下文”页签,单击“输入上下文”后的“新增”,可以添加当前意图的上下文,此示例不添加上下文。
上下文指多轮对话时,机器人根据该值将多组语句当做同一轮次的对话处理。当需要使用指定的意图时,可通过上下文配置的字符串进行定位。
意图上下文可理解为机器人的对话记忆,当具有同一上下文的多轮对话,机器人都会当做同一个任务进行识别和处理,例如通过多轮问答,依次获取出发时间,起始地点、目的地点,用于预定航班,当机器人在预定航班上下文中接收到了其他上下文,例如查询天气,将随客户提问切换到新意图上,以此来实现多意图转换的功能。
- 在“语料”页签,单击“新增”,添加语料。
分析客户可能回答,并将这些回答添加到语料中去,例如,客户可能回答我要挂一个明天下午16:00李医生的内科,则双击文本框输入“我要挂一个明天下午16:00李医生的内科”,然后鼠标左键选择“明天下午”,在弹出的菜单中选择“@system.date”,选择“16:00”,在弹出的菜单中选择“@system.time”。
如何标记槽位?
在语料输入完毕后,按回车,即可实现槽位自动标记,但是有些语料比较特殊(比如本例),回车后自动标记的槽位并不符合我们的要求,因此需要手工标记。
语料您可以做如下添加:
- 在“槽位”页签,设置槽位的名称,是否必选以及当槽位信息缺失时系统给出的提问信息。
槽位的名称将是您在流程编排时使用的槽位变量名称的一部分。
由于时间、日期、科室、医生必须提供完整才能确认一次预约挂号的信息,这四个槽位本应该是必选的,因此此处需要配置成“必选”。
- 在“响应”页签,单击“新增”,配置本次意图匹配成功后返回的命令字。
响应是指当匹配到该意图时,需要反馈的文本或命令字信息。响应支持根据不同的条件表达式返回不同的文本或命令字。通常在需要匹配到的意图向客户返回某些提示信息时,可配置回复文本,当需要将响应匹配到的事件写入TOC.IntentCode变量,返回给调用方(例如对话流程)时,可配置回复命令字。、
单击“命令”文本框,设置其值为“finish”。
单击“”按钮,设置“回复类型”为“回复文本”,单击“请输入”文本框,设置其值为“你预定了{$date}的{$time}的{$doctor}的{$room}”
- 单击右下角的“保存”。
- 单击右上角“训练”,提示训练成功。
- 单击右上角“测试”,对当前意图进行测试。
若您在添加意图时配置了上下文,询问机器人之前请在聊天界面的上下文输入框中输入已配置的上下文,否则可不输入。
测试时请根据您的语料对机器人进行询问,查看机器人的返回,如果返回类似如下内容,表示匹配成功。