gpancardo/ESQL
收藏资源简介:
一个西班牙语数据集,用于将自然语言指令翻译成结构化输出:Excel公式、SQL查询(SQLite和MySQL方言)以及数据类型定义。
## 数据集元数据 - 语言:西班牙语(es) - 许可证:CC BY 4.0(知识共享署名4.0国际许可协议) - 标签:SQL、Excel、西班牙语、代码生成、Excel公式、SQLite、MySQL、数据类型、文本、Parquet - 标注创作者:机器生成 - 语言创作者:机器生成 - 任务类别:文本生成 - 任务子类型:文本到文本生成 - 美观名称:ESQL - 样本规模类别:1000 < 样本数 < 10000 - 支持数据集查看器:是 - 下载大小:641430 字节 ### 配置项 1. 配置名称:default - 数据文件: - 训练集(train):default/train.parquet - 验证集(val):default/val.parquet - 测试集(test):default/test.parquet 2. 配置名称:excel - 数据文件: - 训练集(train):excel/train.parquet - 验证集(val):excel/val.parquet - 测试集(test):excel/test.parquet 3. 配置名称:sqlite - 数据文件: - 训练集(train):sqlite/train.parquet - 验证集(val):sqlite/val.parquet - 测试集(test):sqlite/test.parquet 4. 配置名称:mysql - 数据文件: - 训练集(train):mysql/train.parquet - 验证集(val):mysql/val.parquet - 测试集(test):mysql/test.parquet 5. 配置名称:types - 数据文件: - 训练集(train):types/train.parquet - 验证集(val):types/val.parquet - 测试集(test):types/test.parquet ### 数据集信息 各配置项的特征字段如下: - 特征字段:`task`(字符串类型)、`instruction`(字符串类型)、`input`(字符串类型)、`output`(字符串类型) #### default配置 - 训练集:2275条样本,字节数251695 - 验证集:284条样本,字节数35916 - 测试集:285条样本,字节数36002 - 总数据集大小:323613 字节 #### excel配置 - 训练集:626条样本,字节数54282 - 验证集:78条样本,字节数9572 - 测试集:78条样本,字节数9728 - 总数据集大小:73582 字节 #### sqlite配置 - 训练集:586条样本,字节数58742 - 验证集:73条样本,字节数10608 - 测试集:74条样本,字节数11605 - 总数据集大小:80955 字节 #### mysql配置 - 训练集:557条样本,字节数70841 - 验证集:70条样本,字节数12155 - 测试集:69条样本,字节数12405 - 总数据集大小:95401 字节 #### types配置 - 训练集:506条样本,字节数48643 - 验证集:63条样本,字节数9737 - 测试集:64条样本,字节数9499 - 总数据集大小:67879 字节 --- # ESQL ESQL是一款西班牙语数据集,用于将自然语言指令转换为结构化输出:涵盖**Excel公式**、**SQL查询**(支持SQLite与MySQL方言)以及**数据类型定义**。 每条数据均包含用户风格的自然语言提示(由`instruction`与`input`组成),以及预期的公式、查询或类型定义(即`output`字段)。`task`字段用于指定目标任务领域: | 任务标识 | 任务描述 | 示例输出 | |---------|----------|----------| | `excel` | 西班牙语Excel公式 | `=SUMAR.SI(B:B;">5000")` | | `sqlite` | SQLite方言SQL查询 | `SELECT * FROM t WHERE x > 1;` | | `mysql` | MySQL方言SQL查询 | `SELECT * FROM t WHERE x > 1;` | | `types` | 列→数据类型推断 | `id INTEGER nombre TEXT ...` | ## 数据集详情 - **整理者:** [Germán Pancardo](https://github.com/gpancardo) - **语言:** 西班牙语(es) - **许可证:** 知识共享署名4.0国际许可协议(CC-BY-4.0) ### 数据集来源 - **代码仓库:** [github.com/gpancardo/esql](https://github.com/gpancardo/esql) - **生成方式:** DeepSeek-V3(网页聊天界面) ## 数据集结构 ### 数据字段 - **`task`(字符串类型):** 目标任务领域,可选值为`excel`、`sqlite`、`mysql`、`types`。 - **`instruction`(字符串类型):** 用户欲完成任务的简短描述。 - **`input`(字符串类型):** 包含具体细节(列名、表名、筛选条件等)的自然语言请求。 - **`output`(字符串类型):** 预期的Excel公式、SQL查询或数据类型规范。 ### 数据拆分 | 拆分集 | 近似占比 | 分层策略 | |-------|----------|----------| | 训练集 | 80% | 按任务类型分层抽样 | | 验证集 | 10% | 按任务类型分层抽样 | | 测试集 | 10% | 按任务类型分层抽样 | 精确的拆分集规模与各任务分布情况记录于`metrics.json`文件中。 ### 数据样例 {"task": "excel", "instruction": "Fórmula para sumar ventas condicionales", "input": "Necesito sumar solo las ventas que superaron los 5000 euros en la columna B.", "output": "=SUMAR.SI(B:B;">5000")"} {"task": "sqlite", "instruction": "Consulta para pedidos recientes", "input": "Obtén los pedidos de los últimos 7 días. Usa la tabla 'pedidos'.", "output": "SELECT * FROM pedidos WHERE fecha >= date('now', '-7 days');"} {"task": "mysql", "instruction": "Seleccionar clientes activos", "input": "Necesito listar todos los clientes que están activos, de la tabla clientes.", "output": "SELECT * FROM `clientes` WHERE `activo` = 1;"} {"task": "types", "instruction": "Inferir tipos de datos de columnas", "input": "Tengo estas columnas: id, nombre, fecha_alta, sueldo, departamento. ¿Qué tipos deberían tener?", "output": "id INTEGER nombre TEXT fecha_alta DATE sueldo DECIMAL(10,2) departamento VARCHAR(255)"} ## 使用方法 python from datasets import load_dataset # 加载所有任务(默认配置) dataset = load_dataset("gpancardo/esql") # 或加载单个任务 excel = load_dataset("gpancardo/esql", "excel") sqlite = load_dataset("gpancardo/esql", "sqlite") mysql = load_dataset("gpancardo/esql", "mysql") types = load_dataset("gpancardo/esql", "types") # 访问拆分集 train = dataset["train"] # 约占80% val = dataset["val"] # 约占10% test = dataset["test"] # 约占10% # 遍历数据集 for row in train: print(f"[{row['task']}] {row['instruction']}") 数据集以**Parquet**格式存储以实现快速加载。原始JSONL文件(`train.jsonl`、`val.jsonl`、`test.jsonl`)也可直接使用,无需依赖`datasets`库。 ## 预处理流程 原始数据(`main.jsonl`)经以下步骤清洗: 1. 修复格式错误的JSON行 2. 移除完全重复的样本 3. 移除包含空值或必填字段为空的样本 4. 按任务类型进行80-10-10分层拆分(随机种子=42) 5. 将JSONL格式的拆分集转换为Parquet格式(包含全量与单任务子集) 完整的清洗与拆分流程可通过以下命令复现: bash cd data python prepare.py ## 指标统计 ### 整体统计 | 统计项 | 数值 | |---|---| | 总样本数 | 2844 | | 唯一指令数 | 2640 | | 唯一输入文本数 | 2836 | | 唯一输出文本数 | 2777 | | 总词汇量(单词数) | 86045 | | 唯一单词数 | 13308 | | 小写化后唯一单词数 | 13003 | ### 任务分布 | 任务类型 | 样本数 | 占比 | |---|---|---| | `excel` | 782 | 27.5% | | `sqlite` | 733 | 25.8% | | `mysql` | 696 | 24.5% | | `types` | 633 | 22.3% | ### 各拆分集规模 | 拆分集 | 总样本数 | `excel` | `sqlite` | `mysql` | `types` | |---|---|---|---|---|---| | 训练集 | 2275 | 626 | 586 | 557 | 506 | | 验证集 | 284 | 78 | 73 | 70 | 63 | | 测试集 | 285 | 78 | 74 | 69 | 64 | ### 字符长度统计(整体) | 字段 | 最小值 | 最大值 | 平均值 | 中位数 | P5分位数 | P95分位数 | |---|---|---|---|---|---|---| | `instruction` | 11 | 104 | 40.8 | 39 | 20 | 69 | | `input` | 31 | 212 | 81.2 | 80 | 52 | 118 | | `output` | 4 | 1029 | 96.8 | 94 | 14 | 219 | ### 单词长度统计(整体) | 字段 | 最小值 | 最大值 | 平均值 | 中位数 | P5分位数 | P95分位数 | |---|---|---|---|---|---|---| | `instruction` | 2 | 18 | 6.4 | 6 | 3 | 11 | | `input` | 4 | 41 | 12.3 | 12 | 7 | 19 | | `output` | 1 | 116 | 11.5 | 12 | 1 | 28 | 完整的各拆分集细分统计可参阅[`metrics.json`](./metrics.json)。 ## 适用场景 ### 直接使用场景 本数据集旨在用于西班牙语到结构化输出任务的大语言模型(LLM/Large Language Model)微调与评估: - 将西班牙语自然语言转换为Excel公式 - 根据西班牙语提示生成SQL查询(SQLite/MySQL) - 推断数据库列的数据类型规范 本数据集采用统一的`instruction` + `input` → `output`格式,兼容指令微调流水线。 ### 不适用场景 - **非西班牙语输入:** 本数据集仅支持西班牙语,使用其他语言的提示将导致结果质量下降。 - **生产级SQL查询:** 生成的SQL查询仅满足语法正确性,未经过Schema优化。请勿直接将生成的查询用于生产数据库,需经过人工审核。 - **Excel本地化适配:** 输出结果使用西班牙语函数名(如`SUMAR.SI`而非`SUMIF`),若用于英语Excel公式生成将无法生效。 - **身份识别任务:** 本数据集未包含任何真实用户数据,不得用于任何去匿名化或身份推断任务。 ## 数据集构建 ### 构建初衷 本数据集的构建旨在填补现有文本到代码资源的空白:目前针对西班牙语的高质量数据集寥寥无几,且尚无数据集能够以统一格式同时覆盖Excel公式、SQL(两种方言)与数据类型推断任务。本数据集专为服务西班牙语用户的中小规模大语言模型设计,作为微调资源使用。 ### 源数据 本数据集全部由**DeepSeek-V3**通过其网页聊天界面生成。提示词设计覆盖了四种任务类型的多样化、贴近真实场景的样本。本数据集未使用任何现有数据集、网页爬取数据或用户数据作为源材料。 #### 数据收集与处理流程 1. 设计提示词以覆盖多种SQL模式(连接、聚合、子查询、日期函数)、Excel函数(查找、条件判断、数学运算、文本处理)以及列类型推断场景。 2. 从DeepSeek-V3收集生成结果。 3. 清洗原始输出(`main.jsonl`):修复格式错误的JSON行、移除完全重复样本、移除包含空值或必填字段为空的样本。 4. 按任务类型进行80-10-10分层拆分(随机种子=42)。 完整的流程可通过`python prepare.py`复现。 ## 偏差、风险与局限性 ### 局限性 - **仅支持西班牙语:** 输出结果使用西班牙语函数名与关键词(如`SUMAR.SI`而非`SUMIF`),不适用于多语言或仅英语的使用场景。 - **机器生成样本质量:** 所有样本均由DeepSeek-V3生成。尽管已对输出进行语法正确性抽查,但未进行正式的语义验证。部分查询可能逻辑正确但并非最优效率。 - **模板多样性:** 作为大语言模型生成的数据集,尽管已尝试丰富提示词多样性,部分样本仍可能遵循重复的结构模式。 - **领域覆盖范围:** 本数据集覆盖了常见的SQL/Excel操作,但未穷尽所有边缘场景、方言特定特性或Excel函数。 ### 建议 - 针对生产环境使用的查询,建议进行人工审核。 - 用户应根据自身特定用例评估模型性能,而非仅依赖预留测试集的指标。 - 对于高风险应用场景,建议补充人工整理的样本。 ### 个人与敏感信息 本数据集未包含任何个人、敏感或隐私信息。所有数据均为合成生成,未涉及真实个人、地址、财务记录或其他可识别信息。 ## 引用方式 请按以下格式引用本数据集: **BibTeX格式:** bibtex @dataset{esql, title = {{ESQL}: Spanish structured-output dataset (Excel, SQL, data types)}, author = {Pancardo, Germán}, year = {2026}, note = {Generated with DeepSeek-V3}, url = {https://github.com/gpancardo/esql} } **APA格式:** Pancardo, G. (2026). *ESQL: Spanish structured-output dataset (Excel, SQL, data types)* [Dataset]. https://github.com/gpancardo/esql ## 数据集卡片作者 [Germán Pancardo](https://github.com/gpancardo) ## 数据集卡片联系方式 如有疑问或问题,请在[github.com/gpancardo/esql](https://github.com/gpancardo/esql)提交Issue。 ## 许可证 知识共享署名4.0国际许可协议(CC-BY-4.0)。



