遇见数据集

CommitBench

收藏
arXiv2024-03-08 更新2024-06-21 收录
官方服务:

资源简介:

CommitBench是由哈索·普拉特纳软件研究所创建的一个大规模数据集,用于训练和评估AI模型生成提交信息。该数据集包含1,664,590条高质量提交信息,来源于38,578个组织和71,676个独特项目,涵盖Java、Python、Go、JavaScript、PHP和Ruby等20种编程语言。数据集通过严格的过滤和增强技术确保数据质量,考虑了隐私、可重现性和许可证等因素。CommitBench旨在解决现有数据集在提交信息生成任务中的不足,提供一个全面的、精心策划的、关注隐私的数据集,以作为未来研究的标准基准。

CommitBench is a large-scale dataset created by the Hasso Plattner Institute for Software Systems, designed for training and evaluating AI models to generate commit messages. This dataset contains 1,664,590 high-quality commit messages sourced from 38,578 organizations and 71,676 unique projects, covering 20 programming languages including Java, Python, Go, JavaScript, PHP, Ruby and others. The dataset ensures data quality through rigorous filtering and enhancement techniques, with considerations for factors such as privacy, reproducibility and licenses. CommitBench aims to address the limitations of existing datasets in the commit message generation task, providing a comprehensive, carefully curated, privacy-focused dataset to serve as a standard benchmark for future research.

创建时间:
2024-03-08
搜集汇总
数据集介绍
CommitBench 数据集图片
构建方式
在软件开发的日常实践中,撰写提交信息(commit message)常被视为一项繁琐却至关重要的任务。为应对现有数据集在提交选择质量、样本规模、重复、隐私及许可分发等方面的缺陷,CommitBench 应运而生。其构建首先基于 CodeSearchNet 的仓库筛选策略,仅收录采用 MIT 许可的公共 GitHub 仓库,以确保数据可合法分发。随后,通过 Git 命令提取每个提交的差异(diff)与原始提交信息,并仅保留单一父提交(即非合并提交)且差异小于 1MB 的样本。在此基础上,实施了一系列精细过滤:剔除二进制变更、文件模式变更及机器人提交;依据序列长度移除信息量不足或过长的提交;识别并排除琐碎消息、还原提交及非英文提交;通过文件扩展名分析确保代码变更集中于 Java、Python 等六种主流语言。最终,采用相似度检测去除重复项,并利用命名实体识别与模式匹配替换隐私敏感信息(如姓名、邮箱),形成包含逾 160 万条高质量提交的基准数据集。
特点
CommitBench 的核心特质在于其全面性、严谨性与合规性。相较于以往数据集,它在规模上实现了显著突破,涵盖来自超过 7 万个独立仓库的样本,有效避免了因仓库数量稀少导致的训练与测试集代码重叠问题,从而提升了评估的客观性与泛化能力。其过滤机制不仅继承了既有最佳实践,更引入了针对琐碎消息、机器人提交及隐私信息的创新性清洗策略,确保了每条样本的信息密度与语义价值。尤为重要的是,该数据集严格遵循许可合规与隐私保护原则,所有仓库均采用允许再分发的开源许可,且通过匿名化处理消除了个人身份信息,为学术研究的可复现性与伦理责任树立了标杆。此外,数据集提供了六种主流编程语言的子集,并发布了长序列版本(最长 2048 个 token),以适应不同模型架构的需求。
使用方法
CommitBench 被设计为序列到序列(sequence-to-sequence)任务的标准化基准,其使用方式灵活且规范。研究者可将提交差异(diff)作为输入序列,将对应的原始提交信息作为目标序列,用于训练或微调各类生成模型,如循环神经网络(RNN)、基于检索的 NNGen 或 Transformer 架构(如 T5、CodeTrans)。数据集以 CSV 格式发布,每条记录包含项目名称、提交哈希、原始提交信息、差异文本及数据集划分标识(训练、验证、测试按 70%/15%/15% 随机分割)。为便于模型对比,官方提供了基于统一评估指标(BLEU、ROUGE-L、METEOR 及 C-GOOD)的基线结果,并支持两种分割策略:随机分割与基于仓库的分割,后者可更严格地检验模型对未见仓库的泛化能力。同时,针对多语言训练场景,研究者可分别使用各语言子集或合并全部样本,以探究跨语言知识迁移的效果。
背景与挑战
背景概述
提交信息的撰写是软件开发中一项繁琐却至关重要的日常任务,然而,许多开发者常因时间或认知负担而对此忽视。自动生成提交信息的技术旨在减轻这一负担,同时提升信息的规范性与可读性。在此背景下,2024年,来自哈索·普拉特纳研究所的Maximilian Schall、Tamara Czinczoll与Gerard de Melo等人推出了CommitBench数据集。该数据集聚焦于提交信息生成任务,旨在为自然语言处理与软件工程交叉领域提供一个高质量、可复现且符合隐私与许可规范的基准。其核心研究问题在于如何构建一个兼具规模、多样性与伦理合规性的数据集,以支撑公平且可比的模型评估。CommitBench的发布为后续研究奠定了坚实的数据基础,有望推动自动提交信息生成技术的持续进步。
当前挑战
CommitBench所面对的挑战首先源于领域任务本身的复杂性:提交信息生成本质上是一个序列到序列的转换问题,要求模型能够从代码变更的差异文本中准确提取语义,并生成简洁、信息丰富的自然语言描述,这远比单纯的机器翻译或摘要任务更为困难。此外,现有数据集普遍存在样本量小、重复率高、隐私保护缺失以及许可不明确等问题,导致模型评估存在偏差。在构建过程中,研究人员需应对海量仓库的筛选、机器人提交与二进制变更的剔除、多编程语言的识别与对齐、重复样本的去重、以及隐私敏感信息的匿名化处理等一系列技术难题。最终,在超过两千三百万原始提交中,经过层层过滤仅保留约一百六十六万条高质量样本,充分体现了数据集构建所面临的严苛挑战。
常用场景
经典使用场景
在软件工程领域,提交信息的自动生成一直是减轻开发者负担、提升代码库可维护性的关键课题。CommitBench 作为一个精心构建的大规模基准数据集,其最经典的使用场景是作为序列到序列(seq2seq)任务的训练与评估平台,用于将代码差异(diff)转化为自然语言描述的提交信息。研究者可借助该数据集,系统性地训练并对比各类模型,从基于循环神经网络的编码器-解码器架构,到基于注意力机制的 Transformer 模型,再到结合检索的最近邻方法,从而在统一、高质量的基准上衡量生成信息的准确性、多样性与语义相关性。
衍生相关工作
CommitBench 的发布催生了一系列后续研究,其中最具代表性的是基于预训练代码语言模型的微调工作。例如,研究者利用 CodeBERT 或 CodeTrans 等模型在 CommitBench 上进行微调,验证了大规模代码预训练对提交信息生成任务的显著增益。此外,该数据集还推动了多语言联合训练策略的探索,实验表明跨编程语言的学习能够赋予模型更广泛的句法与语义理解能力。同时,它也为基于抽象语法树的结构化方法提供了全新的评估基准,促使研究者从文本与结构两个维度共同优化生成信息的质量与多样性。
数据集最近研究
最新研究方向
在软件工程与自然语言处理的交叉领域,提交信息自动生成正成为缓解开发者日常负担的前沿方向。CommitBench数据集的问世恰逢其时,它直面现有数据集在质量、隐私及许可合规性上的系统性缺陷,通过引入大规模、多语言、经严格过滤的高质量提交样本,为模型训练与评估树立了新标杆。该研究不仅验证了基于源代码预训练的Transformer模型在生成多样且信息丰富的提交信息上优于传统方法,还揭示了跨编程语言联合训练能显著提升模型泛化能力。这一工作推动了可复现、负责任的AI基准构建,对提升开源协作效率与代码维护智能化具有深远影响。
相关研究论文
  • 1
    CommitBench: A Benchmark for Commit Message Generation哈索·普拉特纳软件研究所 · 2024年
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务