当前位置: 首页 > 专利查询>燕山大学专利>正文

一种融合抽象语法树节点特征的代码摘要生成方法技术

技术编号:38988365 阅读:14 留言:0更新日期:2023-10-07 10:18
本发明专利技术公开了一种融合抽象语法树节点特征的代码摘要生成方法,属于软件工程技术相关领域。该方法首先为每一个源代码片段构造一个抽象语法树,然后利用Transformer编码器对源代码序列特征进行表示,其次对节点在抽象语法树层序遍历中的位置以及节点度进行编码后与节点自身属性特征融合输入到图卷积神经网络中学习各个节点的特征,最后将得到的节点特征与源代码序列特征融合使用Transformer解码器进行摘要预测。本发明专利技术能够有效利用源代码的语法信息,充分挖掘抽象语法树中的结构信息,丰富了源代码语义的表示,提升了代码摘要生成的效果。效果。效果。

【技术实现步骤摘要】
一种融合抽象语法树节点特征的代码摘要生成方法


[0001]本专利技术属于软件工程技术相关领域,具体的设计一种融合抽象语法树节点特征的代码摘要生成方法。

技术介绍

[0002]软件维护是软件工程生命周期中最后一个重要阶段,软件维护的成本约占总开发成本的70%,随着计算机技术和互联网的快速发展,软件系统规模和产品迭代频率不断提升,软件系统的代码量不断增加,导致软件维护工作的难度进一步增大。而在软件维护过程中,最重要的工作是对于其他软件开发者编写的已有代码进行理解。代码注释,作为对代码的解释说明,是对程序段,特定语句,函数等程序单元的自然语言提示。高质量的代码注释能提高程序的可读性,便于开发人员快速理解程序。然而在实际开发过程中,有大部分开发人员只关注功能实现而忽略注释的编写,并且不重视注释编写质量,导致目前大量的软件项目中的注释存在缺乏、不足、过时和与实际代码内容不匹配等问题。
[0003]由于人为编写注释会消耗大量时间,而且会因开发人员技术和经验等方面的差异,导致注释质量得不到保证,所以一些研究人员尝试过使用描述性的标识符名称来描述代码功能或者使用一些工具来辅助注释的生成,但是这些方法并没有完全摆脱人为的干预,依然没有实现完全自动地根据指定代码段生成其功能性描述的注释的愿景。
[0004]代码摘要自动生成可以减少人为撰写注释和维护注释的时间开销,提高注释生成效率,保证注释质量,提高代码的可读性和可理解性,让程序开发者专注于程序开发。因此自动代码摘要生成是一项非常值得研究且富有挑战性的工作。
[0005]部分专业术语解释:
[0006]代码摘要自动生成:为给定的代码片段自动地生成反映源代码功能和程序员意图的高质量的自然语言注释。

技术实现思路

[0007]针对现有技术的不足,本专利技术提供一种融合抽象语法树节点特征的代码摘要生成方法,解决对于源代码结构信息挖掘不充分的问题。
[0008]为了实现上述目的,本专利技术所采用的技术方案为:
[0009]一种融合抽象语法树节点特征的代码摘要生成方法,包括如下步骤:
[0010]S1、数据收集,包括搜集源代码及其对应的注释文本信息;
[0011]S2、对源代码及其对应的注释文本信息进行预处理,得到抽象语法树;
[0012]S3、源代码序列通过位置编码和Transformer编码器学习源代码序列表征;
[0013]S4、抽象语法树通过位置编码和图卷积神经网络学习抽象语法树节点表征;
[0014]S5、将抽象语法树节点表征与源代码序列表征融合作为最终源代码的表征并输入至Transformer解码器进行摘要预测生成。
[0015]本专利技术的进一步改进在于,步骤S2的具体过程为:
[0016]S21、对源代码和注释文本序列进行分词并构建词表;
[0017]S22、利用特定编程语言提供的解析工具将源代码解析为对应的抽象语法树。
[0018]本专利技术的进一步改进在于,步骤S3的具体过程为:
[0019]S31、使用单词嵌入层对源代码序列中的每个单词进行词嵌入,包括为:
[0020]v
(i)
=embedding(w
(i)
,dim)
[0021]其中,embedding表示词嵌入方法,w
(i)
为源代码序列中的单词,dim为嵌入向量维度,v
(i)
为单词经过嵌入后的向量;
[0022]S32、将所有单词的嵌入向量组合构成源代码序列的嵌入矩阵;
[0023]S33、将源代码序列的嵌入矩阵使用Transformer编码器编码获得源代码序列的表征,此过程可描述为:
[0024]X
(i)
=TrandformerEncoder(V
c(i)
)
[0025]其中,TransformerEncoder表示Transformer的编码器,V
c(i)
其中为源代码序列的嵌入矩阵,X
(i)
为源代码序列的表征。
[0026]本专利技术的进一步改进在于,步骤S4的具体过程为:
[0027]S41、对抽象语法树中的每个节点自身属性信息使用单词嵌入层进行词嵌入得到节点嵌入特征,此过程可描述为:
[0028]v
(i)
=embedding(n
(i)
,dim)
[0029]其中,embedding表示词嵌入方法,n
(i)
为抽象语法树节点的属性,dim为嵌入向量维度,v
(i)
表示节点的嵌入表示。
[0030]S42、对抽象语法树进行层序遍历,得到层序遍历序列:
[0031]S43、对抽象语法树中的每个节点在层序遍历序列中的位置进行编码得到节点的位置编码,此过程可描述为:
[0032][0033][0034]其中,PE表示位置编码,p
(i)
表示节点在层序遍历中的位置,2i表示偶数的维度,2i+1表示奇数维度,d
model
表示向量维度,sin和cos分别表示正弦和余弦函数。
[0035]S44、对抽象语法树中的每个节点的度值进行编码,得到节点的度编码,此过程可描述为:
[0036][0037][0038]其中,DE表示位置编码,表示节点在抽象语法树中的度值。2i表示偶数的维度,2i+1表示奇数维度,d
model
表示向量维度,sin和cos分别表示正弦和余弦函数。
[0039]S45、将节点嵌入特征、节点的位置编码和节点度编码相加作为节点输入特征,此过程可描述为:
[0040][0041]其中,表示节点嵌入矩阵,PE表示位置编码,DE表示位置编码,E
Tree
表示抽象语法树节点嵌入特征。
[0042]S46、将节点输入特征使用两层图卷积神经网络进行节点表示,此过程可描述为:
[0043][0044][0045]其中,H1和H2分别代表第一层图卷积神经网络和第二层图卷积神经网络的输出,W1和W2分别表示两层网络的权重,A表示抽象语法树的邻接矩阵,表示邻接矩阵与单位矩阵的和,表示的度数矩阵。ReLU是一种具体的非线性激活函数。
[0046]S47、根据源代码单词与节点映射字典仅挑选出包含在源代码序列中的节点的特征表示作为最终的抽象语法树节点特征表示。
[0047]S5、将抽象语法树节点表征与源代码序列表征融合作为最终源代码的表征并输入至Transformer解码器进行摘要预测生成。
[0048]本专利技术的进一步改进在于,步骤S5的具体过程为:
[0049]S51、对抽象语法树节点表征与源代码序列表征进行拼接,此过程可描述为:
[0050][0051]其中e
f
为源代码的表征,e
s
为源代码序列表征,e
t
为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种融合抽象语法树节点特征的代码摘要生成方法,其特征在于,包括以下步骤:S1、数据收集,包括搜集源代码及其对应的注释文本信息;S2、对源代码及其对应的注释文本信息进行预处理,得到抽象语法树;S3、通过位置编码和Transformer编码器学习源代码序列表征;S4、通过位置编码和图卷积神经网络学习抽象语法树节点表征;S5、将抽象语法树节点表征与源代码序列表征融合作为最终源代码的表征并输入至Transformer解码器进行摘要预测生成。2.根据权利要求1所述的一种融合抽象语法树节点特征的代码摘要生成方法,其特征在于,S2包括:S21、对源代码和注释文本序列进行分词并构建词表;S22、利用编程语言提供的解析工具将源代码解析为对应的抽象语法树。3.根据权利要求1所述的一种融合抽象语法树节点特征的代码摘要生成方法,其特征在于,所述S3包括:S31、使用单词嵌入层对源代码序列中的每个单词进行词嵌入,包括为:v
(i)
=embedding(w
(i)
,dim)其中,embedding表示词嵌入方法,w
(i)
为源代码序列中的单词,dim为嵌入向量维度,v
(i)
为单词经过嵌入后的向量;S32、将所有单词的嵌入向量组合构成源代码序列的嵌入矩阵;S33、将源代码序列的嵌入矩阵使用Transformer编码器编码获得源代码序列的表征,此过程可描述为:其中,TransformerEncoder表示Transformer的编码器,其中为源代码序列的嵌入矩阵,X
(i)
为源代码序列的表征。4.根据权利要求1所述的一种融合抽象语法树节点特征的代码摘要生成方法,其特征在于,所述S4包括:S41、对抽象语法树中的每个节点自身属性信息使用单词嵌入层进行词嵌入得到节点嵌入特征,此过程可描述为:v
(i)
=embedding(n
(i)
,dim)其中,embedding表示词嵌入方法,n
(i)
为抽象语法树节点的属性,dim为嵌入向量维度,v
(i)
表示节点的嵌入表示;S42、对抽象语法树进行层序遍历,得到层序遍历序列:S43、对抽象语法树中的每个节点在层序遍历序列中的位置进行编码得到节点的位置编码,此过程可描述为:
其中,PE表示位置编码,p
(i)
表示节点在层序遍历中的位置,2i表示偶数的维度,2i+1表示奇数维度,d
model
表示向量维度,sin和...

【专利技术属性】
技术研发人员:宫继兵李学文
申请(专利权)人:燕山大学
类型:发明
国别省市:

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

1