IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 50, NO. 9, SEPTEMBER 2024
Chain-of-Thought in Neural Code Generation: From and for Lightweight Language Models
CodeCoT-9k 是本论文构建的核心数据集,专门用于训练和验证提出的COTTON模型。它是一个高质量的、包含自然语言功能描述、对应代码片段以及思维链(CoT)的三元组数据集。
数据集的基本构成与规模
CodeCoT-9k数据集包含 9,264个高质量的数据对。这些数据对随机划分为:
训练集:9,000个样本
验证集:264个样本
每个数据样本包含三个关键组成部分:
自然语言描述(X):对代码功能的文本描述
代码片段(Y):对应的实现代码
思维链(C):分步的解题思路和实现逻辑
数据集的统计特征如下表所示:
从统计数据可以看出,无论是提示文本还是CoT内容,绝大多数(超过99%)的序列长度都在256个词以内,这确保了数据在训练过程中的高效处理。
数据来源与原始数据集选择
CodeCoT-9k的原始数据来源于三个广泛使用的开源数据集:
选择这些数据集的原因是它们都包含自然语言描述与编程语言的配对,且已在相关研究领域得到广泛应用。
数据质量控制流程
CodeCoT-9k的构建采用了严格的两阶段质量控制流程,如下图所示:
第一阶段:启发式规则清洗
作者设计了三条启发式规则来过滤低质量数据:
R1 代码过滤:使用AST解析工具提取方法级代码和功能注释,过滤语法不正确的代码
R2 文档过滤:使用DocChecker工具确保文档与代码的一致性,移除文档不一致的代码片段
R3 相似性过滤:使用codet5p嵌入模型进行代码表示学习,基于余弦相似度移除超过语义相似度阈值的代码片段,防止训练集数据泄露
第二阶段:多智能体对齐清洗
基于GPT-3.5-turbo构建了三个专门的智能体:
质量检查器(A1):评估代码的教育价值,过滤教育意义不足的代码片段
CoT生成器(A2):采用单样本提示方法生成多样化的CoT
一致性检查器(A3):确保生成的CoT与代码语义一致
数据格式与示例
CodeCoT-9k中的数据遵循特定的标准化格式。下图展示了一个典型的数据样本:
该示例清晰地展示了从自然语言描述到CoT再到代码实现的完整转换流程。CoT采用”如何解决”的分步格式,为模型提供了清晰的解题指导。
数据集的技术特点与创新
教育价值导向:特别强调代码片段的教育意义,确保数据对学习基本编码概念有价值
语义一致性:通过多智能体对齐确保CoT与代码的语义匹配
多样性保证:故意不向CoT生成器透露具体实现细节,鼓励生成多样化的解题思路
标准化处理:将代码片段和功能注释转换为类似HumanEval的标准化提示格式
在论文中的应用价值
CodeCoT-9k作为高质量的训练数据,为COTTON模型提供了:
学习生成高质量CoT的能力
理解代码与自然语言映射关系的基础
验证模型性能的基准数据集
该数据集的构建方法和质量控制流程为类似软件工程任务的数据集构建提供了可复用的范例,这也是论文的重要贡献之一。