遇见数据集

tianyang/repobench-c

收藏
Hugging Face2023-06-24 更新2024-03-04 收录
官方服务:

资源简介:

RepoBench-C(Completion)是RepoBench的一个子任务,专注于在给定文件内上下文(包括前几行代码和导入语句)和跨文件上下文的情况下,预测下一行代码。数据集包含多种设置,如跨文件首次使用(cff)、跨文件随机使用(cfr)和文件内使用(if),并支持Python和Java两种语言的代码预测任务。数据集的结构包括仓库名称、文件路径、上下文、导入语句、代码、提示信息和下一行代码。

RepoBench-C (Completion) is a subtask of RepoBench, which focuses on predicting the next line of code given both in-file context (including preceding code lines and import statements) and cross-file context. The dataset includes multiple experimental settings such as cross-file first-use (cff), cross-file random-use (cfr), and in-file (if) scenarios, and supports code prediction tasks for both Python and Java programming languages. The dataset's structure comprises repository name, file path, context, import statements, code, prompt information, and the target next line of code.

提供机构:
tianyang
原始信息汇总

数据集概述

数据集名称

RepoBench-C (Completion)

数据集描述

RepoBench-C 是 RepoBench 的一个子任务,专注于预测给定文件内上下文(包括几个前续行和导入语句)以及跨文件上下文的下一行代码。

语言与许可证

  • 语言创作者: found
  • 许可证: CC BY-NC-ND 4.0
  • 多语言性: 多语言

数据集大小

  • 大小类别: 100K<n<1M

任务与设置

  • 任务类别: text-generation
  • 任务ID: document-retrieval
  • 支持的任务:
    • python_cff: Python 代码预测,跨文件-首次设置
    • python_cfr: Python 代码预测,跨文件-随机设置
    • python_if: Python 代码预测,文件内设置
    • java_cff: Java 代码预测,跨文件-首次设置
    • java_cfr: Java 代码预测,跨文件-随机设置
    • java_if: Java 代码预测,文件内设置

数据集结构

json { "repo_name": "repository name of the data point", "file_path": "path/to/file", "context": "commented and concatenated cross-file context", "import_statement": "all import statements in the file", "code": "the code for next-line prediction", "prompt": "cross-file context + import statements + in-file code", "next_line": "the next line of the code" }

引用信息

bibtex @misc{liu2023repobench, title={RepoBench: Benchmarking Repository-Level Code Auto-Completion Systems}, author={Tianyang Liu and Canwen Xu and Julian McAuley}, year={2023}, eprint={2306.03091}, archivePrefix={arXiv}, primaryClass={cs.CL} }

搜集汇总
数据集介绍
tianyang/repobench-c 数据集图片
构建方式
RepoBench-C作为仓库级代码自动补全基准测试RepoBench的子任务,专注于下一行代码预测任务。其构建过程精心设计了三种场景:跨文件首次引用(cff)、跨文件随机引用(cfr)及纯文件内预测(if),分别对应不同复杂度的代码上下文依赖。数据集通过提取真实代码仓库中的文件路径、导入语句、跨文件上下文及行内代码片段,拼接形成包含完整上下文信息的提示(prompt),并标注待预测的下一行代码作为目标。这一构造方式旨在模拟开发者在实际编码中面临的多样化上下文环境,确保评测的全面性与真实性。
特点
该数据集的核心特点在于其多层次、多语言的上下文结构设计。每个样本包含仓库名称、文件路径、注释拼接的跨文件上下文、导入语句、行内代码及下一行预测目标,形成结构化的输入输出对。支持Python与Java两种主流编程语言,并针对每种语言提供cff、cfr、if三种设置,覆盖从简单文件内补全到复杂跨文件依赖的场景。数据集规模介于10万至100万样本之间,为模型训练与评估提供了充足且多样化的数据基础,尤其适合检验代码语言模型对长距离依赖与跨文件关系的理解能力。
使用方法
使用该数据集时,可通过HuggingFace的datasets库便捷加载,例如指定语言与设置参数(如'python_cff')及划分(如'test')即可获取对应子集。每个样本以JSON格式存储,包含repo_name、file_path、context、import_statement、code、prompt及next_line字段,其中prompt作为模型输入,next_line作为预测目标。研究者可针对不同设置分别评估模型在文件内补全与跨文件引用场景下的表现,或混合使用以全面测试代码自动补全系统的鲁棒性。数据集采用CC BY-NC-ND 4.0许可,适用于非商业性研究用途。
背景与挑战
背景概述
随着深度学习在代码生成领域的广泛应用,仓库级别的代码自动补全成为提升软件开发效率的关键技术。然而,现有基准测试多聚焦于单文件或函数级别的预测,忽视了跨文件上下文对代码补全的影响。为填补这一空白,Tianyang Liu、Canwen Xu和Julian McAuley于2023年提出了RepoBench基准,其中RepoBench-C(Completion)子数据集专门针对下一行代码预测任务设计。该数据集由加州大学圣迭戈分校的研究团队创建,覆盖Python和Java两种主流编程语言,并细分为跨文件首次引用、跨文件随机引用和文件内三种设置,旨在系统评估模型在仓库级上下文中的代码补全能力。RepoBench-C的发布为代码语言模型提供了更具挑战性的评估标准,推动了从孤立代码片段向真实仓库场景的范式转变。
当前挑战
RepoBench-C面临的核心挑战在于解决仓库级代码补全中跨文件依赖的建模难题。具体而言,模型需从分散于多个文件中的导入语句、模块定义和函数调用中捕捉长距离语义关联,这对注意力机制的上下文窗口和推理效率提出了严苛要求。此外,构建过程中需从GitHub海量仓库中筛选高质量代码片段,并人工标注跨文件上下文的边界,确保数据点既反映真实开发场景又避免版权纠纷。不同设置(cff、cfr、if)的划分进一步增加了数据平衡的复杂性,例如跨文件首次引用场景中样本稀疏,易导致模型过拟合。最后,跨语言(Python与Java)的语法差异要求评估指标需兼顾语言特性,避免因解析错误引入偏差。
常用场景
经典使用场景
RepoBench-C作为仓库级代码自动补全系统的评测基准,其核心应用场景在于评估模型在跨文件上下文下的下一行代码预测能力。数据集通过精心设计的cff、cfr和if三种设置,分别模拟了跨文件模块首次使用、非首次使用以及纯文件内代码补全的典型场景,为衡量代码语言模型在真实软件开发环境中的表现提供了标准化测试平台。研究者可借助该数据集系统性地对比不同模型在Python和Java两种主流编程语言上的补全准确率,从而推动代码智能领域的发展。
实际应用
在实际软件开发中,RepoBench-C直接服务于智能代码补全工具的性能优化与产品化落地。基于该数据集的评测结果,开发者可以针对性地改进IDE插件中跨文件引用的补全策略,例如在首次调用外部模块时优先推荐正确的导入路径与API使用模式。此外,该数据集还可用于训练企业级代码助手,帮助程序员在大型代码仓库中高效完成上下文感知的编码任务,减少因跨文件依赖导致的编译错误,从而提升团队协作效率与代码质量。
衍生相关工作
RepoBench-C的发布催生了多项关于仓库级代码理解与生成的前沿研究。经典工作包括基于检索增强的跨文件代码补全模型,这些模型通过显式检索相关模块上下文来提升预测精度;以及针对长序列建模的Transformer变体,如引入仓库级图结构信息的代码表示学习。此外,该数据集还被用于对比不同预训练策略(如多语言联合训练与仓库级微调)对补全效果的影响,衍生出代码知识蒸馏与增量学习等研究方向,为构建更强大的代码智能系统奠定了方法基础。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务