遇见数据集

JetBrains-Research/lca-codegen-medium

收藏
Hugging Face2024-05-30 更新2024-03-04 收录
官方服务:

资源简介:

该数据集名为LCA Project Level Code Completion,主要包含GitHub上Python项目的代码补全数据。数据集的每个数据点包括仓库名称、提交哈希、补全文件内容、补全行分类、仓库快照等信息。数据集通过克隆GitHub上的Python项目并提取提交中的`.py`文件来收集数据。数据集的中等规模由仓库快照中`.py`文件的字符数定义,范围在48K到192K之间。数据集包含224个数据点,80个仓库和175个提交。补全文件的行数中位数为310行,仓库快照中`.py`文件的中位数为34个,非`.py`文件的中位数为64.5个。

该数据集名为LCA Project Level Code Completion,主要包含GitHub上Python项目的代码补全数据。数据集的每个数据点包括仓库名称、提交哈希、补全文件内容、补全行分类、仓库快照等信息。数据集通过克隆GitHub上的Python项目并提取提交中的`.py`文件来收集数据。数据集的中等规模由仓库快照中`.py`文件的字符数定义,范围在48K到192K之间。数据集包含224个数据点,80个仓库和175个提交。补全文件的行数中位数为310行,仓库快照中`.py`文件的中位数为34个,非`.py`文件的中位数为64.5个。

提供机构:
JetBrains-Research
原始信息汇总

数据集概述

数据集信息

特征

  • repo: 仓库名称,格式为 {GitHub_用户名}__{仓库名称},数据类型为字符串。
  • commit_hash: 提交哈希,数据类型为字符串。
  • completion_file: 包含完成文件内容的字典,结构如下:
    • filename: 完成文件的路径,数据类型为字符串。
    • content: 完成文件的内容,数据类型为字符串。
  • completion_lines: 包含行类别的字典,值为整数列表(要完成的行号),类别包括:
    • committed: 包含至少一个在提交文件中声明的函数或类。
    • inproject: 包含至少一个在项目中声明的函数或类(不包括之前的)。
    • infile: 包含至少一个在完成文件中声明的函数或类(不包括之前的)。
    • common: 包含至少一个被分类为常见的函数或类(不包括之前的)。
    • non_informative: 被分类为非信息性的行,例如太短、包含注释等。
    • random: 从其余行中随机抽样。
  • repo_snapshot: 包含提交前仓库快照的字典,结构与 completion_file 相同,但文件名和内容组织为列表。
  • completion_lines_raw: 与 completion_lines 相同,但抽样前。

分割

  • test: 测试集,字节数为 514928459,样本数为 224。

数据集大小

  • 下载大小: 225824560 字节
  • 数据集大小: 514928459 字节

配置

  • default: 数据文件路径为 data/test-*。

数据点结构

  • repo: 仓库名称,格式为 {GitHub_用户名}__{仓库名称}。
  • commit_hash: 提交哈希。
  • completion_file: 包含完成文件内容的字典,结构如下:
    • filename: 完成文件的路径。
    • content: 完成文件的内容。
  • completion_lines: 包含行类别的字典,值为整数列表(要完成的行号),类别包括:
    • committed: 包含至少一个在提交文件中声明的函数或类。
    • inproject: 包含至少一个在项目中声明的函数或类(不包括之前的)。
    • infile: 包含至少一个在完成文件中声明的函数或类(不包括之前的)。
    • common: 包含至少一个被分类为常见的函数或类(不包括之前的)。
    • non_informative: 被分类为非信息性的行,例如太短、包含注释等。
    • random: 从其余行中随机抽样。
  • repo_snapshot: 包含提交前仓库快照的字典,结构与 completion_file 相同,但文件名和内容组织为列表。
  • completion_lines_raw: 与 completion_lines 相同,但抽样前。

数据收集方法

数据收集自 GitHub 上主要语言为 Python 的仓库。每个数据点的完成文件是在提交中添加到仓库的 .py 文件。提交前的仓库状态为仓库快照。

数据集统计

  • 数据点数量: 224
  • 仓库数量: 80
  • 提交数量: 175

完成文件

  • 行数中位数: 310
  • 行数最小值: 200
  • 行数最大值: 1648

仓库快照

  • .py 文件: 中位数 34,范围从 3 到 117
  • 非 .py 文件: 中位数 64.5,范围从 3 到 3977
  • .py 行数: 中位数 3786
  • 非 .py 行数: 中位数 9735

行计数

  • infile: 2224
  • inproject: 2236
  • common: 779
  • committed: 1495
  • non-informative: 858
  • random: 1084
  • 总计: 8676
搜集汇总
数据集介绍
构建方式
在代码生成与补全领域,构建高质量、具有层级结构的数据集是评估模型对项目级上下文理解能力的关键。LCA Codegen Medium 数据集由 JetBrains Research 精心构建,其数据源自 GitHub 上以 Python 为主语言的公开仓库。每个数据点对应一次特定的提交,其中补全文件(completion file)即为该次提交中新增的 .py 文件。数据集记录了提交前仓库的快照(repo snapshot),从而提供了丰富的项目级上下文。该中等规模版本通过筛选仓库快照中 .py 文件的总字符数在 48K 至 192K 之间的样本来界定,最终收录了来自 80 个仓库、175 次提交的 224 个数据点。
特点
该数据集的核心特色在于其精细的层级化标注体系。针对补全文件中的每一行,数据集依据其引用的函数或类所属的范围,将其划分为六类:committed(来源于本次提交)、inproject(项目内其他文件)、infile(当前文件内)、common(通用函数如 main)、non_informative(无信息量行)以及 random(随机采样)。这种分类不仅揭示了代码补全任务中不同依赖层次的分布,还为分析模型对不同范围上下文的利用能力提供了量化依据。此外,数据集中补全文件的行数中位数为 310,仓库快照中 .py 文件数量中位数为 34,体现了项目规模与补全粒度的均衡。
使用方法
使用该数据集时,研究者可通过 Hugging Face Datasets 库便捷加载,仅需执行 `load_dataset('JetBrains-Research/lca-codegen-medium', split='test')` 即可获取测试集。每个数据点包含仓库名称、提交哈希、补全文件内容及其对应的行级标注信息,以及提交前的完整仓库快照。这些丰富的字段支持多种实验设计:可基于 `completion_lines` 中的类别进行针对性评估,也可利用 `repo_snapshot` 模拟真实项目环境下的代码补全。数据集已预先划分好测试集,可直接用于评测代码语言模型在项目级补全任务上的表现,并可通过配套的 Long Code Arena 在线排行榜进行结果对比。
背景与挑战
背景概述
在深度学习驱动的代码生成领域,项目级代码补全任务因其对代码仓库全局上下文的理解需求而成为研究焦点。该数据集由JetBrains Research于近年创建,旨在解决现有代码补全数据集仅关注单文件或局部上下文、缺乏对跨文件依赖关系建模能力的局限。核心研究问题聚焦于如何利用仓库快照中的全局结构信息,提升代码补全模型对项目内函数、类及其调用关系的预测准确性。通过采集80个Python仓库中的175次提交,形成224个测试样本,该数据集为评估模型在真实开发场景下的表现提供了标准化基准。其影响力体现在推动长上下文代码模型的发展,并为后续研究如Long Code Arena等评测平台奠定了基础。
当前挑战
该数据集面临的核心挑战在于跨文件依赖的建模难度:模型需从仓库快照中多达数千行的Python代码中,准确识别并利用分布式上下文信息,如跨文件类定义、函数调用链等,这对注意力机制的上下文窗口和记忆能力提出严苛要求。构建过程中,数据采集需处理仓库克隆的版本兼容性、提交历史中快照与补全文件的时间对齐,以及行级标注的精度控制——例如区分'committed'(提交中新增的类/函数)与'inproject'(项目内其他文件定义)等标签时,需精确解析AST以避免误分类。此外,样本筛选需平衡仓库规模(48K-192K字符)与多样性,确保覆盖中小型项目的典型模式,同时避免因文件长度波动导致的标注偏差。
常用场景
经典使用场景
在代码智能领域,LCA CodeGen Medium数据集专为项目级代码补全任务而设计,其核心应用场景是评估和训练模型在真实仓库上下文中预测缺失代码行的能力。该数据集提供了完整的仓库快照和待补全文件的上下文信息,并精细标注了每行代码的类别(如文件内、项目内、提交相关等),从而支持对模型在跨文件依赖和项目级语义理解上的性能进行系统评测。研究者常利用该数据集来检验代码生成模型在复杂、多文件项目环境中的补全准确度与上下文利用效率。
解决学术问题
该数据集有效解决了现有代码补全基准多局限于单文件或局部上下文、缺乏项目级语义关联评估的问题。通过引入细粒度的行级分类标签(如committed、inproject、infile),它使得学术界能够量化分析模型对不同类型代码依赖关系的捕获能力,进而深入探究跨文件上下文对补全质量的影响机制。这一设计推动了代码生成研究从片段级向项目级演进,为理解模型在真实开发场景下的泛化瓶颈提供了关键数据支撑,显著提升了基准测试的生态效度。
衍生相关工作
该数据集催生了一系列聚焦项目级代码补全的经典研究,如基于检索增强的补全方法(Retrieval-Augmented Code Completion)和长上下文Transformer架构的优化工作。后续工作常以该数据集为基准,对比不同模型在跨文件依赖推理上的表现,并衍生出诸如代码上下文压缩、仓库级注意力机制等创新技术。此外,JetBrains Research团队基于该数据构建的Long Code Arena评测平台,已成为评估长序列代码理解能力的重要标准,推动了代码智能领域从单文件向多文件协同分析的范式转变。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务