赞
踩
论文:TypeSQL: Knowledge-Based Type-Aware Neural Text-to-SQL Generation
⭐⭐⭐
Code: TypeSQL | GitHub
本论文是在 SQLNet 网络上做的改进,其思路也是先预先构建一个 SQL sketch,然后再填充 slots 从而生成 SQL。
论文发现:在 question 中往往包含与特定数据相关的 rare entity 和 number,这对于在 SQL 查询中推断 column name 和 WHERE condition value 很重要,但这些 entity 和 number 缺乏准确的 embedding。为了解决这个问题,本工作为 question 的每个 word 分配了一个 type:知识图谱中的 entity、“COLUMN” 或者一个 number,如下图的最下面的 input 所示,为 question 的每个 word 都分配了一个 type:
具体来说,首先对 question 做分词,切分成长度为 2~6 的 n-grams,然后:
COLUMN
INTEGER
、FLOAR
、DARE
、YEAR
PERSON
、PLACE
、COUNTRY
、ORGANIZATION
、SPORT
,并做相应的 type 标注,这五类实体已经可以覆盖了数据集中的绝大多数实体由此,我们才可以看到上图中对 question 的 type 标注结果。
拓展来开的话,如果 database 的内容也可以访问,那我们在做 type 标注时,还会将 gram 从 table schema、column content 和 column label 中做检索,并将 type 标注为具体的 column name。比如上图中,question 中的 mort drucker 可以被标注为 artist,因为我们能在数据库中检索到这个 gram 并发现对应的 column name 为 artist。
对 question 做完 type 标注后,在之后做编码时,就可以将 question 中的原 token 和对应的 type 一起做 embedding,并将两个 embedding 连接在一起做 encode 并进一步处理。
在之后填充 SQL sketch 做 slots 预测时,原来的 SQLNet 模型是为五种 slots 设计了五个 model 来分别训练和预测,而本文的 TypeSQL 将其中功能相似的 model 做了合并,最终只需要 3 个 model 来完成填充任务,架构上做了简化。具体公式可以参考原论文。
这篇论文的工作主要是对 SQLNet 做的改进,改进主要有如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。