学界 | 不用再学SQL语言了,Salesforce用自然语言就能在数据库中查询

AI 科技评论按:随着机器学习蓬勃发展,新的研究领域不停地出现。除了创造并解决新的问题之外,现有的应用其实也可以从机器学习大为受益。Salesforce 近期的一篇论文就介绍了利用机器学习,无需学习SQL语言就可以在数据库中进行查询。 AI 科技评论把相关报道编译如下。

SQL在编程领域被提到得越来越少,但是SQL语言的学习曲线仍然陡峭,这就让很多人放弃了尝试直接和关系型数据库打交道。CRM 软件服务商 Salesforce 的人工智能研究团队就从自己的业务开始下手,探索如何让不具备 SQL 知识的人通过机器学习打开数据库操作的大门。

在他们近期的论文「Seq2SQL: Generating Structured Queries from Natural Language using Reinforcement Learning」(Seq2SQL:用强化学习从自然语言生成结构化查询语句)中,构建了一个机器学习中典型的序列到序列模型。在其中用到的强化学习让模型在翻译自然语言到SQL数据库查询语句任务中取得了让人眼前一亮的成果。

这就意味着,在实际应用中用户可以直接问系统:“橄榄球高校巡回赛排名第一的是哪支队伍”,系统就会自动查询对应的数据库,然后告诉你答案是密歇根大学队。正如下面这张动图示意的?

Salesforce 研究员 Victor Zhong,也是这篇论文的第一作者,介绍说:“一个正确的查询语句其实可以有好几种写法。如果给系统里输入一个自然语言的问题,对应的查询语句可能会有两三种。我们用强化学习来鼓励系统选用能够查询到相同结果的语句。”

随着自然语言的提问里包含的单词变多,可以想象这种机器翻译任务也会很快变得非常复杂。应对方式就是,对于每一个缺失单词的可能翻译数目施加的限制越多,翻译任务就会变得越简单。Salesforce 的研究人员们就利用了这种想法,他们对系统的提问里、数据库标签里和典型 SQL 查询语句里能够包含的单词做了一些限制,从而简化了翻译系统的设计难度。

让 SQL 平民化其实也不是新鲜事了,Tableau 最近收购了创业公司 ClearGraph,后者的业务就是提供用英语而不是SQL语言查询数据的方案。

Victor Zhong 补充说:“有的模型直接在数据库上做操作,但是如果提问一个关于身份证号的问题就会有潜在的隐私问题。”

除了论文里的方案本身,Salesforce 的这项研究还有一个贡献是他们构建的 WikiSQL 数据集,他们的翻译模型就是用这个数据集训练出来的。他们首先从 Wikipedia 采集了HTML表单,这些表单就成为了随机生成的 SQL 查询语句的基础;他们从这些查询生成了对应的问题,然后把问题放到亚马逊 Mechanical Turk 众包平台上让人类把它们改写成自然语言。每个改写后的句子都会被确认两次,而且还安排了单独的人指导这些确认过程。最终构成的 WikiSQL 数据集也是目前所有同类数据集中最大的一个。

via TechCrunch,AI 科技评论编译

论文地址:https://einstein.ai/static/images/layouts/research/seq2sql/seq2sql.pdf

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏c#开发者

C# : row-clickable GridView and get and set gridview rows using JavaScript

Complete C# code: ---------------- using System; using System.ComponentModel; ...

3006
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2318
来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1873
来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1931
来自专栏菩提树下的杨过

遍历文件夹所有文件(示例)

//要引用 using System.Collections.Specialized; public StringCollection GetAllFile...

2159
来自专栏跟着阿笨一起玩NET

winform 多线程中ShowDialog()步骤无效的解决办法

1061
来自专栏码匠的流水账

聊聊spring cloud的AbstractLoadBalancingClient

本文主要研究一下spring cloud的AbstractLoadBalancingClient

852
来自专栏闻道于事

商城项目整理(三)JDBC增删改查

商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看 商品表建表语句: 1 create table TEST.GOODS_TABL...

5505
来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2520
来自专栏海说

Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅。 1)...

2750

扫码关注云+社区