1.基于分层对比学习的代码特征提取方法,其特征是,包括:获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
2.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,对待处理代码片段进行解析,生成AST树;具体包括:利用JavaParser解析代码,生成其对应的AST树;
其中,利用JavaParser解析代码,解析后得到两部分信息:一是AST树节点所代表的信息;二是节点与节点的指向关系,存储边的信息。
3.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,对AST树进行嵌入表示得到特征矩阵X;具体包括:使用word embedding,对AST树每个节点所对应的字符串,进行嵌入表示得到特征矩阵X,其中,X={p1,p2,...,pN},pN表示第N个节点的向量表示。
4.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,构造AST树的邻接矩阵A;具体包括:根据AST树各个节点之间是否存在指向关系,构造邻接矩阵A;
其中,邻接矩阵A用于存储节点与节点之间的指向关系,如果节点与节点之间存在指向关系,则邻接矩阵A的对应元素值为1,否则对应元素值为0。
5.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X';具体包括:以每个节点对应一个唯一ID为基础,对其所在树中的位置的深度做相应的标签,从根节点开始遍历AST树,根节点标记为0,第一层子节点标记为1,第二层子节点标记为2,以此类推,第M层子节点标记为M;
基于节点标签对特征矩阵X进行更新,得到新的特征矩阵
6.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,将新的特征矩阵X'和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;具体包括:
将新的特征矩阵X'输入到训练后的残差自注意力网络模型的自注意力机制模型中,得到输出矩阵Z;
将输出矩阵Z和邻接矩阵A,共同输入到训练后的残差自注意力网络模型的图卷积神经网络中,输出待处理代码的特征。
7.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,所述自注意力机制模型,其工作原理包括:将特征矩阵 作为第一卷积层、第二卷积层和第三卷积层输入,通过第一卷积层、第二卷积层和第三卷积层对 进行线性映射,分别计算出query查询、key键和value值,即:Q、K和V;
Q=GCN(X)=XWQ
其中,WQ为可学习的权重矩阵,K和V的计算方式同理;
然后,将Q和K通过第一乘法器的矩阵乘法运算,计算得到两者之间的相似性;
经过softmax函数层计算出score,得到0~1的weights,将weights作为注意力系数attention,保存当前softmax运算的输出记为attn;
非首次运行时,将上一次的softmax函数层输出h_attn通过第一加法器与attn相加,所得相加结果与V通过第二乘法器进行矩阵乘法运算;
对矩阵乘法运算得到的结果,再经过第四卷积层进行卷积运算提取全局特征;
最后,将卷积运算结果与原输入 做残差运算,获得self‑attention的输出,输入到图卷积神经网络中;
或者,
所述图卷积神经网络模型,其工作原理包括:将自注意力机制模型的输出矩阵Z,以及节点的指向关系组成的矩阵A,作为GCN网络的输入,通过GCN网络的两层图卷积层对AST树进行图嵌入提取特征;提取最后一层隐藏层的特征向量,作为抽象语法树的节点进行层次对比学习之后的节点的特征向量,表示为:
8.基于分层对比学习的代码特征提取系统,其特征是,包括:解析模块,其被配置为:获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
矩阵更新模块,其被配置为:以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
特征提取模块,其被配置为:将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
9.一种电子设备,其特征是,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述权利要求1‑7任一项所述的方法。
10.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1‑7任一项所述的方法。