five

tianyang/repobench-r

收藏
Hugging Face2023-06-17 更新2024-03-04 收录
下载链接:
https://hf-mirror.com/datasets/tianyang/repobench-r
下载链接
链接失效反馈
官方服务:
资源简介:
RepoBench-R(检索)是RepoBench的一个子任务,专注于从项目仓库中检索最相关的代码片段以进行下一行代码预测。数据集包含四种设置:python_cff、python_cfr、java_cff和java_cfr,每种设置又分为train_easy、train_hard、test_easy和test_hard四个分割。数据集的每个数据点包含仓库名称、文件路径、上下文代码片段、导入语句、黄金代码片段索引、代码和下一行代码。

RepoBench-R (Retrieval) is a subtask of RepoBench, focusing on retrieving the most relevant code snippets from project repositories for next-line code prediction. The dataset includes four settings: python_cff, python_cfr, java_cff, and java_cfr. Each setting is further divided into four splits: train_easy, train_hard, test_easy, and test_hard. Each data point in the dataset contains repository name, file path, contextual code snippet, import statements, ground-truth code snippet index, code, and next-line code.
提供机构:
tianyang
原始信息汇总

数据集概述

数据集名称

RepoBench-R (Retrieval)

数据集描述

RepoBench-R 是 RepoBench 的一个子任务,专注于从项目仓库中检索最相关的代码片段,用于下一行代码预测。

数据集结构

数据集包含以下字段:

  • repo_name: 数据点的仓库名称
  • file_path: 文件路径
  • context: 上下文代码片段列表
  • import_statement: 文件中的所有导入声明
  • gold_snippet_index: 黄金代码片段在上下文列表中的索引
  • code: 下一行预测的代码
  • next_line: 代码的下一行

数据集子集

数据集包含以下子集:

  • python_cff: Python 数据集,cff 设置
  • python_cfr: Python 数据集,cfr 设置
  • java_cff: Java 数据集,cff 设置
  • java_cfr: Java 数据集,cfr 设置

每个子集包含以下分割:

  • train_easy: 训练集,简单难度
  • train_hard: 训练集,困难难度
  • test_easy: 测试集,简单难度
  • test_hard: 测试集,困难难度

加载数据示例

python from datasets import load_dataset

dataset = load_dataset("tianyang/repobench-r", "python_cff", split="test_easy")

许可证信息

CC BY-NC-ND 4.0

引用信息

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} }

搜集汇总
数据集介绍
main_image_url
构建方式
RepoBench-R作为RepoBench的子任务,专注于仓库级代码自动补全系统中的检索组件。其构建基于跨文件代码预测场景,从公开的代码仓库中提取数据,通过区分跨文件模块的首次使用(cff)与随机使用(cfr)两种设置,形成四个子集:python_cff、python_cfr、java_cff和java_cfr。每个子集进一步依据上下文代码片段数量划分为易(5≤k<10)和难(k≥10)两个难度等级,对应训练与测试集,从而系统性地构建了一个层次分明的检索基准数据集。
特点
该数据集的核心特点在于其精细化的设计维度。首先,它同时覆盖Python和Java两种主流编程语言,增强了跨语言适用性。其次,通过cff与cfr设置模拟真实开发中跨文件依赖的不同发生阶段,提升了任务的生态效度。此外,难度分级机制允许研究者从简单到复杂逐步评估模型性能,而每个数据点包含仓库名、文件路径、上下文代码片段、导入语句及下一行预测目标等结构化信息,为检索任务提供了丰富的语义线索。
使用方法
使用者可通过HuggingFace的datasets库便捷加载数据,例如调用load_dataset('tianyang/repobench-r', 'python_cff', split='test_easy')获取特定子集与分割。split参数可选,若省略则加载完整数据集。加载后的数据以JSON格式呈现,每条记录包含repo_name、file_path、context列表、import_statement、gold_snippet_index、code及next_line字段,便于直接用于训练或评估代码检索模型。建议研究者根据任务需求选择对应语言、设置和难度层级的数据进行实验。
背景与挑战
背景概述
在软件工程与自然语言处理交叉领域,代码自动补全系统已成为提升开发者效率的关键工具。然而,现有基准测试多聚焦于单文件或局部上下文,未能充分评估跨文件依赖关系对代码预测的影响。RepoBench-R数据集由Tianyang Liu、Canwen Xu和Julian McAuley于2023年提出,旨在弥补这一空白,专门针对仓库级别的代码检索任务。该数据集基于RepoBench框架,聚焦于从项目仓库中检索最相关的代码片段以辅助下一行代码预测,涵盖Python和Java两种主流编程语言,并引入跨文件首次使用(cff)与随机使用(cfr)两种设置,以及易(easy)与难(hard)两种难度级别。通过提供细粒度的评估维度,RepoBench-R为代码智能系统在复杂仓库环境下的检索能力提供了标准化测试平台,对推动代码补全技术的实用性研究具有重要影响力。
当前挑战
RepoBench-R所解决的领域挑战在于,仓库级别的代码自动补全系统需处理跨文件代码依赖、模块间调用关系及项目范围内的语义一致性,传统基于局部上下文的检索方法难以应对此类复杂场景。构建过程中面临的关键挑战包括:第一,如何从真实软件仓库中精确提取跨文件上下文,确保检索目标与当前代码行的逻辑关联性;第二,需设计合理的难度划分标准(如上下文片段数量k≥10定义为hard),以模拟不同复杂度的检索需求;第三,在Python与Java两种语言间保持数据结构和评估指标的一致性,同时兼顾语言特性差异(如导入语句处理方式);第四,需平衡训练数据与测试数据的分布,避免因仓库规模或代码风格偏差导致过拟合。这些挑战共同构成了RepoBench-R在代码检索基准测试领域的独特价值与实施难度。
常用场景
经典使用场景
RepoBench-R作为仓库级代码自动补全系统的检索子任务基准,其经典使用场景聚焦于跨文件上下文的代码片段检索。研究者通过该数据集评估模型能否在包含多个代码片段的上下文中,精准定位与下一行预测最相关的代码片段。数据集设计了跨文件首次引用(cff)和跨文件随机引用(cfr)两种设置,并依据上下文片段数量划分简单与困难难度,为代码检索任务提供了细粒度的评测维度。这一设计模拟了真实开发环境中,代码补全需从项目中多个文件的历史代码中提取关键信息的复杂场景。
解决学术问题
该数据集解决了仓库级代码补全中跨文件代码检索缺乏标准化基准的学术困境。传统代码检索任务多聚焦于单文件或独立代码片段,而RepoBench-R首次将检索目标与下一行代码预测任务深度耦合,揭示了上下文代码片段数量与检索难度的非线性关系。通过提供Python和Java双语言、双难度的标准化评测集,它量化了模型在复杂项目结构下的检索能力,为比较不同检索策略(如基于符号、语义或图结构的方法)提供了公平的竞技场,推动了代码理解与生成领域的交叉研究。
衍生相关工作
RepoBench-R衍生了一系列经典工作,包括基于对比学习的跨文件代码检索模型、融合图神经网络的项目级上下文编码器,以及针对长代码序列的高效Transformer架构。研究者基于该数据集提出了检索增强的代码生成框架,将检索结果作为显式记忆注入生成模型,显著提升了代码补全的准确性。同时,该数据集催生了针对仓库级代码理解的预训练策略,如通过跨文件依赖关系掩码建模来增强代码表示。这些工作不仅深化了对代码检索与生成协同机制的理解,也为后续如RepoBench-Comp(补全子任务)和RepoBench-Repair(修复子任务)等扩展基准奠定了方法论基础。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作