📖标题:CodeInsight: A Curated Dataset of Practical Coding Solutions from Stack Overflow
🌐来源:arXiv, 2409.16819
摘要
🔸我们介绍了一种为代码生成量身定制的新数据集,旨在帮助开发人员完成常见任务。我们的数据集提供了示例,其中包括明确的意图、相关的代码片段以及三个相关单元测试的平均值。它包括一系列库,如Pandas、Numpy和Regex,以及70多个从Stack Overflow派生的Python代码标准库。我们的数据集由Python专家精心制作的3409个示例组成,专为模型微调和独立评估而设计。
🔸为了完成单元测试评估,我们对示例进行分类,以获得更细粒度的分析,从而加深对模型在特定编码任务中的优缺点的理解。这些示例已经过改进,以减少数据污染,这一过程得到了三个领先型号的性能证实:Mistral 7B、CodeLLaMa 13B和Starcoder 15B。我们进一步研究了数据污染测试GPT-4在我们数据集的一部分上的性能。基准测试可以在https://github/NathanaelBeau/CodeInsight上访问。
🛎️文章简介
🔸研究问题:现有代码生成数据集在精确性、上下文感知和语法准确性方面仍有不足,能充分反映开发者实际面临的编程挑战。
🔸主要贡献:论文引入了CodeInsight数据集,这是一个专门为Python代码生成任务设计的高质量、专家标注的数据集,涵盖了从基础编程到复杂数据科学的广泛内容。
📝重点思路
🔺相关工作
🔸HumanEval、MBPP和APPS等强调解决综合编程挑战。
🔸DSP、DS-1000和ODEX等数据科学数据集的单元测试用例较少,原因是数据科学通常需要更少但更复杂的测试用例。
🔺论文方案
🔸数据来源:使用了CoNaLa数据集,还从Stack Overflow上额外收集了600个样本,特别强调了Pandas、Numpy和Regex等包的使用。
🔸数据筛选:从初始的7300个示例中筛选出2707个独特的编程问题,包括从CoNaLa数据集中保留1,993个示例,以及从Pandas、Numpy和Regex类别中分别保留294、242和178个示例。
🔸数据标注:从Stack Overflow中提取代码解决方案,并将其转换为标准化的Python函数。当一个问题有多个有效答案时,标注者需要捕捉所有可能的解决方案,并将其标准化为Python函数。此外,还为每个示例创建了单元测试,以确保代码的正确性。
🔸统计分析:包括代码行数、AST深度、问题描述的词数等,以评估数据集的多样性和复杂性。
🔸模型评估:使用最先进的LLM对数据集进行了评估,采用了零样本评估框架和多种数据分区策略,以测试模型在不同任务上的表现。
🔎分析总结
🔸数据集的多样性和复杂性:CodeInsight数据集展示了从基础编程到复杂数据科学挑战的广泛内容,涵盖了多种编程任务和库的使用。
🔸标注质量:通过专家标注和单元测试,数据集的标注质量得到了保证,减少了模型在训练过程中简单复制训练数据的可能性。
🔸模型性能:CodeInsight数据集能够有效地训练和评估LLM在Python代码生成任务上的表现,特别是在处理复杂数据科学任务时,模型的性能得到了显著提升。
🔸与其他数据集的比较:CodeInsight数据集在平均单元测试数量上超过了其他专注于数据科学的数据集,表明其在代码生成任务上的实用性和有效性。
💡个人观点
论文的核心是专门为Python代码生成设计了一个高质量、专家标注的数据集。
附录