作者 | 唐都钰、孙一博

来源 | 微软亚洲研究院AI头条

编者按:在我们的生活中,用语音查询天气,用必应搜索信息,这些常见的场景都离不开一种应用广泛的数据存储方式——表格(table)。如果让表格更智能一些,将是怎么样的呢?在这篇文章中,微软亚洲研究院自然语言计算组将为我们介绍基于表格的自然语言理解与生成方向的一系列工作。

表格(table)是一种应用广泛的数据存储方式,被广泛用于存储和展示结构化数据。由于表格数据结构清晰、易于维护、时效性强,它们通常是搜索引擎和智能对话系统的重要答案来源。例如,现代搜索引擎(如必应搜索引擎)基于互联网表格直接生成问题对应的答案;虚拟语音助手(如微软Cortana、亚马逊Alexa等)结合表格和自然语言理解技术回答人们的语音请求,例如查询天气、预定日程等。

我们将在本文中介绍我们在基于表格的自然语言理解与生成方向的一系列工作,包括检索(retrieval)语义解析(semantic parsing)问题生成(question generation)对话(conversation)文本生成(text generation)等五个部分。除了检索任务,其余四个任务的目标均是在给定表格的基础上进行自然语言理解和生成:

  • 检索:从表格集合中找到与输入问题最相关的表格;

  • 义解析:将自然语言问题转换成可被机器理解的语义表示(meaning representation,在本文中是SQL语句),在表格中执行该表示即可获得答案;

  • 问题生成:可看作语义解析的逆过程,能减轻语义解析器对大量标注训练数据的依赖;

  • 对话:主要用于多轮对话场景的语义解析任务,需有效解决上下文中的省略和指代现象;

  • 文本生成:使用自然语言描述表格中(如给定的一行)的内容。

让我们用一张图概括本文接下来所要涉及的内容。

检索 Retrieval

对于给定的自然语言q和给定的表格全集T={T1, T2, .., Tn},表格检索任务的目的是从T中找到与q内容最相关的表格,如下图所示。每个表格通常由三部分构成:表头/列名(table header)、表格单元(table cell)和表格标题(table caption)。

表格检索的关键在于衡量自然语言问题和表格之间的语义相关程度。一个基本的做法是把表格看做文档,使用文本检索中常用的字符串相似度计算方法(如BM25)计算自然语言问题和表格之间的相似度。也有学者使用更多样的特征,如表格的行数、列数、问题和表格标题的匹配程度等。

为了更好地融入表格的结构信息,我们提出了一个基于神经网络的表格检索模型,在语义向量空间内分别计算问题和表头、问题和列名、问题和表格单元的匹配程度,如下图所示。由于问题和表格标题都是词序列,我们均使用双向GRU把二者分别表示为向量表示,最终使用线性层计算二者的相关度。由于表头和表格单元不存在序列关系,任意交换表格的两列或两行应保证具有相同的语义表示,所以我们使用Attention计算问题和表头以及问题和表格单元的相关度。

由于目前表格检索的公开数据集有限,因此我们构建了一个包含21,113个自然语言问题和273,816个表格的数据集。在该数据集上,我们对比了基于BM25的系统、基于手工定义特征的系统以及基于神经网络的系统,结果如下表所示。

可以看出基于神经网络的算法与手工设计的特征性能相近,二者相结合可以进一步提高系统的性能。

更多细节请参照论文:

Yibo Sun, Zhao Yan, Duyu Tang, Nan Duan, Bing Qin. Content-Based Table Retrieval for Web Queries. 2018. Neurocomputing.

语义解析 Semantic Parsing

给定一张网络表格,或一个关系数据库表,或一个关于表的自然语言问句,语义解析的输出是机器可以理解并执行的规范语义表示(formal meaning representation),在本小节我们使用SQL语句作为规范语义表示,执行该SQL语句即可从表中得到问题的答案。

目前,生成任务比较流行的方法是基于序列到序列(sequence to sequence)架构的神经模型,一般由一个编码器(encoder)和一个解码器(decoder)组成。编码器负责建模句子表示,解码器则根据编码器得到的问句表示来逐个从词表中挑选出一个个符号进行生成。

然而, SQL语句遵循一定的语法规则,一条SQL查询语句通常由3种类型的元素组成,即SQL关键词(如SELECT, WHERE, >, < 等)、表格的列名和WHERE语句中的条件值(通常为数字或表格单元)。因此,我们在解码器端融入SQL的语法信息,具体由一个门单元和三个频道组成。门单元负责判断该时刻即将输出符号的类型,三个频道分别为Column、value、SQL频道,在每个频道中分别预测表中列名称、表中单元格名称和SQL语法关键字。该算法在WikiSQL数据集上性能优于多个强对比算法。

更多细节可以参考论文:

Yibo Sun, Duyu Tang, Nan Duan, Jianshu Ji, Guihong Cao, Xiaocheng Feng, Bing Qin, Ting Liu and Ming Zhou. Semantic Parsing with Syntax- and Table-Aware SQL Generation. 2018. ACL.

问题生成 Question Generation

统计机器学习算法的性能通常受有指导训练数据量的影响。例如,我们使用上一小节提出的语义解析算法,在有不同指导训练数据的条件下观察模型的性能(这里的有指导训练数据指的是人工标注的“问题-SQL”对)。下表中x轴是log scale的训练数据量,可以发现语义解析的准确率与训练数据量之间存在Log的关系。

基于上述观察,我们希望使用少量的有指导训练数据,达到同样的语义分析准确率。为此,我们提出了一个基于问题生成的语义分析训练框架,如下图所示。给定一个表格,我们首先使用一个基于规则的SQL采样器生成SQL语句,随后用一个在小规模有指导数据上训练的问题生成模型生成多个高置信度的问题,将新生成的数据与小规模的有指导数据结合,共同训练语义分析模型。另外,问题生成模型是基于Seq2Seq模型,为了增加生成问题的多样性我们在解码器端加入了隐含变量。

更多细节可以参考论文:

Daya Guo, Yibo Sun, Duyu Tang, Nan Duan, Jian Yin, Hong Chi, James Cao, Peng Chen and Ming Zhou. Question Generation from SQL Queries Improves Neural Semantic Parsing. 2018. EMNLP.

我们在WikiSQL数据集上进行实验,使用上一章中所介绍的算法(STAMP)作为基本模型。从下表可以看出,融合问题生成模型的训练算法可以在30%训练数据的条件下达到传统训练算法100%训练数据的性能。使用该算法,在100%训练数据的条件下会进一步提升模型的性能。

对话 Conversational Semantic Parsing

前面我们介绍的语义解析算法针对的都是单轮问答场景,即用户针对一个表格每次问一个独立的问题。而在对话场景下,人们会在前一个问题的基础上继续提问,通常人们会使用指代或省略使对话更加简洁和连贯。例如,在下图的例子中,第2个问句中的”that year”指代第一个问句中提及的年份;第3个问题更是直接省略了问题的意图。

针对多轮对话场景下的语义分析,我们以Sequence-to-Action的形式生成问题的语义表示,在该模式下生成一个语义表示等价于一个动作序列,Sequence-to-Action在单轮和多轮语义分析任务中均被验证是非常有效的方法。

具体地,我们在Mohit Iyyer等人发表在ACL 2017上的研究Search-based Neural Structured Learning for Sequential Question Answering的基础上定义了如下表的动作集合,作为我们Sequence-to-Action模型的语法基础。A1-A4的目的是根据当前语句的内容预测SELECT语句中的列名、WHERE语句中的列名、WHERE语句中的操作符(如=, >, <)和WHERE语句中的条件值;A5-A7的目的是从上一句的历史语义表示中复制部分内容到当前语句的语义表示中。

我们以下图为例介绍模型的工作原理。输入历史问题和当前问题,该模型首先使用Controller模块预测当前问句的动作序列骨架(即未实例化的动作序列),随后使用特定的模型(如基于Attention的column prediction模块)去实例化骨架中的每个单元。当模型预测A5-A7(如下图中所展示的A6),模型实现了复制历史语义表示的功能。

更多细节请参考论文:

Yibo Sun, Duyu Tang, Nan Duan, Jingjing Xu, Xiaocheng Feng, Bing Qin. Knowledge-Aware Conversational Semantic Parsing Over Web Tables. 2018. Arxiv.

自然语言生成Table-to-Text Generation

很多场景都需要用自然语言形式呈现答案。因此我们基于表格的文本生成工作,目的是用自然语言描述表格中(如给定的一行)的内容。以下图为例,给定表格中的一行,输出一句完整的描述内容。

我们的模型基于Sequence-to-Sequence框架,如下图所示。为了考虑表格的结构性(如打乱表格的各列不改变其表示),我们在编码器模块没有使用序列化的形式去建模各个列的表示;为了有效从表格中复制低频词到输出序列,我们设计了基于表格结构的复制机制。

具体内容请参考论文:

Junwei Bao, Duyu Tang, Nan Duan, Zhao Yan, Yuanhua Lv, Ming Zhou, Tiejun Zhao. Table-to-Text: Describing Table Region with Natural Language. 2018. AAAI.

本文介绍了我们在基于表格的自然语言理解与生成相关的5项工作。目前,与表格相关的自然语言处理研究刚刚起步,方法尚未成熟,对应的标注数据集也相对有限,我们希望与业界研究者们一起共同探索新的方法和模型,推动该领域的进一步发展。

作者简介

唐都钰,微软亚洲研究院自然语言计算组研究员,主要从事包括智能问答、语义理解、常识推理等在内的自然语言处理基础研究。

孙一博,微软亚洲研究院自然语言计算组的实习生,目前就读于哈尔滨工业大学。研究兴趣包括问答系统、语义分析和深度学习等。

(*本文为 AI科技大本营转载文章,转载请联系原作者)

公开课预告

全双工语音对话

本期公开课中,微软小冰全球首席架构师及研发总监周力博士将介绍微软小冰在全双工语音对话方面的最新成果,及其在智能硬件上的应用和未来将面临的更多技术产品挑战。

添加小助手微信csdnai2,回复:全双工语音对话,加入课程交流群,课程回放以及PPT将在群内分享。

推荐阅读:

  • 技术流 | 手把手教你用Python设计一个命令行界面

  • 中小学AI教育靠谱吗?50%教师教学经验不足1年

  • 程序员沉迷 Bug 可以有多疯?

  • 为什么都瞧不起培训班出来的程序员?

  • 华住2.0? 5亿"万豪"用户信息泄漏! 个人隐私如何保护? 离不开区块链

  • 只了解View的事件分发是不够的,来看下输入系统对事件的处理

  • “我男友是程序员,修BUG比我重要,服了!”

  • 精选26个Python实用技巧,想秀技能先Get这份技术列表!

  • Python全栈工程师学习笔记 | Django的URL路由

你已经是个成熟的表格,该学会NLP了相关推荐

  1. 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...

    私信回复关键词[福利],获取丰富办公资源,助你高效办公早下班! Hello,大家好,我是最近在研究数据透视表的小爽~ 最近,我收到了一个学员的求助: 简单归纳一下,这个问题就是: 如何能让数据透视表的 ...

  2. 实习笔记 C#创建excel表格并且学会使用NPOI

    前言  在创建之初我们先区分一下 excel表格文件,区别于两种格式,一种是xls,一种是xlsx格式其中两者的区别:.xls格式单个工作表最多支持65536行,256列..xlsx格式最多支持104 ...

  3. id随机选择另一张表格的 sql_表格问答1:简介

    在公众号的第一篇文章中我们介绍了一个厉害的开放域问答系统 REALM,它可以根据自然语言问题从知识库中找到相关文章并从文章中找到问题的答案.REALM 这种直接从文章中获取答案的设定在问答领域称为非结 ...

  4. 【技术新趋势】合合信息:表格识别与内容提炼技术理解及研发趋势

    点击领取AI产品100元体验金,助力开发者高效工作解决文档难题: AI产品专享礼遇 引言: 表格是各类文档中常见的对象,其结构化的组织形式方便人们进行信息理解和提取.表格的种类根据有无边框可以划分有线 ...

  5. 上项线体表位置_心理成熟的人都有哪些具体表现呢?

    心理成熟和幼稚到底是怎么定义的呢?一个心理成熟的人会有哪些具体表现呢? 图片源于网络 1.学会享受孤独. 人是社会性的生物,当自己一个人独处时便会感到孤独,会觉得自己与世界格格不入.但其实只要你认真想 ...

  6. word表格怎么缩小上下间距_word表格怎么调整行高间距拉不动

    在word文档的使用过程中我们会经常用到表格,学会调整表格将会给我们带来更多便利.今天小编就为大家带来解决调整word中表格行高间距的办法,小伙伴们快来学习吧! 首先,我们点击打开我们电脑上面的wor ...

  7. python在财务上的应用-致工作党:Python这项技能你一定要会

    叫你当会计!这下逼疯了吧! 生活不易,别当会计 关于报销,这些你应该知道 连财务总监都忍不住点赞的财务分析! "在财务基层岗位工作8年,真的受够了" 一位资深HR直言:不要30岁以 ...

  8. 2020年第十五届竞赛数据上报竞赛数据给高等教学学会统计

    ▌01 相关的通知 全国高校大学生竞赛质量提升工作推进会 高校竞赛排行榜主办方数据上传 操作手册 ▌02 信息处理 1.原始资料文件 资料所在目录: E:\SmartCar\2020比赛\Docume ...

  9. 智能搜索模型预估框架的建设与实践

    在过去十年,机器学习在学术界取得了众多的突破,在工业界也有很多应用落地.美团很早就开始探索不同的机器学习模型在搜索场景下的应用,从最开始的线性模型.树模型,再到近两年的深度神经网络.BERT.DQN等 ...

最新文章

  1. transformer工程实现笔记
  2. wamp(ajax)
  3. ADC和DAC中多通道的含义
  4. [ARM-Linux]Linux-MATLAB安装
  5. PyQt5 技术篇-调用颜色对话框(QColorDialog)获取颜色,调色板的调用。
  6. 【效率】神器工具:新一代多系统启动 U 盘装机解决方案
  7. 关于自然语言处理,有一本通关手册待接收
  8. Apache RocketMQ部署文档
  9. Java并发编程,3分分钟深入分析volatile的实现原理
  10. 每个Java开发人员都应该知道的10个基本工具
  11. couchbase_Couchbase:使用Twitter和Java创建大型数据集
  12. format 函数包含_Python成为专业人士笔记-高级对象Format格式化
  13. 页面间参数传递---基于Vue的uniapp手机端_前端UI_uview工作笔记005
  14. 《中国人工智能学会通讯》——7.7 结束语
  15. Linux USB总线驱动框架分析
  16. 【Java】JDBC基础使用教程
  17. vue双向绑定数据更新会频繁触发render更新
  18. java 获取apk版本号_纯JAVA环境获取APK信息:包名,版本,版本号,大小,权限...
  19. 7-2 点赞(20 分)
  20. 互站源码论坛卖家都是骗子以后大家不要上当

热门文章

  1. Google揭露美国政府通过NSL索要用户资料
  2. RDB 和 AOF 持久化的原理是什么?我应该用哪一个?它们的优缺点?
  3. 程序性能监控分析工具
  4. Centos下卸载openjdk并安装自定义jdk
  5. Fiddler监控面板显示Server栏(Fiddler v5.0)
  6. 『TensorFlow』卷积层、池化层详解
  7. jlink api sdk c# 离线数获取 标定
  8. 搭建nexus后,进入首页的时候出现warning: Could not connect to Nexus.错误
  9. MVC3学习 四 EF删除操作
  10. WordPress页面Page和文章Post的相互转换