Project CodeNet 是由 IBM 推出的一个用于推进 AI 对代码的理解和翻译的开源数据集。旨在为 AI-for-Code 研究界提供一个大规模、多样化和高质量的数据集,以推动 AI 技术的创新。
Project CodeNet 有很多特点(大规模、多样性等),与 ImageNet 相似(ImageNet 是一个巨大的图像数据集,对计算机视觉研究领域产生了巨大的影响)。Project CodeNet 是一个大规模的数据集,有大约 1400 万个代码样本,每个样本都是 4000 个编码问题中的一个预期解决方案。Project CodeNet 的目标是为代码的人工智能做一些 ImageNet 为计算机视觉所做的事情。
Project CodeNet 有几个不一样的特点。除了数据集的规模之外,代码样本是用 50 多种编程语言编写的,主要语言是 C++、C、Python 和 Java。Project CodeNet 中的代码样本都有丰富的注释信息,如代码大小、内存占用、CPU 运行时间和状态,表示接受或错误类型。
90% 以上的问题都有相应的问题描述,其中包含了简洁的问题陈述、输入格式和输出格式的说明。如果可用,官方还从问题描述中提取了输入和输出的样本,并将其作为数据集的一部分。用户可以执行被接受的代码样本(超过 50% 的提交被接受),以提取额外的元数据,并验证生成性人工智能模型的输出是否正确。
此外,Project CodeNet 还解决了数据样本的质量的问题。
丰富的元数据和多样性为 Project CodeNet 提供了大量的使用案例。Project CodeNet 中的 problem-submission 关系对应于 Type-4 相似性,可用于代码搜索和克隆检测。Project CodeNet 中的代码样本被标记为接受状态,因此可以探索 AI 技术来区分正确的代码和有问题的代码。
Project CodeNet 的元数据还可以跟踪一个提交的代码如何从有问题到被接受的演变过程,这可以用来探索自动代码纠正。每个代码样本都标有 CPU 运行时间和内存足迹,可用于回归研究和预测。鉴于其丰富的以多种语言编写的程序,Project CodeNet 可以作为源到源翻译的宝贵基准数据集。