five

FudanSELab/CodeGen4Libs

收藏
Hugging Face2023-10-05 更新2024-03-04 收录
下载链接:
https://hf-mirror.com/datasets/FudanSELab/CodeGen4Libs
下载链接
链接失效反馈
官方服务:
资源简介:
该数据集用于ASE2023论文《CodeGen4Libs: A Two-stage Approach for Library-oriented Code Generation》中,主要用于库导向的代码生成。数据集包含训练集、验证集和测试集,分别有391811、5967和6002行数据。数据字段包括方法代码、文档、注释、方法名称、导入信息、库信息等。

This dataset is employed in the ASE2023 paper *CodeGen4Libs: A Two-stage Approach for Library-oriented Code Generation*, and it is primarily used for library-oriented code generation. The dataset is divided into training, validation and test sets, which contain 391,811, 5,967 and 6,002 rows of data respectively. The data fields include method code, documentation, comments, method names, import information, library information, etc.
提供机构:
FudanSELab
原始信息汇总

CodeGen4Libs 数据集概述

数据集描述

数据集结构

数据加载

python from datasets import load_dataset dataset = load_dataset("FudanSELab/CodeGen4Libs")

数据集划分

  • 训练集: 391811 条数据
  • 验证集: 5967 条数据
  • 测试集: 6002 条数据

数据字段

  • id: 每个元组的唯一标识符。
  • method: 每个元组的原始方法级代码。
  • clean_method: 每个任务的基准方法级代码。
  • doc: 每个元组的方法级代码文档。
  • comment: 每个元组的自然语言描述。
  • method_name: 方法的名称。
  • extra: 代码仓库的额外信息。
    • license: 代码仓库的许可证。
    • path: 代码仓库的路径。
    • repo_name: 代码仓库的名称。
    • size: 代码仓库的大小。
  • imports_info: 每个元组的导入语句。
  • libraries_info: 每个元组的库信息。
  • input_str: 模型输入的设计。
  • input_ids: 标记化输入的ID。
  • tokenized_input_str: 标记化输入。
  • input_token_length: 标记化输入的长度。
  • labels: 标记化输出的ID。
  • tokenized_labels_str: 标记化输出。
  • labels_token_length: 标记化输出的长度。
  • retrieved_imports_info: 每个元组的检索导入语句。
  • retrieved_code: 每个元组的检索方法级代码。
  • imports: 每个导入语句的导入包。
  • cluster_imports_info: 代码的集群导入信息。
  • libraries: 代码使用的库。
  • attention_mask: 输入的注意力掩码。

数据集大小

  • 数据集大小: 100K<n<1M

引用信息

@inproceedings{ase2023codegen4libs, author = {Mingwei Liu and Tianyong Yang and Yiling Lou and Xueying Du and Ying Wang and Xin Peng}, title = {{CodeGen4Libs}: A Two-stage Approach for Library-oriented Code Generation}, booktitle = {38th {IEEE/ACM} International Conference on Automated Software Engineering, {ASE} 2023, Kirchberg, Luxembourg, September 11-15, 2023}, pages = {0--0}, publisher = {{IEEE}}, year = {2023}, }

搜集汇总
数据集介绍
main_image_url
构建方式
在面向库的代码生成领域,高质量数据集的构建是推动模型性能提升的关键。FudanSELab/CodeGen4Libs数据集源自ASE2023会议发表的同名研究,其构建过程严谨而系统化。研究团队从海量开源代码仓库中收集方法级别的代码片段,通过精心设计的清洗流程去除噪声,并保留每个片段的自然语言描述、文档注释及导入语句等关键信息。数据集进一步利用检索增强技术,为每个样本补充最相关的导入语句与代码示例,形成结构化的输入输出对,最终划分为训练集(391,811条)、验证集(5,967条)与测试集(6,002条),为两阶段库导向代码生成方法提供了坚实的数据基础。
特点
该数据集最显著的特点在于其面向库的专门化设计与丰富的元信息。每个样本不仅包含原始方法代码与对应的自然语言描述,还详尽标注了导入语句、依赖库信息以及代码仓库的额外属性(如许可证、路径与仓库大小)。尤为独特的是,数据集提供了检索增强的导入信息与代码,模拟了真实场景中开发者依赖外部库进行编程的需求。此外,数据集中包含经过分词处理的输入输出序列及其注意力掩码,直接适配于序列到序列的生成模型,使得研究者能够便捷地探索库知识在代码生成中的融合机制。
使用方法
使用该数据集时,研究者可通过HuggingFace的datasets库直接加载,调用load_dataset('FudanSELab/CodeGen4Libs')即可获取划分好的训练、验证与测试子集。数据集中预置的input_str与labels字段可直接作为模型训练的输入与目标序列,而tokenized_input_str与tokenized_labels_str则提供了已分词的版本,便于快速搭建基线模型。对于需要探索检索增强策略的工作,retrieved_imports_info与retrieved_code字段提供了现成的检索结果,可用于训练或评估模型在外部知识辅助下的代码生成能力。研究者亦可利用libraries_info与imports字段进行库级别的影响力分析或构建定制化的提示模板。
背景与挑战
背景概述
在软件工程领域,代码生成技术正逐渐成为提升开发效率的关键工具,然而现有模型在处理依赖特定库的代码生成任务时仍面临严峻挑战。为弥补这一空白,复旦大学软件工程实验室于2023年在ASE会议上提出了CodeGen4Libs数据集,由刘明伟、杨天宇、娄一翎等研究人员共同构建。该数据集聚焦于面向库的代码生成问题,旨在通过两阶段方法将自然语言描述转化为正确的库调用代码。其核心研究问题在于如何有效整合库的导入信息和上下文代码,以提升生成代码的准确性和可用性。数据集包含近40万条训练样本,覆盖多种编程库,为后续研究提供了坚实的基准,对推动代码生成领域的发展具有重要影响力。
当前挑战
该数据集所解决的领域挑战在于,传统的代码生成模型往往忽略了对特定库的依赖关系,导致生成的代码无法正确调用外部库函数,从而降低了代码的实用性和可执行性。构建过程中,研究者面临了多重困难:首先,从海量开源仓库中提取方法级别的代码片段并准确标注其库依赖信息,需要精细的静态分析技术;其次,设计输入格式以同时包含自然语言描述、代码上下文和库导入信息,并确保模型能够有效利用这些异构数据;最后,构建检索机制以动态获取相关库的代码示例,进一步增加了数据预处理的复杂性。
常用场景
经典使用场景
CodeGen4Libs数据集专为面向库的代码生成任务而设计,其经典使用场景在于训练和评估能够自动调用第三方库API的代码生成模型。该数据集以方法级代码为核心,提供了丰富的自然语言描述、库导入信息及检索增强的上下文,使得研究者能够构建两阶段生成范式:首先检索相关库和代码片段,进而生成依赖特定库的函数实现。这一场景精准捕捉了真实软件开发中频繁使用外部库的编程习惯。
实际应用
在实际应用中,CodeGen4Libs可用于构建智能编程助手,帮助开发者在集成复杂第三方库时自动补全方法实现。例如,在处理数据科学或Web开发任务时,模型能基于自然语言描述自动生成依赖特定库(如Pandas、Requests)的代码,极大减少查阅文档和手动编写样板代码的时间。此外,该数据集还可服务于代码推荐系统,在集成开发环境中实时提供库调用建议,提升开发效率。
衍生相关工作
基于CodeGen4Libs,衍生出一系列关于检索增强代码生成与库感知模型的研究工作。例如,相关研究探索了如何利用检索到的导入信息和代码片段来增强预训练语言模型的生成能力,或设计多阶段流水线以分离库检索与代码合成。这些工作进一步验证了数据集中引入库上下文的有效性,并推动了诸如CodeBERT、GraphCodeBERT等模型在库依赖场景下的适配与改进,形成了代码生成领域新的研究分支。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务