当前位置: 首页 > news >正文

自然语言to SQL的评估

一、怎么进行一个自然语言to SQL评估?

1.DB——准备可用的数据表

2.准备问题集,自然语言|正确的预期SQL

3.模型执行完成的SQL

4.Table.json——一个存储表格数据或者数据库表结构信息的 JSON 文件。当前是存储的表结构信息的,存储数据库表的元数据,例如表名、列名、列类型、主键、外键等信息。


二、获取Spider数据集,以及评估代码

https://yale-lily.github.io/spider 

个人理解:如有错误请指出

baselines\ :包含不同基线模型的代码和文档。
- nl2code\ :可能是一个将自然语言转换为代码的基线模型目录。
- seq2seq_attention_copy\ :包含序列到序列注意力复制模型的代码和脚本。
- sqlnet\ :包含 Modified SQLNet 基线模型的代码和文档。
- typesql\ :包含 Modified TypeSQL 基线模型的代码和文档。
evaluation_examples\ :包含评估示例文件。
preprocess\ :包含数据预处理的脚本和文档。
evaluation.py :用于评估模型的 Python 脚本。
process_sql.py :用于处理 SQL 查询的 Python 脚本。


三、以上调试成功后,执行命令结果

python evaluation.py --gold [gold file] --pred [predicted file] --etype [evaluation type] --db [database dir] --table [table file]arguments:[gold file]        gold.sql file where each line is `a gold SQL \t db_id`[predicted file]   predicted sql file where each line is a predicted SQL[evaluation type]  "match" for exact set matching score, "exec" for execution score, and "all" for both[database dir]     directory which contains sub-directories where each SQLite3 database is stored[table file]       table.json file which includes foreign key info of each database

[gold file] 提供了正确的 SQL 答案和对应的数据库标识,而 [predicted file] 包含了模型生成的 SQL 预测结果,二者共同用于模型评估。

[evaluation type]:这是对不同评估方式的分类。

  • -match(精确集合匹配得分):当使用 “match” 评估类型时,主要关注的是被评估对象与给定集合在元素上的精确匹配程度。例如在文本处理中,判断一段文本中的词汇集合是否与标准词汇集合完全一致,根据匹配的程度来计算得分。
  • -exec(执行得分):“exec” 评估类型侧重于对某个操作、程序或任务执行结果的评估。比如在代码执行场景下,根据代码执行是否成功、执行结果是否符合预期等方面来计算得分。
  • -all(两者兼具):选择 “all” 意味着同时考虑精确集合匹配得分和执行得分,综合这两个方面来对对象进行评估。
[table file] 指的是 一个名为 table.json 的文件,该文件包含了每个数据库的外键信息。

四、结果分析

各难度样本数量

count 行展示不同难度级别样本数量,easy250 个,medium440 个,hard174 个,extra170 个,总计 1034 个。评估指标

exact match(完全匹配准确率)

衡量预测 SQL 与标准 SQL 完全一致的比例。各难度级别分别为easy0.852medium0.720hard0.718extra0.388 ,整体为 0.697 。数值越高,完全匹配情况越好,extra难度下表现较差,说明复杂场景完全匹配难。

partial matching(部分匹配相关指标 )

  • 准确率(Accuracy):判断预测 SQL 中特定子句(如select where等 )正确的比例。如select子句在easy难度准确率 0.996 hard难度 1.000 ,反映不同难度下子句预测正确性。
  • 召回率(Recall):关注标准 SQL 中特定子句被正确预测出的比例。如where子句在medium难度召回率 0.854 ,体现对标准子句的捕捉能力。
  • F1 值(F1):综合准确率和召回率的指标。如group(no Having)子句在all难度下 F1 0.996 ,越高说明子句预测综合表现越好。

相关文章:

  • 二叉树遍历(C语言版)
  • 小白学习python第四天
  • 跨专业自学AI人工智能学习路线图(2025版)
  • Linux日志处理命令多管道实战应用
  • 【Redis】Redis Zset实现原理:跳表+哈希表的精妙设计
  • 使用PHP对接印度股票市场数据
  • 基于c++的LCA倍增法实现
  • 【博客系统】博客系统第二弹:实现博客列表接口(在 Service 层重新封装 Mapper 层返回结果,避免实体类所有字段都向前端返回)、SimpleDateFormat 类的使用方法
  • 【RabbitMQ消息队列】详解(一)
  • Linux系统类型及常用操作命令总结
  • 第三方软件检测报告:热门办公软件评估及功能表现如何?
  • 电力系统失步解列与振荡解析
  • Java 内存泄漏 详解
  • 【AI提示词】领导力教练
  • 4.2.1 MYSQL语句,索引,视图,存储过程,触发器
  • 第十三步:vue
  • 【PVR】《Adaptive Palm Vein Recognition Method》
  • React Testing Library
  • Java学习手册:开发 Web 网站要知道的知识
  • T检验、F检验及样本容量计算学习总结
  • 合肥一季度GDP为3003.88亿元,同比增长6.6%
  • 报告:到2030年我国无人机产业将率先实现万亿规模
  • 清华数字政府与治理研究院揭牌:服务数字政府建设需求
  • 知名计算机专家、浙江大学教授张森逝世
  • 钟声:美以芬太尼为借口滥施关税,纯属“内病外治”
  • 共话城市自然之美,“微观黄浦”自媒体网络大V沙龙首场活动举行