如何评估一个单轮NL2SQL查询的难度(0~100)

by archimekai@csdn 转载请注明出处

零、难度的含义

笔者将NL2SQL的难度定义为,给定元数据,数据,自然语言查询,一百名五年经验的人类数据分析专家(之前不知道这些元数据和数据),在一天内能有多大比例的人写出自然语言查询所对应的正确SQL(查询结果正确即可)。用100%减去这个概率,得到难度。例如难度为99(%),就意味着只有一名人类专家能写对。难度为0,就意味着所有的人类专家都能写对。

一、元数据的难度

元数据的规模

数据库、表、列、枚举值越多,难度越大。

知识库是否存在知识缺失

指编写SQL所必须的知识,是否在元数据和知识库中不存在。

知识库中是否明确指出了歧义项的理解方式

未指明的歧义项越多,难度越大。注意基于代码的业务中是不存在歧义的,因为代码的每次运行,结果都是唯一的(假设代码结果正确的话)。
元数据是否存在自相矛盾? 自相矛盾越多,难度越大

二、数据的难度

数据是什么样的,决定了SQL需要写得多复杂。干净的数据上,多种SQL的写法都能得到正确的结果。在质量不够高的数据上,必须精确地使用各种SQL功能(DISTINCT, CASE WHEN, 自定义函数等等)才能得到想要的结果。

三、自然语言查询的难度

维度一:自然语言是否定义完整、清晰、无歧义

综合考虑知识库,上下文,用户查询后,查询是否定义完整、清晰、无歧义

维度二:自然语言中歧义的性质和数量如何

如果定义完整,但是有歧义,歧义的性质和数量如何

四、Ground Truth SQL的难度

维度一:SQL语法结构的个数及难度

SQL语句的长度(例如bird论文中的描述)

包括每个SQL中的token数,关键字个数,不相同的n-gram个数,以及join的个数
在这里插入图片描述
在这里插入图片描述

Join表的个数,每个Join的条件

子查询

是否含有DDL,DML

维度二:SQL的执行速度

执行速度的要求越快,难度越大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值