![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/105a58ef8f04720b3189962a0247434a.jpeg)
文 |
吾来算法团队
整理 |
吾来君
背景
以
表格的形式存储数据
是非常常见的方式,因为表格
维护方便、便于管理
,但是对于这种高度结构化数据的查询一般需要一定的专业知识。将
自然语言处理技术引入
可以让用户通过
问答的形式
访问表格数据
,大大降低了使用上的难度。
本文将以一个
电影领域的表格
为例,介绍
如何通过吾来任务机器人实现在表格数据上的问答
。第一部分,主要介绍本文出现的一些名词和知识;第二部分,主要讲解在吾来系统中是如何准备数据的,第三部分,介绍如何通过搭建机器人实现具体的问答能力。
基本概念
表格数据是我们的核心知识,以
电影领域
为例,我们应该首先准备如下表格数据:
表1:电影表格数据
主体:每个表格都是围绕一个主体组织,如电影表格中
“电影”
即为主体,具体的电影名称如
“飞驰人生”是“电影”主体的一个实例
;
属性/属性值:
属性代表主体所具有的某个性质
,如
“导演”
、
“演员”
等;属性值是
属性的取值
,取值有类型,常见取值类型有
整型、浮点型、日期、时间、字符串
等,电影表格中各个属性的取值类型如下所示:(可以是“字符串”、“整型“、”浮点型“等。
表2:电影表格属性
数据准备
在吾来系统上准备表格数据主要分为两个步骤。
第一,创建实体。
第二,上传表格。
实体的定义和作用可以参考吾来的产品手册,链接🔗
http://1t.click/aWyG
首先我们创建一个
属性名称实体
,这个实体的值就是1.2提到的各个属性,如
“导演”“演员”
等;
然后给
创建一个主体实体,这里我们创建一个
“电影”
实体,不需要新增实体值;
最后给所有
需要支持“属性查询主体”意图的属性
单独创建
属性值实体
,例如,如果希望通过导演的姓名查询该导演执导的电影,则需要创建一个“导演”实体,这里我们希望支持通过“导演”、“演员”、“评分”、“时长”属性查询电影,因此我们需要创建“导演”、“演员”、“评分”、“时长”四个属性,但是“评分”(数字)和“时长”属于常见的属性,已经提前预置于系统中,因此我们这里只需要创建“导演”和“演员”两个实体。
首先我们需要
定义表头
,对于
主体
和2.1
创建了自定义实体的属性
需要填写对应的
引用实体
,这样可以将表格中的
内容自动填充到之前定义的实体值下
,其他属性则不需要引用实体。
然后
上传excel表格
即可,详细步骤可以参考产品手册,链接🔗
http://1t.click/aWyN
创建任务场景
我们可以将查询类型抽象成两类:
1.
主体查询属性
:“飞驰人生的导演是谁?”
2.
属性筛查主体
:“韩寒导演的电影有哪些?”“评分高于8分的电影有哪些?“
我们使用两个意图处理这两类问题,
“主体查询属性”
意图将在3.2介绍,
“属性筛查主体”
意图将在下一次分享中介绍,另外我们需要
创建词槽以储存用户话术包含的关键信息
,这部分将在3.1中介绍。
第一,创建
主体词槽
。我们需要一个词槽
记录用户提及的主体
。最好用
主体概念的名称
来命名这个词槽,比如
”电影“
;该词槽引用“电影”实体(与表格主体引用的是同一个实体)。
第二,创建
属性词槽
。
我们需要一个词槽
记录用户在询问主体的哪个属性
;推荐属性词槽用
“属性名称"
来命名;词槽都引用
“属性名称实体”
。
第三,创建
属性值词槽
。我们需要有词槽能
记录用户提及的属性值
,允许用户同时提及N个属性值,因此共N个属性值词槽。推荐属性值词槽用属性名称命名,比如
“导演”
,
“演员”
等。
又因为当用户提及属性值时,还可能有对这些值附加的要求(“大于”或“小于”),为了能记录这个信息。我们推荐对每个可以比较大小的属性值词槽(如“时长”、“评分”)
各增加2个分别记录有”大于“或”小于“附加要求的词槽
。
最后,属性值词槽需要引用在2.1中创建的属性值实体(包括不需要创建的系统实体),例如
“导演_1”词槽引用“导演”自定义实体
,
“评分_1”词槽引用“数字”系统实体
。
表3:所有词槽汇总,共12个
主体查询每一种属性的话术都是不同的,例如问导演可能会说“飞驰人生是执导的?”,问时长可能会说“飞驰人生多长时间啊?”,问了增加对于问题的泛化能力,我们给每一种属性的查询单独创立一个子意图,利用意图识别的泛化能力触发不同属性的查询。
同时吾来平台任务机器人自带的多轮对话和意图跳转等能力,可以帮助我们实现更智能的对话流程。
我们以
主体查询导演子意图
为例,讲解搭建机器人的具体过程,其他属性的查询类似。
设置触发器
我们需要给意图
添加若干相似问题
帮助触发器触发该意图,相似问题的选择尽量可以涵盖询问该属性的多种说法。
编辑意图流程
进入意图后,我们会首先经过一个
询问填槽单元
,用户话术中的出现的
电影名称会填入到电影词槽
,如果词槽中的值不属于我们数据库中的电影实体时,就会
跳转到消息发送单元
,提示用户没有找到对应的电影,并跳回询问填槽单元请用户
重新输入电影名称
;如果词槽中的值属于电影实体,则进入
表格读取单元
,查询该电影的导演,结果储存在result词槽中,通过消息单元发送查询结果,最后结束意图。
效果展示
同一属性不同主体的查询
同一主体不提供属性的查询
结语
本文介绍了
如何使用吾来系统搭建一个具有表格问答能力的任务机器人
,用户可以通过自然语言询问表格中的内容,机器人根据问题的类型查询表格并回答用户的问题。
本文主要讲解
“主体查询属性”(“飞驰人生的导演是谁”)
这类查询意图,
“属性筛查主体”(“李安导演的电影有哪些”)
查询意图将在
之后的文章介绍
。
对话中出现的
其他更复杂意图
,例如
“比较两个主体的属性”(“飞驰人生和流浪地球哪个评分高”)
等,也可以在前两个意图的基础上很容易搭建而成,也将在之后的文章中进行详细的介绍,在这里也欢迎大家持续关注
“吾来对话机器人”
公众号。
点击「阅读原文」
快速
免费试用
吾来对话机器人平台!
👇👇