[发明专利]一种基于多模态代码表示的注释自动生成方法在审
申请号: | 202211525058.9 | 申请日: | 2022-11-30 |
公开(公告)号: | CN115756597A | 公开(公告)日: | 2023-03-07 |
发明(设计)人: | 王俊峰;杨凯元;宋子华 | 申请(专利权)人: | 四川大学 |
主分类号: | G06F8/73 | 分类号: | G06F8/73;G06F8/41;G06F18/25;G06N3/0442;G06N3/048;G06N3/08 |
代理公司: | 成都禾创知家知识产权代理有限公司 51284 | 代理人: | 刘凯 |
地址: | 610065 四川*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 多模态 代码 表示 注释 自动 生成 方法 | ||
1.一种基于多模态代码表示的注释自动生成方法,其特征在于,包括以下步骤:
步骤1:代码数据的预处理:构造代码片段的三种表示模态:API上下文图、抽象语法树和其字段序列;API上下文图表征代码片段和控制单元的关联,整体地描述程序的逻辑;抽象语法树表征代码片段中结构和语法信息,字段序列表征代码片段中天然的语义信息;
步骤2:代码多模态架构的表示学习:基于一个编码器-解码器框架,使用图编码器表示API上下文图,使用树编码器表示抽象语法树,使用字段编码器表示字段序列;图编码器包括节点嵌入层和图注意力模块,通过图编码器将输入的API上下文图编码为图中间特征向量;通过树编码器将输入的抽象语法树编码为树中间特征向量;通过字段编码器将输入的字段序列编码为字段中间特征向量;
步骤3:特征融合和解码:通过特征融合层融合各个编码器输出的中间特征向量,生成一个单独的联合向量,最后通过联合编码器逐词输出代码的注释。
2.根据权利要求1所述的基于多模态代码表示的注释自动生成方法,其特征在于,所述步骤1中构造API上下文图包括以下步骤:
步骤11:给定代码片段,单独提取代码的函数名作为ACG的起始节点;而所有包含“return”关键字的语句都被映射到同一个节点,作为结尾;
步骤12:若语句中包含API方法调用,则为该语句创建一个ACG节点;若API方法调用的参数也是API方法调用,则首先按照从右到左的顺序为参数创建节点;
步骤13:若当前语句是控制语句,则为控制单元分别创建控制节点、Condition节点和Body节点,以及连接各节点的边;
步骤14:系统性地分析节点间的控制依赖关系,连接相应节点的边。
3.根据权利要求1所述的基于聚类与标签传播的软件系统模块划分方法,其特征在于,所述步骤2中具体包括以下步骤:
步骤21:经由节点嵌入层,获取API上下文图的图嵌入表示IACG={I1,I2,...,In};
步骤22:通过线性变换将输入的图嵌入表示映射到查询空间和值空间两个特征空间,分别得到查询向量和值向量;公式化如下:
f(IACG)=IACGWq
g(IACG)=IACGWk (1)
其中,f(·)表示映射到查询空间的线性变换;g(·)表示映射到值空间的线性变换;Wq、Wk均为可学习的参数;
步骤23:通过计算查询向量和值向量的点积,获取注意力矩阵αij;具体计算公式如下:
sij=f(Ii)⊙g(Ij)T (3)
其中,B代表ACG的邻接矩阵,En为单位矩阵;αij表示当合成节点i的表示向量时,节点j对于节点i的注意力系数,而sij为节点j对于节点i的注意力分数值;softmaxj(·)表示归一化指数函数;
步骤24:通过图注意力模块输出每一个节点的集成表示,计算如下:
其中,Wv为可学习的参数;表示ACG经过注意力模块的中间表示;节点i的邻居节点集合;ReLU(·)表示分段线性激活函数;
步骤25:采用BiLSTM网络连接所述图注意力模块,得到图编码器输出的图中间特征向量
其中,为图编码器输出的节点i-1的ACG中间特征向量;hACG为图编码器最后一个单元隐藏层的输出;为图编码器输出的节点i的ACG中间特征向量;
步骤26:利用Tree-LSTM网络处理嵌入后的抽象语法树向量IAST,计算如下:
其中,为树编码器输出的AST中间向量;hAST为树编码器最后一个单元隐藏层的输出;和分别为AST节点的左子节点输入和右子节点输入;
步骤27:利用BiLSTM网络处理嵌入后的字段序列向量ITOKEN,计算如下:
其中,为字段编码器输出的TOKEN中间向量;hTOKEN为字段编码器最后一个单元隐藏层的输出;为代码字段序列第i个字段的向量表示。
4.根据权利要求3所述的基于聚类与标签传播的软件系统模块划分方法,其特征在于,所述步骤3中特征融合和解码具体包括以下步骤:
步骤31:给定一个指定的图中间特征向量引入自注意力机制,根据下式计算图上下文向量
其中,为注意力系数矩阵,代表合成时对于的权重;依据公式(8)同理计算出树上下文向量和字段上下文向量
步骤32:给定树上下文向量和字段上下文向量计算二者的带权平均值
其中,代表二者在解码的每个时序对于结果的贡献度,tanh(·)是双曲正切激活函数;Wp为可学习的参数;b为偏差变量;δ(·)表示sigmoid激活函数;
步骤33:考虑到图上下文向量特征空间的独特性,其直接以连接的方式和带权平均值融合,得到最终的特征融合表示即:
步骤34:使用LSTM网络作为解码器,其初始状态是树编码器和字段编码器最后一个单元结果的平均,在模型训练阶段,输入参考注释的嵌入向量St驱动解码过程,计算如下:
其中,hINIT为解码器的初始状态,Ws、Wt为可学习参数;为概率分布;Ct为解码器的输出;
根据输出的概率分布挑选最高概率的词汇作为该解码时序的结果,最终迭代输出目标序列Y={Y1,Y2,...,YT}。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于四川大学,未经四川大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211525058.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种线路板及其制作方法
- 下一篇:一种基于伺服报文读写的转台旋转运动控制方法