代码摘要生成方法、系统、设备及存储介质技术方案

技术编号:29614238 阅读:21 留言:0更新日期:2021-08-10 18:27
本发明专利技术公开了代码摘要生成方法、系统、设备及存储介质,包括:将获取的目标代码解析为抽象语法树,对抽象语法树的每个节点嵌入层次信息;基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;将抽象语法树的邻接矩阵和每个节点的词向量输入到训练后的图卷积神经网络中,得到每个节点的特征向量;将获取的目标代码处理为标记序列,将所述标记序列输入到训练后的双向门控循环单元中,得到每个标记对应的输出向量;将所有节点的特征向量与标记序列对应的输出向量进行融合,将融合后的向量输入到训练后的transformer模型中,得到生成的代码摘要。充分地提取代码的语法结构特征,生成的摘要质量更好。

【技术实现步骤摘要】
代码摘要生成方法、系统、设备及存储介质
本专利技术涉及人工智能与软件工程交叉
,特别是涉及代码摘要生成方法、系统、设备及存储介质。
技术介绍
本部分的陈述仅仅是提到了与本专利技术相关的
技术介绍
,并不必然构成现有技术。在软件开发和维护过程中,开发人员要投入大量的精力来理解代码的含义。针对这一问题,开发人员一般会通过注释来理解代码,这些注释都是由开发人员手动添加的,但是随着软件开发周期加长,一些注释容易丢失或者过时。解决该问题的另一种方法就是使用代码摘要方法,这种方法可以为一段代码生成相应的自然语言描述,大大节省了程序员阅读代码的时间,使开发人员从手写注释中解放出来。但是由于代码包含丰富的语义和语法信息,使用传统的代码摘要方法不足以生成高质量的代码摘要,因此选择何种方法获得高质量的代码摘要仍是一个亟待解决的问题。
技术实现思路
为了解决现有技术的不足,本专利技术提供了代码摘要生成方法、系统、设备及存储介质;对代码的语义和语法信息进行准确地提取以生成高质量的摘要,减少开发人员阅读代码的时间,从而提高软件开发效率。第一方面,本专利技术提供了代码摘要生成方法;代码摘要生成方法,包括:将获取的目标代码解析为抽象语法树,对抽象语法树的每个节点嵌入层次信息;基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;将抽象语法树的邻接矩阵和每个节点的词向量输入到训练后的图卷积神经网络中,得到每个节点的特征向量;将获取的目标代码处理为标记序列,将所述标记序列输入到训练后的双向门控循环单元中,得到每个标记对应的输出向量;将所有节点的特征向量与标记序列对应的输出向量进行融合,将融合后的向量输入到训练后的transformer模型中,得到生成的代码摘要。第二方面,本专利技术提供了代码摘要生成系统;代码摘要生成系统,包括:节点特征向量提取模块,其被配置为:将获取的目标代码解析为抽象语法树,对抽象语法树的每个节点嵌入层次信息;基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;将抽象语法树的邻接矩阵和每个节点的词向量输入到训练后的图卷积神经网络中,得到每个节点的特征向量;序列输出向量获取模块,其被配置为:将获取的目标代码处理为标记序列,将所述标记序列输入到训练后的双向门控循环单元中,得到每个标记对应的输出向量;代码摘要生成模块,其被配置为:将所有节点的特征向量与标记序列对应的输出向量进行融合,将融合后的向量输入到训练后的transformer模型中,得到生成的代码摘要。第三方面,本专利技术还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。第四方面,本专利技术还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。与现有技术相比,本专利技术的有益效果是:(1)提出一种融合AST邻居及层次节点信息的语法特征提取方法。该方法将代码片段得到的AST通过广度优先搜索遍历的方式为节点增加一个层数标记,再使用wordembedding的方法得到节点的词向量,将它们作为初始特征向量输入到两层的GCN中得到一个特征向量矩阵,其中每个节点向量不仅包含了其邻居节点的信息,还包含了节点的层次信息。该方法可以更加充分地提取代码的语法结构特征。(2)提出一种融合代码语义和语法特征信息的方法。该方法将源代码所对应的tokens序列输入到Bi-GRU中,可以得到每个token的输出向量,这些向量包含了代码的语义信息。将这些向量与得到的抽象语法树的节点特征向量融合后输入到transformer模型中,通过对融合后的每个向量分配不同的权重,使模型更加关注代码片段中相对重要的部分,可以使得生成的摘要质量更好。本专利技术附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明构成本专利技术的一部分的说明书附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。图1为本专利技术所用的总框架图;图2为本专利技术所用的Bi-GRU示意图;图3为本专利技术所用的transformer模型示意图。具体实施方式应该指出,以下详细说明都是示例性的,旨在对本专利技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本专利技术所属
的普通技术人员通常理解的相同含义。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本专利技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。术语解释:抽象语法树(abstractsyntaxtree或者缩写为AST);图卷积神经网络(GraphConvolutionalNetwork,缩写为GCN);双向门控循环单元((Bi-directionalGatedRecurrentUnit,缩写为Bi-GRU);tokens序列,翻译为标记序列。实施例一本实施例提供了代码摘要生成方法;如图1所示,代码摘要生成方法,包括:S101:将获取的目标代码解析为抽象语法树,对抽象语法树的每个节点嵌入层次信息;基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;将抽象语法树的邻接矩阵和每个节点的词向量输入到训练后的图卷积神经网络中,得到每个节点的特征向量;S102:将获取的目标代码处理为标记序列,将所述标记序列输入到训练后的双向门控循环单元中,得到每个标记对应的输出向量;S103:将所有节点的特征向量与标记序列对应的输出向量进行融合,将融合后的向量输入到训练后的transformer模型中,得到生成的代码摘要。进一步地,图卷积神经网络、双向门控循环单元和transformer模型共同组成了深度学习模型;深度学习模型的具体连接关系包括:所述图卷积神经网络的输出端与融合单元的输入端连接;所述双向门控循环单元的输出端也与融合单元的输入端连接,所述融合单元的输出端与transformer模型的输入端连接。融合单元,就是拼接单元,实现输入数据的串联拼接。进一步地,训练后的图卷积神经网络、训练后的双向门控循环单元和训练后的transformer模型,是联合训练本文档来自技高网
...

【技术保护点】
1.代码摘要生成方法,其特征是,包括:/n将获取的目标代码解析为抽象语法树,对抽象语法树的每个节点嵌入层次信息;基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;将抽象语法树的邻接矩阵和每个节点的词向量输入到训练后的图卷积神经网络中,得到每个节点的特征向量;/n将获取的目标代码处理为标记序列,将所述标记序列输入到训练后的双向门控循环单元中,得到每个标记对应的输出向量;/n将所有节点的特征向量与标记序列对应的输出向量进行融合,将融合后的向量输入到训练后的transformer模型中,得到生成的代码摘要。/n

【技术特征摘要】
1.代码摘要生成方法,其特征是,包括:
将获取的目标代码解析为抽象语法树,对抽象语法树的每个节点嵌入层次信息;基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;将抽象语法树的邻接矩阵和每个节点的词向量输入到训练后的图卷积神经网络中,得到每个节点的特征向量;
将获取的目标代码处理为标记序列,将所述标记序列输入到训练后的双向门控循环单元中,得到每个标记对应的输出向量;
将所有节点的特征向量与标记序列对应的输出向量进行融合,将融合后的向量输入到训练后的transformer模型中,得到生成的代码摘要。


2.如权利要求1所述的代码摘要生成方法,其特征是,将获取的目标代码解析为抽象语法树;具体包括:
使用JDT编译器,将获取的目标代码解析为抽象语法树。


3.如权利要求1所述的代码摘要生成方法,其特征是,对抽象语法树的每个节点嵌入层次信息;具体包括:
对抽象语法树,采用广度优先搜索遍历的方式,为每层节点增加一个层数标记,使得在节点进行嵌入的时候包含层次信息。


4.如权利要求1所述的代码摘要生成方法,其特征是,基于嵌入层次信息的抽象语法树的节点,得到每个节点的词向量;具体包括:
对嵌入层次信息的抽象语法树的节点,使用wordembedding词嵌入的方式进行处理,得到每个节点的词向量。


5.如权利要求1所述的代码摘要生成方法,其特征是,将获取的目标代码处理为标记序列;具体包括:
将获取的目标代码进行分词操作,得到标记序列;
其中,标记序列,指的是由代码片段中包含的词、字符或者符号组成的一串序列。


6.如权利要求1所述的代码摘要生成方法...

【专利技术属性】
技术研发人员:吕晨高曰秀高学剑王潇李季马正吕蕾刘弘
申请(专利权)人:山东师范大学
类型:发明
国别省市:山东;37

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

1