System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种青少年编程场景的自我引导代码纠错数据集生成方法技术_技高网

一种青少年编程场景的自我引导代码纠错数据集生成方法技术

技术编号:41252787 阅读:6 留言:0更新日期:2024-05-10 00:00
本发明专利技术涉及编程教育技术领域,公开了一种青少年编程场景的自我引导代码纠错数据集生成方法,包括:收集青少年编程场景的题目;抽取部分题目,编写结构化提示词一,通过大语言模型生成错误代码并传入编译器,获取报错信息,对报错信息进行聚类得到聚类信息;将编程时的错误代码,作为样例池的种子样例;通过对样例池中的种子样例进行少样本学习,生成样例池所对应的错误类别的错误代码;结合所述聚类信息对生成的错误代码进行判优,将符合判优条件的错误代码保存至样例池,对不符合判优条件的错误代码利用编译器的报错信息进行二次代码生成或者舍弃;保证了生成数据集的质量,解决了代码纠错数据集构建成本大的问题。

【技术实现步骤摘要】

本专利技术涉及编程教育,具体涉及一种青少年编程场景的自我引导代码纠错数据集生成方法


技术介绍

1、智能代码纠错(intelligent code repair),旨在对用户所编写的代码进行修复和改正,在代码智能领域发挥着重要作用,并在最近得到越来越多的关注。优秀的智能代码纠错能够检测和修复代码中的错误和缺陷,帮助程序员提高代码的准确性、可读性和可维护性。它能够自动发现潜在的问题,并提供修复建议,减少人为错误和漏洞的引入,从而提高整体代码的质量。

2、除此之外,通过自动化的纠错和修复过程,减少了程序员手动查找和修复错误的工作量,节省了开发人员的时间和精力,提高了开发效率。

3、编程场景下,智能代码纠错可以帮助他们更快地发现和纠正自己代码中的错误,并提供即时的反馈和指导,帮助青少年理解和掌握编程语言的规范。因此,智能代码纠错对青少年编程的学习是至关重要的。

4、当前针对智能代码纠错训练所使用的数据集主要是bugs2fix数据集,此数据集提供了一些真实世界的错误代码和对应的正确代码。然而,针对青少年编程场景,此数据集仍有如下不足:

5、1)bugs2fix数据集是从开源项目中获取真实代码,这些代码主要由成年开发人员编写,未必能够涵盖到青少年编程中常见的问题和错误。这可能导致在针对青少年的编程教育中,无法提供足够准确且有针对性的纠错建议。

6、2)bugs2fix数据集虽然是一个较大规模的数据集,但是相对于整个编程领域而言,仍然可能存在数据覆盖不足的情况。数据集中的代码示例可能无法涵盖所有可能的错误类别,这将限制纠错系统的泛化能力。

7、3)bugs2fix数据集的构建过程是从github中识别所有带有“fix”、“solve”、“bug”等修改意图的提交,并直接将提交前的修改片段作为错误代码,提交后的修改片段作为正确代码。由于不同作者的水平参差不齐,难以保证每次修改的合理性与正确性,使得数据集的质量难以保证。

8、显然,在青少年编程场景下,bugs2fix数据集是不能完美地满足其训练需求的,那么就需要构建符合青少年编程场景的代码纠错数据集。此代码纠错数据集应该能够弥补上述bugs2fix数据集的不足,且构建过程能够解决或减轻一般代码纠错数据集构建时所面临的如下问题:

9、1)代码纠错数据集由正确代码、错误代码及错误类别构成,这导致错误类别的标签生成是一个复杂的过程,需要对代码进行分析和比较,以确定错误的位置和类型,这需要大量的人力和时间成本,且对标注人员的标注能力是个很大考验。

10、2)代码纠错任务中的数据需要具有多样性,涵盖不同编程语言、不同
和各种错误类别。获取具有广泛覆盖范围的多样性数据可能面临挑战,特别是对于某些专业领域或特定编程语言的错误。

11、3)在耗费大量时间和人力对大规模数据进行收集和标注后,应该用合理的手段保证数据的质量。

12、现有技术中的技术方案,大都采用人工标注的方法来获取代码纠错数据集。这些方法不能很好地匹配青少年编程场景,实现成本较大,且并未对生成数据进行质量把控。青少年编程场景下的代码纠错数据集的生成仍然是一项挑战。


技术实现思路

1、为解决上述技术问题,本专利技术提供一种青少年编程场景的自我引导代码纠错数据集生成方法。

2、为解决上述技术问题,本专利技术采用如下技术方案:

3、一种青少年编程场景的自我引导代码纠错数据集生成方法,使用青少年编程场景真实样本,融合编译器报错信息,通过对话式大语言模型自我引导生成代码纠错数据,具体包括以下步骤:

4、s1:收集青少年编程场景的题目;所述题目包括题目描述和正确代码;

5、s2,重复如下操作,直至聚类簇的个数不再发生变化:从所有题目中抽取部分题目,编写结构化提示词一,通过对话式大语言模型生成错误代码,并将错误代码传入编译器,获取报错信息,通过ap聚类算法对编码后的报错信息进行聚类,得到聚类簇的聚类信息;每个聚类簇表示一种错误类别;

6、s3:针对每种错误类别设置样例池,将实际编程时编写的具有相应错误类别的错误代码,作为样例池的种子样例;

7、s4:针对每道题目的每种错误类别,编写结构化提示词二,通过对话式大语言模型针对所述错误类别对应的样例池中的种子样例进行少样本学习,生成样例池所对应的错误类别的错误代码;将对话式大语言模型生成的错误代码输入编译器,并结合所述聚类信息对生成的错误代码进行判优,将符合判优条件的错误代码保存至样例池,对不符合判优条件的错误代码利用编译器的报错信息进行二次代码生成或者舍弃;

8、各样例池中保存的错误代码以及对应的题目描述即为所述代码纠错数据。

9、进一步地,步骤s1中,所述青少年编程场景包括青少年编程比赛;所述题目还包括测试用例。

10、进一步地,步骤s2具体包括:

11、每次从所有题目中抽取部分题目,编写结构化提示词一,利用对话式大语言模型在正确代码的基础上生成题目的错误代码,并通过编译器获取到报错信息;其中,结构化提示词一的构建方式为:

12、;

13、其中,表示拼接,identity表示为对话式大语言模型设置的身份,表示题目描述,表示正确代码;

14、对报错信息进行编码,编码后的报错信息传入bert模型,通过获取bert模型的最后隐藏层状态,得到报错信息的每个单词的向量,最后将报错信息的所有单词的向量取平均作为报错信息向量;

15、将报错信息向量作为一个点,利用ap聚类算法对报错信息聚类,各聚类簇的聚类信息组成聚类信息集合c;聚类信息集合c中的每个元素c包括聚类簇中心点p的向量表征v与语义表征l,以及聚类簇半径r;其中,聚类簇半径r为聚类簇中每个点到聚类簇中心点的距离最大值;聚类簇中心点p的语义表征l为离聚类簇中心点最近的点的语义表征;

16、当聚类簇的个数不再发生变化时,停止题目抽取,得到与错误类别一一对应的多个聚类簇。

17、进一步地,步骤s4具体包括:

18、针对每道题目的每种错误类别,从对应的样例池中选取一个种子样例,构建结构化提示词二,并通过大语言模型生成错误类别的错误代码b;结构化提示词二的构建方式为:

19、;

20、其中,表示拼接,identity表示为对话式大语言模型设置的身份,表示题目描述,表示题目的正确代码,e表示错误类别i所对应样例池中的种子样例;

21、将生成的错误代码b输入到编译器,将得到的编译器的报错信息编码为反馈信息向量,并利用所述聚类信息对生成的错误代码b进行判优,聚类信息包括聚类簇中心点p的向量表征v以及聚类簇半径r;其中判优条件为:判断与v的欧氏距离d是否小于或者等于错误类别对应的聚类簇半径r;如是,则生成的错误代码b符合判优条件,将生成的错误代码b保存至对应的样例池中;如否,则生成的错误代码b不符合判优条件本文档来自技高网...

【技术保护点】

1.一种青少年编程场景的自我引导代码纠错数据集生成方法,使用青少年编程场景真实样本,融合编译器报错信息,通过对话式大语言模型自我引导生成代码纠错数据,具体包括以下步骤:

2.根据权利要求1所述的青少年编程场景的自我引导代码纠错数据集生成方法,其特征在于,步骤S1中,所述青少年编程场景包括青少年编程比赛;所述题目还包括测试用例。

3.根据权利要求1所述的青少年编程场景的自我引导代码纠错数据集生成方法,其特征在于,步骤S2具体包括:

4.根据权利要求1所述的青少年编程场景的自我引导代码纠错数据集生成方法,其特征在于,步骤S4具体包括:

5.根据权利要求4所述的青少年编程场景的自我引导代码纠错数据集生成方法,其特征在于:当生成的错误代码不符合判优条件,并进行二次代码生成时,将编译器的报错信息融入结构化提示词二,得到结构化提示词三:

【技术特征摘要】

1.一种青少年编程场景的自我引导代码纠错数据集生成方法,使用青少年编程场景真实样本,融合编译器报错信息,通过对话式大语言模型自我引导生成代码纠错数据,具体包括以下步骤:

2.根据权利要求1所述的青少年编程场景的自我引导代码纠错数据集生成方法,其特征在于,步骤s1中,所述青少年编程场景包括青少年编程比赛;所述题目还包括测试用例。

3.根据权利要求1所述的青少年编程场景...

【专利技术属性】
技术研发人员:苏喻朱林波陆君宇丁军陈恩红李嘉豪
申请(专利权)人:合肥综合性国家科学中心人工智能研究院安徽省人工智能实验室
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1