百度大脑UNIT3.0详解之数据生产工具DataKit

在智能对话项目搭建的过程当中,高效筛选、处理对话日志并将其转化为新的训练数据,是对话系统效果持续提高的重要环节,也是当前开发者面临的难题之一。为此百度大脑UNIT推出学习反馈闭环机制,提供数据获取、辅助标注工具DataKit,帮助企业提高数据处理效率。html

【快速了解什么是DataKit】python

DataKit是面向开发者提供的数据生产工具集,能够利用交互式学习、规则样本生成和多模型一致性检验等技术方法自动获取大量数据,并从中筛选出带标注、半标注和无标注3类样本,这些样本通过高效的预处理后造成新的训练数据,可进一步提高语义解析效果,有效提高对话系统的优化人效。json

一、样本获取工具

利用DataKit,用户能够从生产环境的日志中不断挖掘样本数据,逐步优化语义理解效果。post

二、辅助标注学习

经过数据生产、自动筛选与辅助标注,可以使训练数据集构造效率平均提升8倍,帮助开发者更低成本地优化模型理解效果。测试

【DataKit背后的技术解读】优化

1. 交互式学习技术spa

在对话系统的效果迭代优化中,利用用户的多轮对话行为做为对话效果的反馈,帮助发现当前系统效果的瓶颈,并挖掘有意义的对话样本供开发者标注以解决效果瓶颈。交互学习就是这样一种以用户交互行为数据为基础,积累交互样本,解决系统效果瓶颈的迭代优化辅助方案。3d

交互学习主要包含话术干预技术和异常样本发现技术:

话术干预技术

当用户认为系统的理解结果有误时,每每会试图经过强调的方式来澄清理解错误的部分。那么,用户用于强调的话术就是对于理解结果的一种干预。例如,

系统经过语义理解技术,将用户的干预话术识别为修改意图、词槽等操做,而后对被干预的理解结果进行意图和词槽上的修改。修改完成后会做两步处理:对于当前进行话术干预的用户,系统会记录该用户的话术偏好,从而下一次会按照用户的干预结果进行解析;同时,被干预的样本会在页面上展现给对话系统的开发者,由开发者决定是否将该样本加入训练数据从而对全局用户生效。

异常样本发现技术

异常样本发现主要用于挖掘对话系统内部理解异常和用户反馈异常的样本。

当用户认为系统的理解结果有误时,尽管会不断强调错误信息,但可能不会明确指出错在哪里和如何修正;同时,语义理解结果可能存在歧义、意图不识别等异常状况。例如:

①理解歧义——  U:明天北京  R:您是查天气仍是查机票

②复述强调——  U1:贷款  U2:保单贷款

③复述强调——  U1: k21点会议室  U2: 1点的k2会议室

以上状况虽然没法经过多轮的技术来肯定理解结果,可是能够经过异常样本发现技术进行异常样本挖掘。

异常样本发现的原理是:根据对话理解系统的中间状态来断定理解歧义和意图不识别的状况,并利用用户复述(当前问法强调上文中出现的关键信息)识别技术来断定用户在指出上文理解错误。异常样本被挖掘后展现给开发者,帮助开发者发现系统理解效果的瓶颈,有选择性的进行异常样本标注,并有针对性的调整模板。

2. 规则样本生成技术

在UNIT平台上用户能够方便地配置模板获得语义解析结果,实现语义解析的快速冷启动。在模板配置达到比较好的语义解析效果时,能够利用规则样本生成技术,产生带标注的样本集合供UNIT进行深度训练,更进一步提高语义解析效果。其方法是利用用户已经标注的模板和上传的词表,经过模板和词槽的组合关系,产生带标注结果的样本集合。这批样本能够直接用于深度训练,提高语义解析效果,可以有效下降人力投入。

在使用上,首先,冷启动阶段经过配置模板,使技能的解析效果达到比较好的程度。同步积累了必定的模板、词槽和关键词数据。而后,基于当前模板、词槽和关键词,触发样本生成功能,得到必定数量的带标注样本。最后,将该样本加入到训练数据中,进行深度训练,进一步提高模型的解析效果。

3. 多模型一致性检验技术

多模型一致性检验是日志挖掘的一种有效方法,其输入是用户的请求日志,输出有三类:带标注结果的正例样本,当前解析为负例的样本和当前没有解析结果的样本。其方法是检验UNIT上多个解析模型的结果,假设多个模型的解析结果越一致,其解析正确率越高。其中,具备高正确率的样本能够直接做为训练正例,解析为负例的样本能够直接做为负例,当前没有解析结果的样本能够进一步进行人工校验,不断优化解析效果。

【快速上手DataKit】

一、周期性的在UNIT平台下载生产环境的日志

进入UNIT平台技能的「对话日志」页面选择「生产环境」,导出日志明细(文件类型选择「JSON文件」),开发者能够一周一次或者一个月一次下载生产环境的日志,若是沙盒环境的对话日志是真实的用户对话(非内部测试的)也可使用。

图3.gif

二、执行挖掘对话日志的Python脚本挖掘日志

好比上面下载的对话日志文件为:unit_1000.json.txt

执行命令:python extract_train_data.py  unit_1000.json.txt  1正例样本.txt  2负例样本.txt  3无结果样本.txt

图4.gif

上述Python代码下载连接:https://pan.baidu.com/s/16g9l40aqT8GdcGzDLWB5Yw 密码:0p6t;须要在Python2.7 环境下运行

3.对挖掘出来对话样本文件进行后续处理

「1正例样本.txt」通常状况下,能够直接导入对话技能的样本集里做为训练数据便可(已是标注好的格式)。

「2负例样本.txt」 为当前平台识别为SYS_OTHER的样本,可简单审阅后在对话技能的训练数据中建立一个单独的负例样本集,导入该文件,做为负例训练数据,再下次训练时选择使用。

「3无结果样本.txt」为当前平台没有解析结果的对话样本,这些建议重点关注,看看那些应该识别却没有识别,筛选出来导入样本集进行人工标注。那些不该该识别的样本,导入负例样本集,标注成SYS_OTHER意图。

DataKit的一些使用建议:

一、周期性的下载存储平台上的JSON格式的对话日志;

二、周期性从日志里挖掘对话样本;

三、针对不一样样本继续不一样处理,对话技能模型效果会有明显提高。

另外,下载、挖掘日志的周期能够根据技能的对话日志量以及能挖掘出来的正例样本量来评估,通常状况下挖掘出1000条以上的正例样本结合已有的样本和对话模板用来训练模型才能在模型上效果上带来正向的提高。而须要从多少条对话日志、多长时间段的对话日志里才能挖掘出1000条正例样本,这主要取决于技能的使用状况(好比生产环境的对话数据真实,会更好),也与对话场景、模型已有的对话效果有关,须要开发者进行一些尝试,找到符合本身的一个日志挖掘周期。

相关文章:

百度大脑UNIT3.0解读之对话式文档问答——上传文档获取对话能力

百度大脑UNIT3.0详解之语音语义一体化方案