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

一、什么是表格问答

表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. 个人笔记docker

    启动docker sudo systemctl start docker.service   暂停docker sudo systemctl stop docker.service   运行docke ...

  2. 秒懂Dubbo接口(原理篇)

    引言 背景 单一应用架构 垂直应用架构 分布式服务架构 流动计算架构 为什么要用 Dubbo? 什么是分布式? 为什么要分布式? Dubbo 的架构 Dubbo 的架构图解 Dubbo 工作原理 Du ...

  3. abp(net core)+easyui+efcore实现仓储管理系统——出库管理之五(五十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...

  4. python3爬虫应用--爬取网易云音乐(两种办法)

    一.需求 好久没有碰爬虫了,竟不知道从何入手.偶然看到一篇知乎的评论(https://www.zhihu.com/question/20799742/answer/99491808),一时兴起就也照葫 ...

  5. ant-design-vue 快速避坑指南

    ant-design-vue是蚂蚁金服 Ant Design 官方唯一推荐的Vue版UI组件库,它其实是Ant Design的Vue实现,组件的风格与Ant Design保持同步,组件的html结构和 ...

  6. Docker - 解决 gitlab 容器上的项目进行 clone 时,IP 地址显示一串数字而不是正常 IP 地址的问题

    问题背景 通过 gitlab 容器创建了一个项目,想 clone 到本地,结果发现项目的 IP 地址是一串数字 问题排查 明明创建项目的时候,IP 地址还是正常的鸭! 再看看项目的 settings ...

  7. php xml转数组

    <?php libxml_disable_entity_loader(true); $notify_values = json_decode(json_encode(simplexml_load ...

  8. IO流读写数据简单示例

    常用的字节输入流有:InputStream ,FileInputStream,BufferedInputStream 常用的字节输出流有:OutputStream,FileOutputStream,B ...

  9. Spider_基础总结4_bs.find_all()与正则及lambda表达式

    # beautifulsoup的 find()及find_all()方法,也会经常和正则表达式以及 Lambda表达式结合在一起使用: # 1-bs.find_all()与正则表达式的应用: # 语法 ...

  10. GMP-C/C++(大数库)使用方法

    The GNU Multiple Precision Arithmetic Library(GNU 高精度算数库)是一个用于任意精度算术的免费库,可处理带符号整数,有理数和浮点数.除了运行GMP机器中 ...