当前位置: 首页 > 科技观察

UNIT学习笔记私藏——轻松入门对话系统构建

时间:2023-03-13 11:51:28 科技观察

构建对话系统是一个比较专业和复杂的过程,通常分为三个主要阶段。首先是需求分析,然后是利用平台打造技能,最后是持续优化。需求分析的第一阶段是需求分析。这个阶段应该有产品经理或需求分析师的参与。首先,分析业务场景;然后定义对话机器人的功能;然后梳理业务场景中的对话逻辑;最后,收集场景中的对话数据。下面就用订火车票的场景来说明一下,整个过程都做了哪些工作。业务场景分析:确定边界,明确目标。首先分析业务场景,确定机器人在一个场景中应该做什么,不应该做什么。在火车票场景中,您应该回答有关预订、退票、改签、查询以及与火车票相关的一些规则和规定的常见问题。不应进行漫无目的的闲聊。功能定义:确定优先级和关键信息元素确定边界和目标后,就可以定义火车票对话机器人的功能了。在功能定义阶段,首先要确定每个功能的优先级,确定每个功能对应的实体元素。显然,在火车票场景中,订票、退票、改签、查询都是最优功能。完成功能定义后,需要对业务场景中的对话逻辑进行梳理,包括正常对话逻辑和异常对话逻辑。另外,关于问答对话,其实是用户对一些规章制度和制度的提问,这些问题都有标准的、固定的答案。这种对话逻辑梳理实际上是对问题进行分类,或者说知识分类。场景数据收集:用户在真实场景中会问什么?完成对话的逻辑梳理后,需要进行需求分析的最后一个环节,即数据收集。对于任务型对话,需要收集真实场景购票用户的各种问题,越多越好。对于问答对话,需要根据之前的知识分类,收集每个类别下的问答,即问答对。在此阶段收集的数据将在稍后的技能培养第二阶段中使用。创建技能注册一个百度账号,打开(http://unit.baidu.com),进入UNIT:1.创建新技能在UNIT平台上创建对话技能的第一步是创建一个技能。2.定义自定义技能:新建对话/问答意图后,进入技能定义阶段。技能分为自定义技能和预设技能。每个技能都由多个相关的意图组成。本阶段的新意向对应需求分析阶段的功能定义。例如订票功能可以转化为订票意向BOOK_TICKET,将订票关键信息定义为词槽,实现订票意向。这里比较简单,只定义了四个词槽:出发时间、出发站、到达站、车次;它们分别命名为user_time、user_from、user_to和trainnumber。具体操作步骤如下:2.1新建对话意图点击【火车票】技能进入技能模块,自定义技能中【新建对话意图】:2.2添加词槽第一步选择【添加方法],选择“NewfromDefinewordslot”,设置词槽名称(user_time)和词槽别名(出发时间),第二步打开【系统词槽词典】开关,然后选择systemdictionarysys_time(time)UNIT平台中的词槽标识依赖词槽对应的词典。支持自定义词典,也可以选择系统预设词典。如果可以选择系统词典,建议尽量使用系统词典。当系统词典中没有您需要的类型时,您可以添加自定义词典。第三步是设置与词槽和意图相关联的属性。这里火车票的出发时间是订票时需要的关键信息,所以选择required。澄清是当用户表达预订需求的句子中缺少出发时间,对话技巧主动要求用户澄清。您还可以设置用户在放弃要求澄清之前澄清的轮数。默认为3次。添加完所有的词槽后,图片如下:在词槽列表中,可以调整词槽澄清的顺序。2.3设置响应技能响应是当技能识别到用户意图和所有需要的词槽值时,对用户的反馈。回复有三种方式:[Response]、[引导对话意图]、[引导值问答意图]2.4新增问答意图3.添加训练数据可以理解用户查询的意图。3.1配置对话框模板首先是配置对话框模板。对话模板是对用户需求表达的规则抽象。它可以通过配置模板片段的必填和可选字段、序列和阈值大小来快速泛化。能力。当我们有多个对话框模板时,它们之间有优先级。在列表中的位置越高,优先级越高。您可以选择一个对话框模板,然后执行上下移动的操作来调整优先级。3.2标注对话样本这部分需要将上一阶段需求分析收集到的对话数据添加到UNIT平台,然后用intents和wordslots一一标注。经过深度学习策略训练,对话模型可以获得更好的对话理解能力,数据越丰富,模型的泛化效果越好。然后在对话样本集中新建一个“买火车票”的样本集,将数据加入其中:随着数据的不断丰富,机器学习的泛化能力会越来越强,当很难收集到大量的数据时对话样本数我该怎么办?UNIT平台提供了一个推荐对话样本的工具。你只需要从真实场景中收集50个对话样本,将它们作为种子样本来推荐相似的样本。种子样本的质量越高,推荐样本的质量就越好。3.3添加问答对。可以将需求分析阶段收集的问答对数据导入问答集中。没有必要在每个场景都添加以上三个训练数据来进行对话。这取决于你自己场景中的对话类型。和数据收集。如果你的场景是任务型的,缺少对话样本,可以先配置对话模板,快速达到一定的效果,再从日志中过滤更多的对话样本;如果你一开始就有对话样本,这个时候可以把对话模板和对话样本一起上传,这样可以快速达到更好的效果;如果还是有问答线的对话,只需要添加一对问答对,这是最简单的。3.4训练模型技能训练有两种方式,一种是训练上面配置的对话模板,另一种是同时训练对话样本和训练对话模板。默认情况下,系统必须训练对话模板,无论您是否标记了对话模板。选择速效策略,训练模型,生效到沙盒需要15-30秒。也可以选择一个对话样本集,采用深度训练策略,相应的后端训练会采用深度学习策略进行模型训练,训练速度与标注的对话样本量成正比。这里建议选择系统自带的“聊天负样本”,可以减少技能的falserecall,也就是告诉技能哪些query是在聊天,而不是买票。4.测试体验完成模型训练后,可以在测试窗口和技能聊天,看看最终效果:UNIT使用技能和持续优化,准确理解领域问题和基于任务的场景,以任务为特征目标。请求需要参数化,参数可以在多轮对话之间继承。问答场景,该场景的特点是有任务目标,请求不需要参数化Chat场景,该场景的特点是没有任务目标,领域资源高效构建,和高效的词槽构建。首先看内置词槽与自定义词典和规则的关系。自定义词典和规则的优先级高于系统自带的,但如果系统词槽中包含自定义词,则按照系统词槽进行识别。自定义点之间的优先级是相等的。如果一个词属于多个词典,则将相应地识别多个词槽候选者。因此,无需担心自定义词典之间的冲突和歧义,一切都由模板覆盖。规则的形式是正则表达式。注意控制通配符的范围,善用捕获功能对其进行限制。不受约束的通配符是badcase的一个重要来源。那么如何定义词槽,如何高效扩展系统未收录的词槽呢?扩展方法:每个词槽/特征词至少产生3-5个例子,基于资源的扩展(树结构、结构化信息、开放分类)和基于关联的扩展(上下文相似度、词嵌入)、基于语料库扩展(集合扩展算法)。挖掘方式:可以爬取垂直网站的词槽,或者转储到线下的知识库中。当然也可以采用挖掘+扩展的方式,先挖掘词槽,再扩展。此外,质量检验也很重要。当挖矿量较大时,可以选择众包。自然语言理解配置对话模板配置技巧关键词可以在抽象语境中表达基于模板意图,有词槽消歧能够善用模板片段,增强模板泛化能力模板定义顺序决定意图解析sequencedialog示例配置技巧关于数据量:100个即可训练;1000个就可以用了。所有被标记的样本都会进入K-V字典。K-V字典保证样本将按照标记的方法进行解析。词槽识别不稳定时,注意样本定期评估优化定期评估是指定期随机业务日志,人工评估效果,重点关注以下几点:意图解析失败/错误,词槽缺失可能原因:有些词以前没见过,现在出现未覆盖词槽对策:添加模板、标注样本、扩展词槽词槽解析错误、归一化错误可能原因:系统词槽badcase,用户词槽有歧义,用户词典覆盖系统词槽解决方法:向UNIT投诉,调整词典/模板,少数情况可以直接通过标注样本强行解决无法满足的新需求解决方法:分析是否支持是否需要——是:增加新技能;否:引导用户的功能期望。