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

一、什么是表格问答

表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. [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)

    题面 传送门:洛谷 Solution 这题其实是有类似模型的. 我们先考虑不修改怎么写.考虑这样做:每个点向它跳到的点连一条边,最后肯定会连成一颗以n+1为根的树(我们拿n+1代表被弹出去了).题目所 ...

  2. uniapp微信小程序canvas隐藏

    HTML 我是把canvas嵌套在view里并被view设置id <view id="canvas"> <canvas style="width: 35 ...

  3. python爬虫00什么是爬虫

    用一个自动化的程序把网站背后的程序爬取下来. 在互联网上许许多多的网站,他们都是托管在服务器上的,这些服务器24小时运行着,刻刻 等待着别人的请求.所以,爬虫首先会模拟请求,就好像你在浏览器输入网址, ...

  4. 如何用css设置鼠标属性的小手

    在元素中添加onmouseover="this.style.cursor='hand'"或者 cursor:pointer;

  5. 基于CSS3伪元素和动画绘制旋转太极图

    通过CSS3的动画知识来完成一个旋转的太极. 任务 1.创建一个div,用CSS控制其大小.边框.位置等,做成一个静态的圆形,一半为红色一半为白色. 2.用div的伪元素位置两个圆环并放置核实位置,使 ...

  6. Vs编译时RazorTagHelper - DOTNET_HOST_PATH is not set

    今天听朋友说遇到一个问题,打开一个aspnetcore2.2的项目工程,发现挺有意思,缺少环境变量DOTNET_HOST_PATH 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB401 ...

  7. 用seaborn绘制散点图

    散点图可以显示观察数据的分布,描述数据的相关性,matlibplot也可以绘制散点图,不过我一般优先使用seaborn库的sctterplot()绘制,下面就介绍一下如何用seaborn.scatte ...

  8. ArrayList和LinkedList 的联系和区别

    ArrayList和LinkedList 的联系和区别 1.联系: 都实现了List接口 有序 不唯一(可重复) 2.区别 ArrayList LinkedList

  9. 看阿里P7讲MyBatis:从MyBatis的理解以及配置和实现全帮你搞懂

    前言 MyBatis 是一款优秀的持久层框架,一个半 ORM(对象关系映射)框架,它支持定制化 SQL.存储过程以及高级映`射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结 ...

  10. 新鲜出炉!阿里Java后端面经,已拿offer!

    前面给大家分享了一篇字节跳动拿下offer的面经,很多小伙伴都私信我说收获很大,感兴趣的朋友可以回头去看看.很多小伙伴还问我有没有其他大厂的面试题分享,这不他来啦,阿里2020春招面试题给大家整理在下 ...