当前位置: 首页 > 专利查询>邹佳专利>正文

一种基于Transformer的代码类型辅助的代码注释自动生成技术制造技术

技术编号:39394509 阅读:12 留言:0更新日期:2023-11-19 15:49
本发明专利技术提供了基于Transformer的代码类型辅助的代码注释自动生成技术,包括以下步骤:S1、获取需要生成注释的代码;S2、使用AST解析代码结构,并提取每个代码token对应的代码类型;S3、对代码token进行切分,并保持切分后子token的代码类型一致;S4、结合代码token编码、代码类型编码与Transformer的位置编码,输入Transformer模型,得到代码注释。此方法可以在最小化增加计算资源开支的情况下,帮助Transformer通过代码token的类型准确捕获代码的语法结构,提升代码注释生成质量。提升代码注释生成质量。提升代码注释生成质量。

【技术实现步骤摘要】
一种基于Transformer的代码类型辅助的代码注释自动生成技术


[0001]本专利技术涉及计算机应用
,尤其涉及一种基于Transformer的代码类型辅助的代码注释自动生成技术。

技术介绍

[0002]代码注释是程序不可或缺的一部分,其在帮助程序员理解和维护程序过程中发挥着重要的作用。在软件开发和维护过程中,代码注释不仅可以增强软件维护过程中代码的可读性,还可以在软件开发过程中为开发人员提供交互的便利。为代码自动生成代码注释不仅可以节省代码开发人员的时间和精力,还可以实时的为修改的代码生成新的注释。
[0003]近来,已有利用AST挖掘代码语义和语法特征的代码注释生成模型,然而这些模型往往将AST直接输入模型或者处理成序列之后输入模型,大量增加了模型的参数和训练困惑度。此外,现有大多数模型都是基于RNN(循环神经网络)或CNN(卷积神经网络)的模型,这些方法都具有其局限性。其中,RNN不能并行计算,而且效率低下;CNN不能直接处理可变长度序列样本。而完全基于注意力机制的Transformer 模型的不仅可以实现并行计算,且对输入输出长度没有限制。不过,Transformer模型无法关注到输入代码的时空序列信息,为此,亟需一种能为Transformer模型提供代码的时空序列信息的技术。

技术实现思路

[0004]一种基于Transformer的代码类型辅助的代码注释自动生成技术,以解决现有代码注释自动生成方法对代码类型的挖掘不深入的问题。本专利技术实现了以极小代价帮助Transformer模型捕获代码语法结构信息,提高了模型生成的代码注释的准确率。
[0005]本专利技术是通过如下措施实现的:一种基于Transformer的代码类型辅助的代码注释自动生成技术,包括以下步骤:
[0006]S1、获取需要生成注释的代码;
[0007]S2、使用AST解析代码结构,并提取每个代码字符对应的代码类型;
[0008]S3、基于驼峰命名法、蛇形命名法或其他字符拆分方法将代码字符拆分为多个单词,并保持拆分后子词的代码类型与原有代码字符的代码类型一致;
[0009]S4、在编码层,结合代码字符编码、代码类型编码与位置编码,得到编码向量,输入Transformer模型,生成代码注释。
[0010]本专利技术所述代码类型为代码字符在代码段中的语义信息,包括变量、变量声明、返回类型、方法调用、对象、分隔符、参数、二进制操作、成员类型、限定词、操作符号、方法定义、关键词、修饰符、返回语句、条件语句、字符串、基本类型、十进制整数、类创建、空值、数组索引、异常捕获参数、循环语句、注解、这、类型参数、十进制浮点数、抛出语句、布尔值、推断形式参数、元素值对、十六进制整数、尝试语句、超级方法调用、类声明、八进制整数、超级对象类型、二进制整数。
[0011]本专利技术提供的基于Transformer的代码类型辅助的代码注释自动生成技术,所述步骤S3中将一个代码字符拆分后得到的所有子词需继承该代码字符的代码属性。
[0012]本专利技术提供的基于Transformer的代码类型辅助的代码注释自动生成技术,所述步骤S4中代码字符编码、代码类型编码与位置编码分别得到的编码向量相加,得到最终的编码向量。其中,位置编码包括相对位置编码和绝对位置编码。
[0013]与现有技术相比,本专利技术的有益效果为:本专利技术是一种新的基于Transformer的代码注释自动生成方法。其中Transformer模型在代码注释自动生成领域内取得的效果比RNN模型和CNN模型更好。而使用代码类型编码之后,克服了Transformer模型无法识别输入代码的时空信息的缺点,考虑了代码注释生成任务的特殊性,将从AST中提取到的代码语法特征和代码的语义特征结合,提升了Transformer模型的代码注释自动生成能力的准确性。并且,与原有Transformer模型相比,该模型只需增加代码类型个数乘以隐藏向量维度个数的训练参数,对模型的时间和资源消耗增量极小,可忽略不计。
附图说明
[0014]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。
[0015]图1为本专利技术的总体技术流程图
[0016]图2为本专利技术的主要细节实现图
具体实施方式
[0017]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。当然,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。
[0018]实施例1
[0019]参见图1和图2,本专利技术提供其技术方案为,一种基于Transformer的代码类型辅助的代码注释自动生成技术,其中,包括以下步骤:
[0020]S1、获取需要生成注释的代码;
[0021]S2、使用AST解析代码结构,并提取每个代码字符对应的代码类型;
[0022]S3、基于驼峰命名法、蛇形命名法或其他字符拆分方法将代码字符拆分为多个单词,并保持拆分后子词的代码类型与原有代码字符的代码类型一致;
[0023]S4、在编码层,结合代码字符编码、代码类型编码与位置编码,得到编码向量,输入Transformer模型,生成代码注释。
[0024]作为本专利技术提供的一种基于Transformer的代码类型辅助的代码注释自动生成技术,所述代码类型为代码字符在代码段中的语义信息,包括变量、变量声明、返回类型、方法调用、对象、分隔符、参数、二进制操作、成员类型、限定词、操作符号、方法定义、关键词、修饰符、返回语句、条件语句、字符串、基本类型、十进制整数、类创建、空值、数组索引、异常捕获参数、循环语句、注解、这、类型参数、十进制浮点数、抛出语句、布尔值、推断形式参数、元素值对、十六进制整数、尝试语句、超级方法调用、类声明、八进制整数、超级对象类型、二进制整数。
[0025]作为本专利技术提供的一种基于Transformer的代码类型辅助的代码注释自动生成技术,所述步骤S3中将一个代码字符拆分后得到的所有子词需继承该代码字符的代码属性。
[0026]作为本专利技术提供的一种基于Transformer的代码类型辅助的代码注释自动生成技术,所述步骤S4中代码字符编码、代码类型编码与位置编码分别得到的编码向量相加,得到最终的编码向量。其中,位置编码包括相对位置编码和绝对位置编码。
[0027]术语解释:抽象语法生成树(Abstract Syntax Tree,AST)又称语法树。AST是代码语法结构的一种树形抽象表示,它的叶子节点存储源代码中的词,非叶子结点存储源代码中词的语法属性,最终链接形成语法树。AST能够在展开代码的同时,充分表达代码的结构和内容。
[0028]参照图1和图2所示的一种基于Transformer的代码类型辅助的代码注释自动生成技术:
[0029]1、获取代码注释语料库;
[0030]2、对语料库中的每个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Transformer的代码类型辅助的代码注释自动生成技术,其特征在于,包括以下步骤:S1、获取需要生成注释的代码;S2、使用AST解析代码结构,并提取每个代码字符对应的代码类型;S3、基于驼峰命名法、蛇形命名法或其他字符拆分方法将代码字符拆分为多个单词,并保持拆分后子词的代码类型与原有代码字符的代码类型一致;S4、在编码层,结合代码字符编码、代码类型编码与位置编码,得到编码向量,输入Transformer模型,生成代码注释。2.根据权利要求1所述的基于Transformer的代码类型辅助的代码注释自动生成技术,其特征在于,所述代码类型为代码字符在代码段中的语义信息,包括变量、变量声明、返回类型、方法调用、对象、分隔符、参数、二进制操作、成员类型、限定词、操作符号、方法定义、关...

【专利技术属性】
技术研发人员:张煜群邹佳
申请(专利权)人:邹佳
类型:发明
国别省市:

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

1