CN113238797A - 基于分层对比学习的代码特征提取方法及*** - Google Patents

基于分层对比学习的代码特征提取方法及*** Download PDF

Info

Publication number
CN113238797A
CN113238797A CN202110411676.XA CN202110411676A CN113238797A CN 113238797 A CN113238797 A CN 113238797A CN 202110411676 A CN202110411676 A CN 202110411676A CN 113238797 A CN113238797 A CN 113238797A
Authority
CN
China
Prior art keywords
matrix
node
code
ast tree
ast
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110411676.XA
Other languages
English (en)
Inventor
吕晨
王潇
高学剑
吴琼
马正
高曰秀
李季
吕蕾
刘弘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Normal University
Original Assignee
Shandong Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Normal University filed Critical Shandong Normal University
Priority to CN202110411676.XA priority Critical patent/CN113238797A/zh
Publication of CN113238797A publication Critical patent/CN113238797A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Library & Information Science (AREA)
  • Image Analysis (AREA)

Abstract

本发明公开了基于分层对比学习的代码特征提取方法及***,包括:获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;通过AST提取程序的语法信息,同时对解析的AST按节点的层次赋予标签进行分类,建立单标签多分类的关系,充分挖掘程序的结构信息,使得生成模型的表达能力更全面更准确。

Description

基于分层对比学习的代码特征提取方法及***
技术领域
本发明涉及代码特征提取技术领域,特别是涉及基于分层对比学习的代码特征提取方法及***。
背景技术
本部分的陈述仅仅是提到了与本发明相关的背景技术,并不必然构成现有技术。
在现有的方法中,程序语法特征表示方法往往只是在解析代码片段之后,利用其抽象语法树(Abstract syntax tree,AST)的结构特性,来表示源代码的一种语法结构,然而单纯的对程序的抽象语法树建模并不能全面的提取代码结构信息,缺乏对其生成的AST的结构特点进行深入挖掘,从而会导致信息的丢失。在图嵌入部分,往往会使用图卷积网络通过层叠来增大感受野,获取局部的信息,然而却不能得到全局的信息,导致特征信息提取不全面。通常情况下,由于图网络内部会出现梯度下降甚至消失的问题,会使得模型的表达能力减弱。
发明内容
为了解决现有技术的不足,本发明提供了基于分层对比学习的代码特征提取方法及***;
第一方面,本发明提供了基于分层对比学习的代码特征提取方法;
基于分层对比学习的代码特征提取方法,包括:
获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
第二方面,本发明提供了基于分层对比学习的代码特征提取***;
基于分层对比学习的代码特征提取***,包括:
解析模块,其被配置为:获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
矩阵更新模块,其被配置为:以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
特征提取模块,其被配置为:将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
第三方面,本发明还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述第一方面所述的方法。
第四方面,本发明还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成第一方面所述的方法。
与现有技术相比,本发明的有益效果是:
通过AST提取程序的语法信息,同时对解析的AST按节点的层次赋予标签进行分类,建立单标签多分类的关系,充分挖掘程序的结构信息,使得生成模型的表达能力更全面更准确。
在图嵌入部分,提出了结合残差自注意力机制与图卷积网络的模型来实现全局和局部的特征提取,在增强自身特征的同时实现全局参考,模型在自注意力模块的内部和外部同时加了残差连接,有效的解决梯度下降问题,增强模型的表达能力。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1为第一个实施例的方法流程图;
图2为第一个实施例的AST树可视化示意图;
图3为第一个实施例的自注意力机制模块示意图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例提供了基于分层对比学习的代码特征提取方法;
如图1所示,基于分层对比学习的代码特征提取方法,包括:
S101:获取待处理代码;对待处理代码片段进行解析,生成AST树;
对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
S102:以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
S103:将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;
其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
进一步地,所述残差自注意力网络模型,其英文缩写为RSGN,其英文全称为:Residual Self-attention Graph Network。
进一步地,所述S101:对待处理代码片段进行解析,生成AST树;具体包括:
利用JavaParser解析代码,生成其对应的AST树;
其中,利用JavaParser解析代码,解析后得到两部分信息:一是AST树节点所代表的信息;二是节点与节点的指向关系,存储边的信息。
其中,AST树节点所代表的信息,包括:节点所对应某行代码的具体信息和节点所对应某行代码所属的类型。
利用在线可视化工具,可将解析后的AST树可视化。如图2所示。
进一步地,所述S101:对AST树进行嵌入表示得到特征矩阵X;具体包括:
使用word embedding,对AST树每个节点所对应的字符串,进行嵌入表示得到特征矩阵X,其中,X={p1,p2,...,pN},pN表示第N个节点的向量表示。
进一步地,所述S101:构造AST树的邻接矩阵A;具体包括:
根据AST树各个节点之间是否存在指向关系,构造邻接矩阵A;
其中,邻接矩阵A用于存储节点与节点之间的指向关系,如果节点与节点之间存在指向关系,则邻接矩阵A的对应元素值为1,否则对应元素值为0。
其中,邻接矩阵A为N*N的矩阵。
进一步地,所述S102:以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X';具体包括:
以每个节点对应一个唯一ID为基础,对其所在树中的位置的深度做相应的标签,从根节点开始遍历AST树,根节点标记为0,第一层子节点标记为1,第二层子节点标记为2,以此类推,第M层子节点标记为M;
基于节点标签对特征矩阵X进行更新,得到新的特征矩阵
Figure BDA0003024421950000051
其中,标签为节点的层次,类别为节点所在的层次数。
进一步地,所述S103:将新的特征矩阵X'和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;具体包括:
将新的特征矩阵X'输入到训练后的残差自注意力网络模型的自注意力机制模型中,得到输出矩阵Z;
将输出矩阵Z和邻接矩阵A,共同输入到训练后的残差自注意力网络模型的图卷积神经网络中,输出待处理代码的特征。
进一步地,如图3所示,所述自注意力机制模型,其网络结构包括:
并列的第一卷积层、第二卷积层和第三卷积层;
所述第一卷积层、第二卷积层和第三卷积层的输入端均用于输入新的特征矩阵X';
第一卷积层的输出端与第一乘法器的输入端连接;
第二卷积层的输出端也与第一乘法器的输入端连接;
第一乘法器的输出端通过softmax函数层与第一加法器的输入端连接;
首次运行时,第一加法器的输入端只与softmax函数层的输出端连接;
非首次运行时,第一加法器的输入端还用于输入上一次运行的softmax函数层输出值;
第一加法器的输出端与第二乘法器的输入端连接;
第二乘法器的输入端还与第三卷积层的输出端连接;
第二乘法器的输出端还与第四卷积层的输入端连接;
第四卷积层的输出端还与第二加法器的输入端连接;
第二加法器的输入端用于输入新的特征矩阵X';
第二加法器的输出端,用于输出矩阵Z。
进一步地,所述自注意力机制模型,其工作原理包括:
将特征矩阵
Figure BDA0003024421950000071
作为第一卷积层、第二卷积层和第三卷积层输入,通过第一卷积层、第二卷积层和第三卷积层对
Figure BDA0003024421950000072
进行线性映射,分别计算出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通过第二乘法器进行矩阵乘法运算;
对矩阵乘法运算得到的结果,再经过第四卷积层进行卷积运算提取全局特征;
最后,将卷积运算结果与原输入
Figure BDA0003024421950000073
做残差运算,获得self-attention的输出,输入到图卷积神经网络中。
在self-attention内部添加残差,解决网络梯度下降问题。这样,不但在自注意力机制内部添加了残差,还在外部添加了残差连接,提高网络的能力。
进一步地,所述图卷积神经网络模型,其网络结构包括:
依次连接的第一图卷积层、第一隐藏层、第二图卷积层和第二隐藏层。
进一步地,所述图卷积神经网络模型,其工作原理包括:
将自注意力机制模型的输出矩阵Z,以及节点的指向关系组成的矩阵A(N*N),作为GCN网络的输入,通过GCN网络的两层图卷积层对AST树进行图嵌入提取特征;提取最后一层隐藏层的特征向量,作为抽象语法树的节点进行层次对比学习之后的节点的特征向量,表示为:
Figure BDA0003024421950000081
GCN是一个神经网络层,进行层与层之间的信息传播:
Figure BDA0003024421950000082
Figure BDA0003024421950000083
表示邻接矩阵A与单位矩阵I之和,引入自身节点,即:
Figure BDA0003024421950000084
Figure BDA0003024421950000085
的度矩阵;H(l)为第l层的激活单元矩阵,对于输入层,H(0)=X;σ为非线性激活函数,H(0)是初始向量表示,W(l)是第l层图卷积网络层的权重参数矩阵。
构造两层图卷积层,激活函数分别用ReLU和Softmax,则整体的正向传播公式为:
Figure BDA0003024421950000086
进一步地,所述训练后的残差自注意力网络模型,其训练步骤包括:
构建残差自注意力网络模型;
构建训练集,所述训练集为已知提取特征的已知代码;
对已知代码进行代码片段进行解析,生成AST树;
对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
将新的特征矩阵X’作为自注意力机制模型的输入值;
将自注意力机制模型的输出值和AST树的邻接矩阵A,作为图卷积神经网络模型的输入值;
将已知提取特征作为图卷积神经网络的输出值,对图卷积神经网络进行训练,当损失函数达到最小值或迭代次数满足设定要求时,停止训练,得到训练后的残差自注意力网络模型。
其中,损失函数为:
Figure BDA0003024421950000091
Figure BDA0003024421950000092
其中,M代表类别的数量;yic表示变量0或1,如果该类别和样本i的类别相同就是1,否则是0;pic对于观测样本i属于类别c的预测概率。<a,p,n>表示一个三元组,a为anchor锚样本,p为positive正样本,n为negative负样本;||*||为欧式距离度量;α指x_a与x_n之间的距离和x_a与x_p之间的距离之间有一个最小的间隔;+表示[]内的值大于零时,取该值为损失;小于零时,损失为零;θ指三元组损失所占比例。
应理解的,为了更好的对输入细节进行区分使用两种损失函数,一是多分类的交叉熵损失,二是三元组损失。三元组损失可以很好的对细节进行区分,尤其是在分类任务中,当两个输入很相似的时候,Triplet loss对这两个差异性较小的输入向量可以学习到更好的表示,从而在分类任务中表现出色。
残差自注意力网络模型同时结合卷积神经网络通过层叠获取局部的信息的优势以及自注意力机制获取全局信息的特点,从局部和全局两方面提取特征。为了解决图网络内部会出现梯度下降甚至消失的问题,该模型还同时在self-attention的外部和内部添加了残差连接,可以有效的防止梯度消失,增强网络的表达能力。
实施例二
本实施例提供了基于分层对比学习的代码特征提取***;
基于分层对比学习的代码特征提取***,包括:
解析模块,其被配置为:获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
矩阵更新模块,其被配置为:以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
特征提取模块,其被配置为:将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
此处需要说明的是,上述解析模块、矩阵更新模块和特征提取模块对应于实施例一中的步骤S101至S103,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为***的一部分可以在诸如一组计算机可执行指令的计算机***中执行。
上述实施例中对各个实施例的描述各有侧重,某个实施例中没有详述的部分可以参见其他实施例的相关描述。
所提出的***,可以通过其他的方式实现。例如以上所描述的***实施例仅仅是示意性的,例如上述模块的划分,仅仅为一种逻辑功能划分,实际实现时,可以有另外的划分方式,例如多个模块可以结合或者可以集成到另外一个***,或一些特征可以忽略,或不执行。
实施例三
本实施例还提供了一种电子设备,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述实施例一所述的方法。
应理解,本实施例中,处理器可以是中央处理单元CPU,处理器还可以是其他通用处理器、数字信号处理器DSP、专用集成电路ASIC,现成可编程门阵列FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据、存储器的一部分还可以包括非易失性随机存储器。例如,存储器还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。
实施例一中的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本领域普通技术人员可以意识到,结合本实施例描述的各示例的单元及算法步骤,能够以电子硬件或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
实施例四
本实施例还提供了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例一所述的方法。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

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进行更新,得到新的特征矩阵
Figure FDA0003024421940000021
6.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,
将新的特征矩阵X'和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;具体包括:
将新的特征矩阵X'输入到训练后的残差自注意力网络模型的自注意力机制模型中,得到输出矩阵Z;
将输出矩阵Z和邻接矩阵A,共同输入到训练后的残差自注意力网络模型的图卷积神经网络中,输出待处理代码的特征。
7.如权利要求1所述的基于分层对比学习的代码特征提取方法,其特征是,
所述自注意力机制模型,其工作原理包括:
将特征矩阵
Figure FDA0003024421940000022
作为第一卷积层、第二卷积层和第三卷积层输入,通过第一卷积层、第二卷积层和第三卷积层对
Figure FDA0003024421940000023
进行线性映射,分别计算出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通过第二乘法器进行矩阵乘法运算;
对矩阵乘法运算得到的结果,再经过第四卷积层进行卷积运算提取全局特征;
最后,将卷积运算结果与原输入
Figure FDA0003024421940000031
做残差运算,获得self-attention的输出,输入到图卷积神经网络中;
或者,
所述图卷积神经网络模型,其工作原理包括:
将自注意力机制模型的输出矩阵Z,以及节点的指向关系组成的矩阵A,作为GCN网络的输入,通过GCN网络的两层图卷积层对AST树进行图嵌入提取特征;提取最后一层隐藏层的特征向量,作为抽象语法树的节点进行层次对比学习之后的节点的特征向量,表示为:
Figure FDA0003024421940000032
8.基于分层对比学习的代码特征提取***,其特征是,包括:
解析模块,其被配置为:获取待处理代码;对待处理代码片段进行解析,生成AST树;对AST树进行嵌入表示得到特征矩阵X,构造AST树的邻接矩阵A;
矩阵更新模块,其被配置为:以AST树的每个节点在AST树中的层次编号,建立节点标签;基于节点标签对特征矩阵X进行更新,得到新的特征矩阵X’;
特征提取模块,其被配置为:将新的特征矩阵X’和邻接矩阵A,输入到训练后的残差自注意力网络模型中,得到待处理代码的特征;其中,所述残差自注意力网络模型,包括:依次连接的自注意力机制模型和图卷积神经网络模型。
9.一种电子设备,其特征是,包括:一个或多个处理器、一个或多个存储器、以及一个或多个计算机程序;其中,处理器与存储器连接,上述一个或多个计算机程序被存储在存储器中,当电子设备运行时,该处理器执行该存储器存储的一个或多个计算机程序,以使电子设备执行上述权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-7任一项所述的方法。
CN202110411676.XA 2021-04-16 2021-04-16 基于分层对比学习的代码特征提取方法及*** Pending CN113238797A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110411676.XA CN113238797A (zh) 2021-04-16 2021-04-16 基于分层对比学习的代码特征提取方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110411676.XA CN113238797A (zh) 2021-04-16 2021-04-16 基于分层对比学习的代码特征提取方法及***

Publications (1)

Publication Number Publication Date
CN113238797A true CN113238797A (zh) 2021-08-10

Family

ID=77128322

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110411676.XA Pending CN113238797A (zh) 2021-04-16 2021-04-16 基于分层对比学习的代码特征提取方法及***

Country Status (1)

Country Link
CN (1) CN113238797A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114067349A (zh) * 2022-01-12 2022-02-18 阿里巴巴达摩院(杭州)科技有限公司 目标对象处理方法及装置
CN115268994A (zh) * 2022-07-26 2022-11-01 中国海洋大学 一种基于tbcnn和多头自注意力机制的代码特征提取方法
CN117573084A (zh) * 2023-08-02 2024-02-20 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110673840A (zh) * 2019-09-23 2020-01-10 山东师范大学 一种基于标签图嵌入技术的自动代码生成方法及***
CN111625276A (zh) * 2020-05-09 2020-09-04 山东师范大学 基于语义与语法信息融合的代码摘要生成方法及***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018820A (zh) * 2019-04-08 2019-07-16 浙江大学滨海产业技术研究院 一种基于深度强化学习的Graph2Seq自动生成Java代码注释的方法
CN110673840A (zh) * 2019-09-23 2020-01-10 山东师范大学 一种基于标签图嵌入技术的自动代码生成方法及***
CN111625276A (zh) * 2020-05-09 2020-09-04 山东师范大学 基于语义与语法信息融合的代码摘要生成方法及***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
XUEJIAN GAO: "A Multi-Module Based Method for Generating Natural Language Descriptions of Code Fragments", IEEE ACCESS, 1 February 2021 (2021-02-01), pages 21579 - 21590 *
张菡文: "基于标签图嵌入的自动代码生成方法研究", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 08, 15 August 2020 (2020-08-15) *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114067349A (zh) * 2022-01-12 2022-02-18 阿里巴巴达摩院(杭州)科技有限公司 目标对象处理方法及装置
CN115268994A (zh) * 2022-07-26 2022-11-01 中国海洋大学 一种基于tbcnn和多头自注意力机制的代码特征提取方法
CN115268994B (zh) * 2022-07-26 2023-06-09 中国海洋大学 一种基于tbcnn和多头自注意力机制的代码特征提取方法
CN117573084A (zh) * 2023-08-02 2024-02-20 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法
CN117573084B (zh) * 2023-08-02 2024-04-12 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法

Similar Documents

Publication Publication Date Title
CN113238797A (zh) 基于分层对比学习的代码特征提取方法及***
EP4009219A1 (en) Analysis of natural language text in document using hierarchical graph
CN106997474A (zh) 一种基于深度学习的图节点多标签分类方法
CN113220876B (zh) 一种用于英文文本的多标签分类方法及***
CN108664512B (zh) 文本对象分类方法及装置
CN112364352B (zh) 可解释性的软件漏洞检测与推荐方法及***
CN113010683B (zh) 基于改进图注意力网络的实体关系识别方法及***
CN113591457A (zh) 文本纠错方法、装置、设备及存储介质
CN113641819B (zh) 基于多任务稀疏共享学习的论辩挖掘***及方法
CN110413319A (zh) 一种基于深度语义的代码函数味道检测方法
CN113742733B (zh) 阅读理解漏洞事件触发词抽取和漏洞类型识别方法及装置
CN112417878B (zh) 实体关系抽取方法、***、电子设备及存储介质
CN115221332A (zh) 一种危化品事故事理图谱的构建方法与***
CN115017907A (zh) 一种基于领域词典的中文农业命名实体识别方法
CN110427317A (zh) 一种相关值确定方法及装置
CN108875024B (zh) 文本分类方法、***、可读存储介质及电子设备
WO2020088338A1 (zh) 一种建立识别模型的方法及装置
Okhotin Input-driven languages are linear conjunctive
CN113722477B (zh) 基于多任务学习的网民情绪识别方法、***及电子设备
CN114579763A (zh) 一种针对中文文本分类任务的字符级对抗样本生成方法
CN110196976B (zh) 文本的情感倾向分类方法、装置和服务器
CN112698977A (zh) 服务器故障定位方法方法、装置、设备及介质
de Souto et al. Equivalence between ram-based neural networks and probabilistic automata
CN113515591A (zh) 文本不良信息识别方法、装置、电子设备及存储介质
CN117349186B (zh) 一种基于语义流图的程序语言缺陷定位方法、***及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination