前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何将SQL语句进行自动翻译

如何将SQL语句进行自动翻译

作者头像
Mezereon
发布2018-12-14 11:19:22
2.9K0
发布2018-12-14 11:19:22
举报
文章被收录于专栏:MyBlogMyBlog

如何将SQL语句进行自动翻译

这里我们利用SQL-to-Text Generation with Graph-to-Sequence Model一文, 给大家简单介绍一下如何对SQL语句进行自动翻译

首先我们来谈谈这个动机, 我觉得最大的动机可能是为了让非技术人员可以了解SQL语句的意义, 进而提出来一种解决方案, 对SQL语句进行自动化的翻译.

说到自动化翻译, 其实就是自然语言处理方面的问题了, 那么之前就有人做过类似的工作, 比如使用规则, 或者模板进行严格形式的翻译

Georgia Koutrika, Alkis Simitsis, and Yannis E Ioannidis. 2010. Explaining structured queries in natural language. In Data Engineering (ICDE), 2010 IEEE 26th International Conference on, pages 333–344. IEEE

利用规则的翻译很显然是十分僵硬的, 也就是说, 翻译出来的东西不流畅, 不想自然语言, 那么在神经网络盛行的今天, 很快就有人提出了, 直接使用Seq2Seq模型来进行翻译, 这个Seq就是Sequence, 序列的意思, 或者Tree2Seq的模型, 我们用RNN或者LSTM可以对语言进行编码, 序列化, 然后再用一个RNN或者LSTM进行解码, 得到翻译结果, 当然这是最简单的编码解码的框架, 实际上可能复杂一点.

但是, 由于序列并不能很好的说明一些内部的结构信息, 举个例子

代码语言:javascript
复制
SELECT company WHERE assets > val0 AND sales > val0 AND industry_rank <= val2 AND revenue = val3

翻译: which company has both the market value and assets higher than val0, ranking in top val2 and revenue of val3

如果是序列的话, 很有可能就翻译不出both the market value and assets higher than val0, 要察觉相同的作用的词在一个序列中其实是困难的, 而如果我们先转换成图结构, 那就简单多了.

图结构

故, 给出这么一个框架:

  • 首先, 我们有SQL语句, 作为输入
  • 将SQL语句转换成一个有向图
  • 再通过Graph2Seq模型, 将有向图翻译出来
    • 利用每个点的k跳个邻居节点进行点嵌入的编码
    • 利用所有点的点嵌入生成全局的嵌入
    • 利用全局嵌入进行解码得到最后的翻译结果

下面我们讲讲如何进行有向图的转换

有向图的转换

将SQL语句转换成有向图其实十分简单, 我们关注于两个句法:

  • SELECT句法 我们将为SELECT a这样的句子, 创建一个SELECT节点和一个a节点, 注意到每一个节点都是有一个文本属性, 我们直接将其文本属性赋值为其名字. 注意到可能会有一些聚集选项, 比如你可能是COUNT, MAX这样的, 我们直接创建一个节点连上相应的列节点, 文本属性为相应的聚集名称.
  • WHERE句法 WHERE可能有很多条件, 如上图所示, 我们将创建许多个条件节点, 然后用AND, OR, NOT这样的逻辑节点来进行连接, 最终全部都连到SELECT节点上.

这里的Graph2Seq模型参考自Kun Xu, Lingfei Wu, Zhiguo Wang, and VadimSheinin. 2018. Graph2seq: Graph to sequence learning with attention-based neural networks. arXiv preprint arXiv:1804.00823

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何将SQL语句进行自动翻译
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档