一种编程学习场景的智能代码补全方法、系统及储存介质技术方案

技术编号:37641201 阅读:23 留言:0更新日期:2023-05-25 10:08
本发明专利技术公开了一种编程学习场景的智能代码补全方法、系统及储存介质,将源代码输入到已训练完成的transformer深度神经网络模型中以输出源代码补全后的预测结果;该智能代码补全方法、系统及储存介质采用独特的数据集进行预处理,并且根据用户反馈选择不同的推荐算法,不断提高智能代码补全功能中推荐代码的质量,源代码生成的抽象语法树进行拆分与重构,捕获了代码更多的语义信息,从而提高了代码补全的准确度;该方法全面考虑了青少年编程学习场景下智能代码补全功能的适配性,可以提高智能代码补全结果的多样性、准确性。准确性。准确性。

【技术实现步骤摘要】
一种编程学习场景的智能代码补全方法、系统及储存介质


[0001]本专利技术涉及编程教育
,尤其涉及一种编程学习场景的智能代码补全方法、系统及储存介质。

技术介绍

[0002]智能代码补全(Intelligent Code Completion),旨在提供一种在当前源代码位置即时预测待补全代码中的类名、方法名和代码片段等的方法,在代码
发挥着重要作用,并在最近得到越来越多的关注,好的代码补全能够在排名尽可能的推荐中找到用户需要的代码,用户检查推荐列表的时间会影响对代码补全建议的信赖和编写代码的时间,因此尽可能在推荐长度短的情况下找到用户所需的补全建议非常重要。
[0003]目前,关于智能代码补全方法主要有以下方法:1)基于传统算法的代码补全方法:传统的代码补全方法主要通过人工定义启发式规则进行预测和补全,该方法通常利用代码的类型信息和语法规则,很少考虑上下文语义信息,并且推荐结果经常以字母顺序为依据进行推荐排序,导致在许多应用场景无法根据开发人员的需求高效推荐正确代码,传统方法的限制促使研究学者们利用机器学习进行代码预测,早期本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种编程学习场景的智能代码补全方法,其特征在于,将源代码输入到已训练完成的transformer深度神经网络模型中以输出源代码补全后的预测结果;所述transformer深度神经网络模型的训练过程如下:S1:构建数据集,并对所述数据集进行预处理生成抽象语法树;S2:遍历所述抽象语法树并在复合结构处插入占位符节点,将所述占位符节点的语句子树拆分出来形成单独的子树,利用树的第一递推神经网络编码所述子树,得到每个子树中节点的隐藏状态;S3:将所有节点的隐藏状态通过最大池化操作聚合得到后代树,基于树的第二递推神经网络编码所述后代树,将所述后代树转化为向量形式;S4:将向量形式后代树输入到已构建好的transformer深度神经网络模型中,输出数据集代码补全后的预测结果;S5:在用户未反馈模式下,基于贪心算法推荐预测结果;S6:在用户反馈模式下,基于其他用户的选择辅助推荐所述预测结果;所述利用树的第一递推神经网络编码所述子树,得到每个子树中节点的隐藏状态中,所述每个子树中节点的隐藏状态采用如下公式表示:其中,是子树的节点隐藏状态,和是可学习的权重矩阵,是子词嵌入得到的向量,是节点的所有孩子节点集合,表示双曲正切函数,表示节点的其中一个孩子节点,表示节点的其中一个孩子节点的隐藏状态;所述基于树的第二递推神经网络编码所述后代树具体为:其中,表示后代树节点的隐藏状态,和表示可学习的权重矩阵,表示后代树节点的所有孩子节点集合,表示后代树节点的其中一个孩子节点,表示这个孩子节点的隐藏状态,表示双曲正切函数,表示将所有子树嵌入后得到的聚合向量。2.根据权利要求1所述的编程学习场景的智能代码补全方法,其特征在于,在步骤S1:构建数据集,并对所述数据集进行预处理生成抽象语法树中,具体包括:获取编程学习场景下的相关数据组成数据集;对所述数据集进行格式处理,得到格式后数据集;将所述格式后的数据集拆分成单词集合得到训练语料,将所述训练语料中的所有单词拆分为字节,基于所述字节构建初始词表;重复统计所述初始词表中的每个字节出现的频率,将频率最高的字节合并成新的子词并更新初始词表,直到所述初始词表大小达到期望或者剩下字节出现的频率最高为1,得到
更新后词表;将更新后词表所输出的所有子词拼接,直到遇见结束符停止拼接,得到拼接后的子词,所述结束符对应为每个单词后所加的结束符;将所述格式后的数据集的代码生成抽象语法树,利用拼接后的子词作为词表中的子词参与到所述transformer深度神经网络模型对源代码的预测结果输出。3.根据权利要求2所述的编程学习场景的智能代码补全方法,其特征在于,在每个子树中节点的隐藏状态表达式中,若当前节点为叶节点,则=。4.根据权利要求3所述的编程学习场景的智能代码补全方法,其特征在于,在基于树的第二递推神经网络编码所述后代树中,若当前孩子节点为叶节点,则。5.根据权利要求4所述的编程学习场景的智能代码补全方法,其特征在于,在步骤S3:将所有节点的隐藏状态通过最大池化操作聚合得到后代树,基于树的第二递推神经网络编码所述后代树,将所述后代树转化为向量形式中,所述后代树转化为向量形式具体公式如下:其中,表示将所有子树嵌入后得到的聚合向量,表示最大池化,表示...

【专利技术属性】
技术研发人员:朱林波刘淇苏喻胡瑞汤进吕博文
申请(专利权)人:合肥综合性国家科学中心人工智能研究院安徽省人工智能实验室
类型:发明
国别省市:

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

1