摘要:表格问答是一种针对自然语言问题,根据表格内容给出答案的任务。

一、什么是表格问答

表1是一张综艺节目收视率报表,假如你需要了解市场份额在3%以上的综艺节目,你会选择采用什么样的方法?

首先,用肉眼去筛选满足条件的数据,是最方便直观的方法,但显然也是效率最低的一种方式。我们可以采用一些工具,如Excel等,或者你可以选择将表格导入数据库,然后使用数据库语言来进行高效的检索。但是,并不是所有人都懂SQL语法,甚至很多用户都没有接触过Excel。

这些专业工具的使用难度限制了非技术用户,给数据分析和使用带来了较高的门槛,所以我们希望设计一种通过自然语言来对表格数据进行检索、计算等操作的系统,于是就有了表格问答。

表1:综艺节目收视率报表

表格问答是一种针对自然语言问题,根据表格内容给出答案的任务,它的任务可以描述为:输入一个表格集合T(包含一个或多个表格)和一个自然语言形式的问题Q,输出正确的答案A。

有了表格问答,用户在查询这些表格的内容时,可以直接通过自然语言与表格进行交互,如打字或者语音输入,并且可以得到直接结果,甚至是报表,大大降低数据分析门槛,为普通用户带来高效又自然的数据查询、分析和计算体验。

二、表格问答发展历史

表格问答主要经历了三个阶段:数据库自然语言接口、NL2SQL以及复杂表格问答系统。

1. 数据库自然语言接口

表格问答的研究最早可以追溯到数据库自然语言接口NLIDB(Natural Language Interfaces to Databases )。

NLIDB是一种允许用户通过输入某种自然语言表示的请求来访问存储在数据库中的信息的系统。国外NLIDB的研究起始于20世纪60年代,80年代最为活跃,受制于有限的自然语言理解能力,90年代热度开始衰减。

这段时间内出现了很多NLIDB系统:如微软的English Query,IBM的Language Access,以及BIM的LOQUI等等。中文NLIDB的研究始于20世纪70年代末期,后续也出现了一些中文实验模型与系统如NChiql,NLCQI,RChiQL,以及WTCDIS等等。这些系统主要是基于规则的方法,关键步骤主要是词法分析、语法分析、语义分析和生成SQL语句。

NLIDB是TableQA的前身,但它不是真正意义上的QA,而是一种把自然语言翻译成数据库语言的接口。它们完全依赖于规则与模板,对自然语言的约束较多,语言理解能力差,不具备较强的泛化能力。

2. NL2SQL

表格问答的主流技术之一就是让自然语言更加准确地转换成SQL语言,这种方法被称为(Natural Language to SQL)NL2SQL。NL2SQL的主要任务就是将用户的自然语言语句转化为计算机可以理解并执行的规范语义表示,与KBQA类似只不过KBQA的目标逻辑形式是SPARQL。NL2SQL有许多开源数据集,如表2所示,其中最为广泛使用的数据集,有WikiSQL、Spider等。

表2:NL2SQL数据集汇总

WikiSQL是最常用的公开评测数据集之一,它所包含的NL2SQL任务比较简单,主要是单表单列查询,可以进行最大、最小、计数、求和以及平均聚合操作,支持大于、小于和等于的条件比较,仅支持“AND”的条件链接方式。

Spider数据集是目前领域内最困难的数据集之一,训练集有7000条数据,对应140个数据库,验证集有1034条数据,对应20个数据库,数据库名不重合。它支持多表多列查询,包含复杂的子查询,以及更多的聚合操作、条件操作和排序操作等。

近年来,NL2SQL在中文领域也出现了一些优质的数据集,例如TableQA、DuSQL等。

3. 复杂表格问答系统

随着对话领域的不断完善和发展,一些表格问答系统逐渐具备了上下文理解能力,表格问答与一般对话机器人的融合不断深入,形成了较为复杂的表格问答系统。这些系统不仅能够简单的单轮问询,还能实现多轮对话,返回结果也从简单的结果集合变成了丰富的自然语言形式回答。

图1:复杂表格问答系统

三、表格问答的应用场景

据Google2015年对互联网数据的统计,仅英文网页中包含的表格数目就有数百亿,说明表格的数据量十分巨大。不仅如此,表格数据高度结构化,不同表格之间不必遵循统一的本体结构和命名规范,表格的编辑和修改可以高效进行,具有较强的可编辑性和时效性。这些特点使得表格问答能够在诸多应用场景发挥重要的作用。

表格问答具有两个重要的研究方向:结合智能交互,支持对结构化数据查询与问答;优化搜索引擎,智能并高效地检索结构化文本。结合这两个研究方向,在以下应用场景中能够发挥重要作用:保费查询、客户信息查询等内部业务数据查询;覆盖行情信息、行业研报报表、财务报表等结构化数据;支持酒店信息、火车票与飞机票查询等出行场景问答;商品销量、商品详情、商品筛选与推荐等电商场景;产品信息、活动细则等新零售场景问答;话费查询、缴费查询、业务查询等日常生活问答。

四、表格问答的工程挑战

表格问答具有广泛的应用场景,但是在工程实现上也存在很多问题:

表格的识别及规范化表示:表格默认以第一行为表头,但在实际挖掘表格中,有三种情况:以第一行为表头,以第一列为表头,或者第一行和第一列共同表示表格;挖掘的表格存在信息缺失问题,如表名缺失、表格值不全等;同时,面对多个表格时缺失表间链接关系。

外界知识的利用:有一些常识信息不包含在表格中,如排序操作的方向判断(列为“出生日期”,问题为“年龄最大的员工”)、表格值进制转换(列为“人口(亿)”,问题为“人口超5千万的城市”)等,这些信息需要引入外界知识来协助SQL生成。

融进渐进式对话:对于用户的歧义表达和模糊表达,需要有“提问-反馈-再提问”的过程,这类问题往往需要通过多轮对话解决,而用户的问题通常是上下文相关的,因此需要模型具备基于上下文的理解和分析能力。

表格问答具备很高的研究价值和商业价值,很多友商和研究机构都正在致力于表格问答的商业化和研究。与此同时,表格问答也存在很多技术难题和工程难题,在表格问答的研究道路上还有很长的路要走。

点击关注,第一时间了解华为云新鲜技术~

想了解表格问答,我们先看看TA的前世的更多相关文章

  1. BZOJ 2154: Crash的数字表格 [莫比乌斯反演]

    2154: Crash的数字表格 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2924  Solved: 1091[Submit][Status][ ...

  2. jqGrid subGrid配置 如何首次加载动态展开所有的子表格

    有时候需求需要默认加载表格的时候把子表格的数据也显示出来,经过研究相关SubGrids API配置如下: 属性 类型 描述 默认值 subGrid boolean 设置为true启用子表格.如果启用子 ...

  3. [HTML/HTML5]8 使用表格

    8.1  创建基本的表格结构 8.1.1  表格结构 HTML表格包含4种基本元素: table:在HTML中table元素是一个容器,其中包含用于创建表格的其它的元素: tr:表示表格中的行,开始标 ...

  4. 表格里使用text-overflow后不能隐藏超出的文本的解决方法

          当把text-overflow设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,不过在表格里面使用text-overflow后依旧不能隐藏超 ...

  5. DOM操作表格

    前面的话 表格table元素是HTML中最复杂的结构之一.要想创建表格,一般都必须涉及表示表格行.单元格.表头等方面的标签.由于涉及的标签多,因而使用核心DOM方法创建和修改表格往往都免不了要编写大量 ...

  6. 设置表格td宽度

      CSS布局,表格宽度不听使唤的实例.想把表格第一例宽度设为20,其他自适应.但CSS中宽度是等宽的.只设这一行也不起作用.但是在实际应用中总是等宽处理,并不按照样式来走. XML/HTML代码 & ...

  7. 【BZOJ】【2154】Crash的数字表格

    莫比乌斯反演 PoPoQQQ讲义第4题 题解:http://www.cnblogs.com/jianglangcaijin/archive/2013/11/27/3446169.html 感觉两次sq ...

  8. 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)

    BZOJ 2154 crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b ...

  9. JXL解析Excel表格内容到数据库

    java中常用的解析Excel表格的工具一种是POI一种是JXL,POI功能强大,相比JXL稍嫌复杂,对表格样式的处理非常好:而JXL解析简单方便,对中文支持比较好. 工作中解析Excel内容上传到数 ...

随机推荐

  1. 4G DTU模块的功能和作用是什么

    4G DTU模块我们可以简单将它理解为使用4G无线通信网络来进行远距离无线传送的终端设备.4G DTU模块基于4G方式进行远距离的数据传输,是专门用于将串口数据转换为IP数据或将IP数据转换为串口数据 ...

  2. Socket创建简单服务器和客户端程序

    使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...

  3. ValueError: Unknown label type: 'continuous'

    说明:SVM训练的标签列必须为整型数值,不能为float.y = np.array(y, dtype=int)或y.astype('int')

  4. 使用Asponse.Words处理Word模板

    一.客户需求 近期接到一个项目,在与客户初步沟通后,客户描述的需求听起来也非常简单,就是目前客户需要在Excel录入数据,然后把这些数据分别复制到多个Word的多个地方,除了单个值之外,还需要复制表格 ...

  5. DP百题练(三)

    目录 DP百题练(三) DP百题练(三) 不知不觉也刷了 50 道 DP 题了,感觉确实有较大的进步.(2020.3.20) 这里的 (三) 主要用来记录 DP 的各种优化(倍增.数据结构.斜率.四边 ...

  6. Group指定的方式如下: @Test(groups = {"fast", "unit", "database" })

    Group指定的方式如下: @Test(groups = {"fast", "unit", "database" }) public voi ...

  7. python 关键字yield

    问题 Python 关键字 yield 的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self, distance, m ...

  8. C#泛型用法,附代码示列

    C#中的泛型,大致有如下几种:泛型方法,泛型类,泛型接口,泛型委托,泛型约束等 使用泛型的好处一个是为了减少代码量,更主要的是能提高效率,不需要进行拆箱和装箱的操作. 下面是写的简单的例子,共勉,加深 ...

  9. Java 内功修炼 之 数据结构与算法(二)

    一.二叉树补充.多叉树 1.二叉树(非递归实现遍历) (1)前提 前面一篇介绍了 二叉树.顺序二叉树.线索二叉树.哈夫曼树等树结构. 可参考:https://www.cnblogs.com/l-y-h ...

  10. 主动关闭 tcp_timewait_state_process 处理

    正常情况下主动关闭连接的一端在连接正常终止后,会进入TIME_WAIT状态,存在这个状态有以下两个原因(参考<Unix网络编程>):      1.保证TCP连接关闭的可靠性.如果最终发送 ...