想了解表格问答,我们先看看TA的前世
摘要:表格问答是一种针对自然语言问题,根据表格内容给出答案的任务。
一、什么是表格问答
表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的前世的更多相关文章
- BZOJ 2154: Crash的数字表格 [莫比乌斯反演]
2154: Crash的数字表格 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 2924 Solved: 1091[Submit][Status][ ...
- jqGrid subGrid配置 如何首次加载动态展开所有的子表格
有时候需求需要默认加载表格的时候把子表格的数据也显示出来,经过研究相关SubGrids API配置如下: 属性 类型 描述 默认值 subGrid boolean 设置为true启用子表格.如果启用子 ...
- [HTML/HTML5]8 使用表格
8.1 创建基本的表格结构 8.1.1 表格结构 HTML表格包含4种基本元素: table:在HTML中table元素是一个容器,其中包含用于创建表格的其它的元素: tr:表示表格中的行,开始标 ...
- 表格里使用text-overflow后不能隐藏超出的文本的解决方法
当把text-overflow设为ellipsis时文本溢出内容就能显示为省略标记,而设为clip时就能把文本溢出的部分裁切掉,不过在表格里面使用text-overflow后依旧不能隐藏超 ...
- DOM操作表格
前面的话 表格table元素是HTML中最复杂的结构之一.要想创建表格,一般都必须涉及表示表格行.单元格.表头等方面的标签.由于涉及的标签多,因而使用核心DOM方法创建和修改表格往往都免不了要编写大量 ...
- 设置表格td宽度
CSS布局,表格宽度不听使唤的实例.想把表格第一例宽度设为20,其他自适应.但CSS中宽度是等宽的.只设这一行也不起作用.但是在实际应用中总是等宽处理,并不按照样式来走. XML/HTML代码 & ...
- 【BZOJ】【2154】Crash的数字表格
莫比乌斯反演 PoPoQQQ讲义第4题 题解:http://www.cnblogs.com/jianglangcaijin/archive/2013/11/27/3446169.html 感觉两次sq ...
- 【莫比乌斯反演】关于Mobius反演与lcm的一些关系与问题简化(BZOJ 2154 crash的数字表格&&BZOJ 2693 jzptab)
BZOJ 2154 crash的数字表格 Description 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a和b,LCM(a, b ...
- JXL解析Excel表格内容到数据库
java中常用的解析Excel表格的工具一种是POI一种是JXL,POI功能强大,相比JXL稍嫌复杂,对表格样式的处理非常好:而JXL解析简单方便,对中文支持比较好. 工作中解析Excel内容上传到数 ...
随机推荐
- Java学习的第二十二天
1.异常处理 try...catch...finally... finally带return finally也可省略 try里面可以有try 多个异常用IllegalAgruementExceptio ...
- LWJGL3的内存管理,第二篇,栈上分配
LWJGL3的内存管理,第二篇,栈上分配 简介 为了讨论LWJGL在内存分配方面的设计,本文将作为该系列随笔中的第二篇,用来讨论在栈上进行内存分配的策略,该策略在 LWJGL3 中体现为以 Memor ...
- trie 树(字典树)
目录 简述 trie 实现 前言 初始化 插入 检索 代码实现 例题 · 前缀统计 异或对 前言 贪心证明 代码实现 例题 · 最长异或值路径 可持久化 trie 树 简介 原理 代码实现 例题 总结 ...
- layui系列学习第一天
新开一个博客系列 记录下layui学习过程及感受 今天受到很大的打击 ...希望 自己能坚持做好 到1.12号可以完成这个博客 一.基础说明 layui css 命名规范:1.layui-模块名- ...
- 第05组 Alpha冲刺(4/6)
.th1 { font-family: 黑体; font-size: 25px; color: rgba(0, 0, 255, 1) } #ka { margin-top: 50px } .aaa11 ...
- Vue2.0源码分析
Vue其实是用Function写的一个class: 1.通过一系列的函数给Vue.prototype上动态挂载方法和属性 2.通过initGlobalAPI(Vue)给Vue本身扩展全局API 数据驱 ...
- rgw使用boto3生成可以访问的预签名url
前言 如果想访问一个ceph里面的s3地址,但是又不想直接提供secrect key的时候,可以通过预签名的方式生成url 生成方法 下载boto3 脚本如下 cat s3.py import bot ...
- 压缩css与js
使用yuicompressor 进行css和js的压缩 #! /bin/sh yasuocss="java -jar /root/yuicompressor-2.4.8.jar --type ...
- redis部署安装【建议收藏】
一.redis安装教程 1.安装redis ~]# yum -y install gcc gcc-c++ make ~]# tar -xf redis-4.0.8.tar.gz ~]# cd redi ...
- Nacos配置中心源码分析
1.使用 compile 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:2.2.3.RELEASE' spring: app ...