遇见数据集

nl2jq-bench

收藏
Hugging Face2026-07-19 更新2026-07-20 收录
官方服务:

资源简介:

nl2jq-bench 是一个用于评估模型将自然语言转换为 jq(一种 JSON 查询和处理语言)程序能力的执行评分基准数据集。它包含 400 个经过冻结的测试项目(版本 1.0.0),每个项目代表一个现实世界的查询任务,包括一个简短的自然语言请求、一个小型的 JSON 输入数据、一个经过执行验证的参考 jq 程序以及该程序在 jq 1.7.1 下运行得到的预期输出。模型性能通过其生成的 jq 程序执行输出是否与参考输出匹配来评分,而非基于程序文本相似性。数据集项目根据 jq 语言特性的复杂度分为五个难度层级(Tier 1 到 Tier 5),分别涵盖基础操作、核心功能、聚合与重塑、字符串与格式处理以及泛化构造。设计上严格防止了与训练集(nl2jq)的数据污染,确保了字段名称零重叠、T5层级使用训练数据语法未覆盖的结构,并引入了训练集未出现的新领域(如临床、交通、体育等)。每个数据条目采用 JSON 格式,包含唯一标识符、难度等级、领域、请求文本、输入 JSON、参考程序、预期输出等关键字段,部分条目还包含可接受的替代输出列表。数据集旨在用于模型的一次性评估,以公正衡量其泛化能力,并附带了独立的评分工具(harness.py)。

nl2jq-bench is an execution-based evaluation benchmark dataset for assessing the ability of models to convert natural language into jq (a JSON query and processing language) programs. It contains 400 frozen test items (version 1.0.0), each representing a real-world query task, including a short natural language request, a small JSON input data, an execution-verified reference jq program, and the expected output from running the program under jq 1.7.1. Model performance is scored based on whether the execution output of the generated jq program matches the reference output, rather than program text similarity. The dataset items are divided into five difficulty tiers (Tier 1 to Tier 5) based on the complexity of jq language features, covering basic operations, core functions, aggregation and reshaping, string and format processing, and generalization constructs. The design strictly prevents data contamination with the training set (nl2jq), ensuring zero overlap in field names, the use of structures not covered by training data syntax in Tier 5, and the introduction of new domains not present in the training set (e.g., clinical, transportation, sports). Each data entry is in JSON format, containing key fields such as a unique identifier, difficulty level, domain, request text, input JSON, reference program, expected output, with some entries also including a list of acceptable alternative outputs. The dataset is intended for one-time evaluation of models to fairly measure their generalization capabilities and comes with an independent scoring tool (harness.py).

创建时间:
2026-07-10
原始信息汇总

数据集概述:nl2jq-bench

nl2jq-bench 是一个用于评估自然语言到 jq 程序生成能力的执行评分冻结基准(Execution-scored, Frozen Benchmark)。它属于 nl2jq 项目的一部分。

核心特点

  • 基于执行结果评分:模型得分基于其生成的 jq 程序在 jq 1.7.1 环境下的实际输出是否与参考输出一致,而非基于字符串相似度。
  • 冻结基准:数据集版本 v1.0.0 已冻结,内容永不改变。
  • 抗污染设计:通过多种机制确保与训练集无重叠,防止数据泄露。

数据规模与配置

  • 数据集大小:< 1K 条样本。
  • 配置文件
    • default:包含 test 分片,数据文件为 nl2jq-bench-1.0.0.jsonl(基准集,400 条已冻结样本)。
    • devset-v0:包含 dev 分片,数据文件为 devset-v0.jsonl(已停用的 100 条开发集,不用于基准评估)。
  • 许可证:CC-BY-4.0。

任务与标签

  • 任务类别:文本生成(text-generation)。
  • 标签jqcode-generationjsonexecution-benchmark

数据集设计

基准集包含 400 条样本,划分为五个难度层级(tier),覆盖不同复杂度的 jq 操作:

层级 样本数 内容描述
T1 Elementary 基础 60 单操作:路径/索引/切片/length/keys/has/type///
T2 Core 核心 100 select/map、比较、算术、unique/sort/min/max/addcontains
T3 Aggregation & reshape 聚合与重塑 100 group_by/sort_by/*_byto_entries 家族、map_valuesflattenany/all、对象构造
T4 Strings, formats & composition 字符串、格式与组合 80 split/join/test/capture/sub/gsub、类型转换、插值、@csv/@tsv/@json/@base64、3 阶段以上管道
T5 Generalization 泛化 60 reduceforeachwalk/..paths/getpathtry/catchif/then/elif、对象合并 add、计算键 group_byINDEX

抗污染机制

  • 字段名无重叠:所有输入字段名与完整训练词汇表(687 个名称)无任何共享 ≥4 字符前缀、小编辑变体或常见缩写,且无训练集枚举值出现在输入值或程序字面量中。
  • T5 超语法:60 个 T5 样本仅使用训练数据语法保证不会生成的结构,需单独报告 T5 得分。
  • 新领域:12 个与训练集不相交的领域(如临床、成绩单、交通、体育等)。
  • 密封金丝雀:100 条密封样本已冻结,从未发布,用于检测未来模型是否在测试集上训练。

样本格式示例

json { "id": "v1-042", "tier": 3, "difficulty": 3, "domain": "transit", "request": "total ridership per garage", "input": [ {"route_no": "41B", "garage": "Elmside", "ridership": 10432}, ... ], "reference_program": "group_by(.garage) | map({garage: .[0].garage, ridership: (map(.ridership) | add)})", "expected_output": [ ... ], "order_insensitive": false, "abstract": false, "novel_fields": ["route_no", "garage", "ridership"], "grammar_covered": true, "provenance": "hand", "source": "original", "jq_version": "1.7.1", "frozen_in": "1.0.0", "canary_id": "…", "license": "CC-BY-4.0" }

评分方法

预测正确的条件:其 jq 输出在以下标准化规则下等于可接受的输出(acceptable_outputs)之一:

  • 数组/流等价map(.x).[].x 评分相同。
  • 数组顺序不敏感:针对标记为 order_insensitive 的样本。
  • 浮点数容差:针对数值输出。

评分工具为独立的 harness.py,需 Python 3.10+ 和 jq 二进制文件。

结果示例 (v1.0.0)

系统 pass@1 valid@1 T1 T2 T3 T4 T5-gen
nl2jq-40m (v7 weights) 0.04 0.56 0.08 0.08 0.02 0.01 0.02
nl2jq-qwen3-0.6b (v6 weights) 0.40 0.73 0.65 0.52 0.36 0.28 0.20
nl2jq-qwen3.5-2b (v7 LoRA) 0.46 0.75 0.67 0.61 0.47 0.33 0.13
Claude Opus 4.8 (zero-shot) 0.96 0.98 1.00 0.96 0.96 0.96 0.90

项目资源

搜集汇总
数据集介绍
nl2jq-bench 数据集图片
构建方式
在自然语言至jq代码生成领域,现有基准多囿于字符串相似度评估,难以刻画模型在真实执行语义上的表现。为填补这一空白,nl2jq-bench应运而生,它是一项基于执行结果打分且内容冻结的基准测试。该基准精心构建了400条测试样本,每条样本均包含一段自然语言需求、一个对应的微型JSON输入以及一个经过验证的标准jq参考程序,并依据难度分为五个递进层级(T1至T5)。构建过程中特别实施了抗污染设计:通过字段名零重叠(与训练集687个字段名的严格比对)、T5层级的语法外构造隔离、12个全新领域引入以及密封金丝雀集等手段,确保基准能够诚实评估模型的泛化能力。每一条目均经jq 1.7.1执行验证,并受到对抗性评审以消除歧义,最终形成此一稳定版本(1.0.0)。
特点
nl2jq-bench的核心特点在于其执行导向的评分机制,模型的正确性取决于其生成的jq程序在jq 1.7.1下的输出是否与参考输出匹配,而非基于文本相似度,这更能反映真实的编程能力。其五级难度设计系统覆盖了从基本路径操作到高级归约、递归等复杂构造,尤以T5泛化层级为核心亮点,该层级仅使用训练数据语法从未生成的构造,因此T5得分可视为模型真实泛化能力的关键指标。基准还内置了字段名归一化、数组/流等价、顺序不敏感及浮点容差等智能评分规则,以容纳合法但不完全一致的等价输出。此外,密封金丝雀集与唯一的canary_id标识共同构成了训练数据泄露监测体系。
使用方法
使用nl2jq-bench进行评测需遵循严格的一次性评估纪律:每个模型版本仅允许单次评测,禁止针对该冻结集进行参数调优或提示词迭代。用户可调用harness.py中的score_program函数对单个条目进行执行级评分,该脚本仅依赖Python 3.10以上环境和任一jq二进制文件(建议锁定1.7.1以确保可复现)。外部提交结果需遵循明确协议:在HuggingFace讨论区提交包含所有400条id的JSONL预测文件,同时附上模型名称、推理配置及一次性生成证明,最终由维护者使用固定环境重新执行评分并记录于RESULTS.md中,确保结果的公正与透明。开发调优则应使用已退役的devset-v0.jsonl。
背景与挑战
背景概述
在自然语言处理与代码生成交叉领域,将非结构化文本精准映射为结构化查询或变换程序始终是一项核心挑战。jq作为专为JSON数据设计的轻量级处理语言,在数据工程与API交互中扮演着不可或缺的角色,然而针对自然语言到jq程序生成任务的系统性评估基准却长期缺失。2025年,由Gauthier Piarrette等研究人员主导构建的nl2jq-bench数据集应运而生,该基准隶属于nl2jq项目,旨在填补这一空白。数据集包含400个经过精心设计的测试项,覆盖从基础路径索引到高阶reduce/foreach操作的五个难度层级,并辅以严格的隔离机制(字段名零重叠、T5构造语法不可见、领域主题完全独立)防止数据污染。其权威性体现在执行驱动的评分范式上:模型需在固定jq 1.7.1环境下产生与参考输出完全一致的执行结果,而非依赖文本相似度度量,这为评估语言模型在代码生成任务上的真实泛化能力提供了极具区分度的标尺。
当前挑战
nl2jq-bench数据集所回应的领域核心问题在于:当前自然语言到代码的模型在面临分布外数据时的泛化能力显著不足。具体而言,模型在简单操作(如字段选取、路径索引)上表现尚可,但面对需多步骤组合逻辑(如group_by与map联合使用)或罕见语法结构(如reduce、foreach、walk递归)时,性能骤降——例如从零训练的37M参数模型在分布内开发集上达0.55的pass@1,但在固定基准上跌至0.00-0.09。此外,构建过程本身面临严峻挑战:如何确保测试项与训练集无任何语义或结构重叠?研究团队采用多维度防污染策略——包括字段名词汇树装药式去重(禁止共同前缀、小编辑变体及训练枚举字面量)、语法发射审计(验证T5构造确未出现在训练语法中)、以及12个全新领域主题的引入,同时保留一枚密封的100项金丝雀集用于未来污染检测。这些措施虽保障了基准的公正性,却大幅提升了数据构建与验证的复杂度。
常用场景
经典使用场景
在自然语言处理与代码生成交叉领域中,nl2jq-bench作为一项执行评分的静态基准,专门用于评估模型将自然语言描述转化为可执行的jq程序的能力。该数据集精心构建了400个跨越五个难度等级的样本,覆盖从基本路径索引操作到高阶泛化结构的完整jq语法谱系。开发者可通过单次生成并执行模型输出的jq程序,将其结果与参考执行输出进行精确比对,从而衡量模型在JSON数据查询场景中的真实代码生成水平。这一执行导向的评估机制避免了传统基于文本相似度打分的虚假正例,为程序综合领域提供了更为严谨和可靠的评价范式。
衍生相关工作
围绕nl2jq-bench衍生出的一系列工作构成了从训练数据到推理优化的完整技术链条。配套提供的nl2jq训练集通过语法引导的合成策略生成了大规模jq程序样本,为模型微调奠定了数据基础。在此之上,研究者构建了多个模型变体,包括从零训练的40m参数模型以及基于Qwen系列基座进行LoRA微调的0.6B与2B版本,并探索了输入接地解码与执行重排序等推理增强方法。这些工作共同形成了一个可复现的研究生态系统,不仅推动了小参数模型在代码生成任务中的能力边界拓展,也为后续在程序综合、结构化数据查询及分布外泛化等领域进一步开展系统性实验提供了坚实平台。
数据集最近研究
最新研究方向
nl2jq-bench作为一项面向自然语言到jq代码生成的执行评分基准,其最新研究方向聚焦于评估模型在脱离训练数据分布后的泛化能力。该基准通过包含400个冻结样本的五个难度层级,特别是T5层级中引入reducer、walk路径遍历等语法外结构,以及采用字段名零重叠、新领域注入等抗污染设计,揭示了当前语言模型在从简单操作到复杂组合与泛化任务上的显著性能差距。从零训练的37M参数模型在分布偏移下几乎失效,而基于预训练基座加任务LoRA微调的方案虽能掌握基础操作,却在多阶段组合与语法外结构上表现脆弱,仅为20%以下;前沿零样本模型则凭借强大语义理解达到96%的惊人正确率,这凸显了在代码生成领域,尤其是面对真实世界JSON数据处理需求时,追求领域自适应与泛化能力突破的核心挑战,也为未来可执行代码生成模型的评估提供了严格范式。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务