对于NL2SQL任务提出了一个新的机制->execution guidance :对部分生成的sql执行情况为条件,在解码过程中检测并排除故障程序,从而对整个对于生成的sql语句进行纠正。 该机制可与任何自回归生成模型一起使用.
- 基于S2S结构的attention 和 copy机制的生成会fail at generating syntactically valid queries
- 作者的核心思想在于这种sql语句一部分生成以后就可以执行,执行的结果反过来可以引导生成过程
示例
执行opponent > Haugar时发生runtime error,执行opponent=UEFA时返回空结果,利用这些信息修正sql语句的生成。
Execution-Guided Decoding:
Execution Errors:
Parsing errors: :语法错误
Runtime errors:这种通常由于操作符和他的目标列不匹配造成的,比如sum over a column with string type
在以上两种情况下,decoder 不会得到一个正确的结果,作者假定所有的查询都会得到一个结果,那么又会得到一种错误:
Empty output: sql返回空值
Using Execution Guidance in Decoding
为了避免生成以上的错误,作者通过一个sql执行组件来整合查询结果。即如下的beam search