CN115048141A - 一种基于图引导的Transformer模型代码注释自动生成方法 - Google Patents
一种基于图引导的Transformer模型代码注释自动生成方法 Download PDFInfo
- Publication number
- CN115048141A CN115048141A CN202210776314.5A CN202210776314A CN115048141A CN 115048141 A CN115048141 A CN 115048141A CN 202210776314 A CN202210776314 A CN 202210776314A CN 115048141 A CN115048141 A CN 115048141A
- Authority
- CN
- China
- Prior art keywords
- code
- attention
- model
- data flow
- matrix
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 31
- 230000007246 mechanism Effects 0.000 claims abstract description 24
- 230000006870 function Effects 0.000 claims abstract description 19
- 238000012360 testing method Methods 0.000 claims abstract description 9
- 238000010845 search algorithm Methods 0.000 claims abstract description 5
- 238000007781 pre-processing Methods 0.000 claims abstract description 4
- 238000012549 training Methods 0.000 claims abstract description 4
- 238000013528 artificial neural network Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 4
- 230000009466 transformation Effects 0.000 claims description 3
- 238000000844 transformation Methods 0.000 claims description 3
- 239000013256 coordination polymer Substances 0.000 claims description 2
- 239000012634 fragment Substances 0.000 claims description 2
- 125000004122 cyclic group Chemical group 0.000 claims 2
- 238000010276 construction Methods 0.000 claims 1
- 238000003058 natural language processing Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/169—Annotation, e.g. comment data or footnotes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/284—Lexical analysis, e.g. tokenisation or collocates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Library & Information Science (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明提供了一种基于图引导的Transformer模型代码注释自动生成方法,具体包括以下步骤:从GitHub上下载开源的Java代码数据集DeepCom;对数据集中的源代码进行预处理,解析为抽象语法树,提取变量依赖关系构造数据流图,再将其转换为数据流引导的mask矩阵;用构造好的mask矩阵改进自注意力机制从而构建新的Transformer编码器;解码时,将句子的长度进行归一化,并在score函数中加入覆盖惩罚机制,以此来改进集束搜索算法;在Java数据集DeepCom上对已构建好的DFG‑Trans模型进行训练,学习代码结构和语义信息;输入测试集中的代码序列,使用已训练好的模型进行测试,生成Java代码对应的注释。本发明不仅可以缓解代码长距离依赖的问题,而且可以很好地提取源代码的结构特征,从而提高注释生成的准确性。
Description
技术领域
本发明属于软件工程技术领域,具体涉及一种基于图引导的Transformer模型代码注释自动生成方法。
背景技术
代码注释自动生成也称源代码摘要,旨在为代码自动生成简明扼要的自然语言描述。好的代码注释能够使程序员快速的了解一段程序代码的功能,并将精力更多地专注于代码逻辑的编写,从而大大提高代码的重用性以及编程的效率。人工编写代码注释不仅费时费力且效率低。除此以外,代码注释需要随着代码的改动而更新,很多现有的代码注释往往会出现不匹配、过时等问题。因此代码注释自动生成这项研究十分必要并且已引起了广泛的关注。
代码注释自动生成问题是一个多领域交叉的研究问题,涉及到软件工程、自然语言处理等多个不同领域。随着深度学习在自然语言处理(NLP)领域的发展,深度神经网络逐渐被引入到代码注释自动生成任务中。基于深度学习对代码注释任务进行建模的方法主要是将其视作神经机器翻译(NMT,Neural Machine Translation)问题。经典的有编码器-解码器结构,也称序列到序列(seq2seq)模型。这类方法利用编码器先将源代码编码为一定长度的向量表示,然后利用解码器将其解码生成由自然语言描述的注释序列。
然而传统的seq2seq模型存在两个方面的问题,(1)基于RNN或CNN的序列模型无法捕获代码token的长距离依赖关系;(2)代码的结构信息在特征表示上没有得到充分利用,或是使用抽象语法树来提取代码中的结构化特征带来了一些不必要的深层次结构,从而导致模型过于复杂。
发明内容
针对目前存在的问题,本发明提出了一种基于图引导的Transformer模型代码注释自动生成方法,既可以很好地提取源代码的结构化特征,还大大缓解了代码的长距离依赖问题,提高了生成注释的准确性。
与现有的其他方法不同,本发明的改进主要体现在以下两个方面:(1)使用代码中的语义级图结构——数据流来代替语法级图结构——抽象语法树,提取代码结构化特征,并利用这一结构化特征改进Transformer,从而使模型更好地学习到代码语义表示;(2)利用改进后的集束搜索算法对解码器输出的概率分布进行采样以生成最可能的注释序列。为了提高句子生成的准确性,对所采样的句子长度进行归一化,并在评分函数中加入了覆盖惩罚机制。
本发明提出的一种基于图引导的Transformer模型代码注释自动生成方法,主要包括以下步骤:
S1、从GitHub上下载开源的Java代码数据集DeepCom;
S2、对数据集中的源代码进行预处理,解析为抽象语法树,提取变量依赖关系,构造数据流图,再将其转换为数据流引导的mask矩阵;
S3、用构造好的mask矩阵改进自注意力机制从而构建新的Transformer编码器;
S4、解码时,将句子的长度进行归一化,并在score函数中加入覆盖惩罚机制,以此来改进原始的启发式算法——集束搜索算法;
S5、在Java数据集DeepCom上对已构建好的模型DFG-Trans进行训练,学习代码结构和语义信息;
S6、输入测试集中的代码序列,使用已训练好的模型进行测试,生成Java代码对应的注释。
所述步骤S2中,具体地:
给定源代码C={c1,c2,...,cn},将源代码解析为抽象语法树后,提取源代码中所有的变量节点并构造数据流图,将得到的数据流图用G=(V,E)表示,其中V表示顶点的集合,E表示边的集合,将数据流图中的顶点记作vi pos(i),pos(i)表示第i个顶点在源代码序列中的位置信息,矩阵M记录源代码中的变量数据依赖关系。
所述步骤S3中,具体地:
编码器和解码器模块均基于Transformer,其中编码器由数据流引导的编码器层与基础编码器层堆叠而成,带有数据流引导的编码器层采用改进后的自注意力机制。
所述步骤S4中,具体地:
在解码时,Transformer解码器会在输出词的词汇表中生成概率分布,利用改进后的束搜索算法对概率分布进行采样以生成最可能的注释序列,为了提高句子生成的准确性,对所采样的句子长度进行归一化,并在评分函数中加入了覆盖惩罚。
附图说明
图1为本发明中的模型整体架构。
图2为本发明中构造数据流引导的mask矩阵的方法。
具体实施方式
下面结合附图,对本发明提出的方法作进一步详细说明。
参见附图1,本发明提出的一种基于图引导的Transformer模型代码注释自动生成方法,包括以下内容:
S1、从GitHub上下载开源的Java代码数据集DeepCom。
S2、对数据集中的源代码进行预处理,解析为抽象语法树,提取变量依赖关系,构造数据流图,再将其转换为数据流引导的mask矩阵。
S201、数据流的结构化表示:
数据流是表示变量之间依赖关系的图,其中节点表示变量,边表示变量之间数据的流动关系。与抽象语法树不同,即便是在不同的抽象语法下,代码的数据流图也是不变的。这种特有的代码结构能够为机器翻译模型提供更好的代码语义信息,很多程序员在编写代码时并没有严格按照命名规范,因此仅仅将代码注释生成任务视作机器翻译问题去建模,对于模型而言很难理解代码真正的语义。因此,为了更好地提取代码结构中的语义信息,参照附图2,将给定源代码解析为抽象语法树后,提取源代码中所有的变量节点并构造数据流图,将得到的数据流图用G=(V,E)表示,其中V表示顶点的集合,E表示边的集合,将数据流图中的顶点记作vi pos(i),pos(i)表示第i个顶点在源代码序列中的位置信息,矩阵M记录源代码中的变量数据依赖关系,src_len表示源代码序列长度,
其中<vi,vj>∈E表示vi与vj存在数据依赖关系,当vi与vj之间存在边或i等于j时,将Mpos(i)pos(j)置为1,否则为负无穷。将M矩阵引入自注意力机制,当M等于1时,注意力得分不变,当M等于负无穷时,注意力得分将会被计算为0。这样就可以将序列中没有数据依赖关系的两个token的注意力得分覆盖掉,从而使后续构建的Transformer模型更能关注到代码中的数据流动关系,学习到变量的语义,帮助模型生成代码注释。
S3、用构造好的mask矩阵改进自注意力机制从而构建新的Transformer编码器。如附图1所示,模型的整体架构主要由编码器和解码器两个部分组成,编码器由N个编码器层堆叠而成,每一个编码器层主要由多头自注意力层和前馈神经网络层组成,将这些编码器层划分为两类,分别是带有数据流引导和无数据流引导的,因此在计算注意力得分时有所不同。
S301、嵌入编码:
给定源代码片段,经过嵌入层(embedder)编码后得到代码序列的向量表示,Transformer与循环神经网络不同,循环神经网络是一种顺序结构,可以很自然地捕获词序信息,为了捕获每个token在序列中的位置信息,每一个token的位置编码方式可以定义为:
其中i∈[0,d/2],pos表示词的位置,通过这样的编码方式用词的位置信息对序列中的每个词进行二次表示,将位置编码与词向量相加得到最终的词向量表示,记作X=[x1,x2,...,xsrc_len],其中X∈Rsrc_len×d_model,d_model指的是模型嵌入维度。
S302、自注意力机制:
Transformer中的自注意力机制通过查询,键,值三个矩阵的计算实现,将代码序列的向量表示X=[x1,x2...xsrc_len]通过三个线性层映射为Q,K,V三个矩阵,
Q=QWi Q,K=KWi K,V=VWi V
WQ,WK,WV是可训练的权重矩阵,其中WQ,WK∈Rd_model×d_k,WV∈Rd_model×d_v,Q,K,V矩阵的初始值为X,无数据流引导的编码器层采用的自注意力机制为缩放点积注意(ScaledDot-Product Attention),将映射后得到的Q,K,V矩阵传入多头自注意力层,注意力输出计算为:
S303、数据流引导的自注意力机制:
为了引导模型关注代码中的数据依赖关系从而学习代码语义,定义了数据流邻接矩阵M作为mask矩阵(见步骤S201),在数据流引导的编码器层采用了改进后的自注意力机制,自注意力输出计算C’为:
矩阵M记录了代码中的数据流信息,当第i个token与第j个token存在数据依赖关系时Mij等于1,否则Mij为负无穷,经过softmax的计算后,没有数据依赖关系的两个token之间的注意力得分会被覆盖掉,计算出一头的注意力值后,多头自注意力矩阵的计算定义如下:
MultiAttn(Q,K,V)=Concat(head1,...,headh)Wo
模型将各头自注意力输出通过Concat函数拼接起来得到最终的多头注意力矩阵,其中headi表示第i头的自注意力输出,h为head的数量,Wo是模型的可训练参数。
S304、前馈神经网络:
多头自注意力层的输出经过残差连接和归一化后作为全连接前馈神经网络层的输入H,该层中包括两个线性变换,
FFN(H)=ReLU(HW1+b1)W2+b2
其中W1,W2∈Rd_ff×d_model,b1∈Rd_ff,b2∈Rd_model均为模型可学习参数,ReLU函数用于激活输出。
S4、解码时,将句子的长度进行归一化,并在score函数中加入覆盖惩罚机制,以此来改进原始的启发式算法——集束搜索算法。
S401、改进的集束搜索算法:
解码器会根据编码器的输出在自然语言构成的词汇表中生成词的概率分布,然后利用解码算法对概率分布进行采样以生成最可能的注释序列。本发明在模型的解码阶段采用集束搜索,将编码器的输出与前t-1步解码得到的当前预测序列st-1作为下一步的输入,计算第t步预测词的概率分布,并从中选择前k个概率最大的候选词构造新的预测序列st,k为集束宽度。当句子长度达到设定的最大长度,或当前句子中已包含</s>,则将该句子剪切出来作为候选预测序列之一并退出循环,最后在所有的候选句子中计算出得分最高的序列作为输出。
常规的集束搜索算法以对数似然作为得分函数,然而因为对数似然产生的概率为负数,负的对数概率随着句子长度的增加而累积,导致长句更容易产生更低(更负)的分数。因此通过对句子的长度进行归一化以改进原始启发式算法。除此以外,为了使输入序列中的每一个token被解码器均匀地注意到,即覆盖整个输入序列,在得分函数中添加了覆盖惩罚机制。改进后的得分函数score(x,y)定义为:
将原始算法使用的对数似然除以Lα来进行长度的归一化,其中L是生成的候选注释的长度,α是模型的超参数,它的值在0到1之间。CP(x;y)为覆盖率惩罚函数,具体定义为:
Pij表示第j个目标候选词与第i个输入词之间的注意力得分,Lx指输入序列的长度,β是模型的超参数,它的值在0到1之间。
S5、在Java数据集DeepCom上对已构建好的模型DFG-Trans进行训练,学习代码结构和语义信息。
S6、输入测试集中的代码序列,使用已训练好的模型进行测试,生成Java代码对应的注释。表1给出了测试集中的一个Java代码示例,并分别展示了在不引入数据流和不拆分编码器以及完整的DFG-Trans模型下生成的注释结果。根据结果可以看出DFG-Trans生成的注释相比之下更接近于真实的注释。
表1
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所做的等效结构或等流程变换,或直接或间接运用在相关技术领域,均同理包括在本发明的专利保护范围。
Claims (4)
1.一种基于图引导的Transformer模型代码注释自动生成方法,其特征在于,包括如下步骤:
S1、从GitHub上下载开源的Java代码数据集DeepCom;
S2、对数据集中的源代码进行预处理,解析为抽象语法树,提取变量依赖关系,构造数据流图再将其转换为数据流引导的mask矩阵;
S3、用构造好的mask矩阵改进自注意力机制从而构建新的Transformer编码器;
S4、解码时,将句子的长度进行归一化,并在score函数中加入覆盖惩罚机制,以此来改进原始的启发式算法——集束搜索算法;
S5、在Java数据集DeepCom上对已构建好的模型DFG-Trans进行训练,学习代码结构和语义信息;
S6、输入测试集中的代码序列,使用已训练好的模型进行测试,生成Java代码对应的注释。
2.根据权利要求1所述的图引导的Transformer模型代码注释自动生成方法,其特征在于,步骤S2中所述的mask矩阵构造方法,具体包括:
S201、数据流的结构化表示:
将给定源代码解析为抽象语法树后,提取源代码中所有的变量节点并构造数据流图,将得到的数据流图用G=(V,E)表示,其中V表示顶点的集合,E表示边的集合,将数据流图中的顶点记作pos(i)表示第i个顶点在源代码序列中的位置信息,矩阵M记录源代码中的变量数据依赖关系,src_len表示源代码序列长度,矩阵M定义为:
其中<vi,vj>∈E表示vi与vj存在数据依赖关系,当vi与vj之间存在边或i等于j时,将Mpos(i)pos(j)置为1,否则为负无穷,将M矩阵引入自注意力机制,当M等于1时,注意力得分不变,当M等于负无穷时,注意力得分将会被计算为0,这样就可以将序列中没有数据依赖关系的两个token的注意力得分覆盖掉,从而使后续构建的Transformer模型更能关注到代码中的数据流动关系,学习到变量的语义,帮助模型生成代码注释。
3.根据权利要求1所述的图引导的Transformer模型代码注释自动生成方法,其特征在于,步骤S3中所述的Transformer编码器,具体包括:
S301、嵌入编码:
给定源代码片段,经过嵌入层(embedder)编码后得到代码序列的向量表示,Transformer与循环神经网络不同,循环神经网络是一种顺序结构,可以很自然地捕获词序信息,为了捕获每个token在序列中的位置信息,对每一个token的位置采用正余弦函数进行编码;
S302、自注意力机制:
Transformer中的自注意力机制通过查询,键,值三个矩阵的计算实现,将代码序列的向量表示X=[x1,x2...xsrc_len]通过三个线性层映射为Q,K,V三个矩阵,
Q=QWi Q,K=KWi K,V=VWi V
WQ,WK,WV是可训练的权重矩阵,其中WQ,WK∈Rd_model×d_k,WV∈Rd_model×d_v,Q,K,V矩阵的初始值为X,将映射后得到的Q,K,V矩阵传入多头自注意力层,无数据流引导的编码器层采用的自注意力机制为缩放点积注意(Scaled Dot-Product Attention);
S303、数据流引导的自注意力机制:
为了引导模型关注代码中的数据依赖关系从而学习代码语义,定义了数据流邻接矩阵M作为mask矩阵(见步骤2.1),在数据流引导的编码器层采用了改进后的自注意力机制,自注意力输出计算C’为:
矩阵M记录了代码中的数据流信息,当第i个token与第j个token存在数据依赖关系时Mij等于1,否则Mij为负无穷,经过softmax的计算后,没有数据依赖关系的两个token之间的注意力得分会被覆盖掉,计算出各头的注意力值后,模型将各头自注意力输出通过Concat函数拼接起来得到最终的多头注意力矩阵;
S304、前馈神经网络:
多头自注意力层的输出经过残差连接和归一化后作为全连接前馈神经网络层的输入H,该层中包括两个线性变换,
FFN(H)=ReLU(HW1+b1)W2+b2
其中W1,W2∈Rd_ff×d_model,b1∈Rd_ff,b2∈Rd_model均为模型可学习参数,ReLU函数用于激活输出。
4.根据权利要求1所述的图引导的Transformer模型代码注释自动生成方法,其特征在于,步骤S4中所述的改进后的集束搜索解码算法,具体包括:
常规的集束搜索算法以对数似然作为得分函数,然而因为对数似然产生的概率为负数,负的对数概率随着句子长度的增加而累积,导致长句更容易产生更低(更负)的分数,因此通过对句子的长度进行归一化以改进原始启发式算法,除此以外,为了使输入序列中的每一个token被解码器均匀地注意到,即覆盖整个输入序列,在得分函数中添加了覆盖惩罚机制,改进后的得分函数score(x,y)定义为:
将原始算法使用的对数似然除以Lα来进行长度的归一化,其中L是生成的候选注释的长度,α是模型的超参数,它的值在0到1之间,CP(x;y)为覆盖率惩罚函数,具体定义为:
Pij表示第j个目标候选词与第i个输入词之间的注意力得分,Lx指输入序列的长度,β是模型的超参数,它的值在0到1之间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210776314.5A CN115048141A (zh) | 2022-07-01 | 2022-07-01 | 一种基于图引导的Transformer模型代码注释自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210776314.5A CN115048141A (zh) | 2022-07-01 | 2022-07-01 | 一种基于图引导的Transformer模型代码注释自动生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048141A true CN115048141A (zh) | 2022-09-13 |
Family
ID=83165185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210776314.5A Pending CN115048141A (zh) | 2022-07-01 | 2022-07-01 | 一种基于图引导的Transformer模型代码注释自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048141A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116628707A (zh) * | 2023-07-19 | 2023-08-22 | 山东省计算中心(国家超级计算济南中心) | 一种可解释性的基于多任务的源代码漏洞检测的方法 |
CN117170673A (zh) * | 2023-08-03 | 2023-12-05 | 浙江大学 | 面向二进制代码文本注释自动化生成方法及装置 |
CN117407051A (zh) * | 2023-12-12 | 2024-01-16 | 武汉大学 | 一种基于结构位置感知的代码自动摘要方法 |
CN117573084A (zh) * | 2023-08-02 | 2024-02-20 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
-
2022
- 2022-07-01 CN CN202210776314.5A patent/CN115048141A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116628707A (zh) * | 2023-07-19 | 2023-08-22 | 山东省计算中心(国家超级计算济南中心) | 一种可解释性的基于多任务的源代码漏洞检测的方法 |
CN117573084A (zh) * | 2023-08-02 | 2024-02-20 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
CN117573084B (zh) * | 2023-08-02 | 2024-04-12 | 广东工业大学 | 一种基于逐层融合抽象语法树的代码补全方法 |
CN117170673A (zh) * | 2023-08-03 | 2023-12-05 | 浙江大学 | 面向二进制代码文本注释自动化生成方法及装置 |
CN117170673B (zh) * | 2023-08-03 | 2024-05-17 | 浙江大学 | 面向二进制代码文本注释自动化生成方法及装置 |
CN117407051A (zh) * | 2023-12-12 | 2024-01-16 | 武汉大学 | 一种基于结构位置感知的代码自动摘要方法 |
CN117407051B (zh) * | 2023-12-12 | 2024-03-08 | 武汉大学 | 一种基于结构位置感知的代码自动摘要方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115048141A (zh) | 一种基于图引导的Transformer模型代码注释自动生成方法 | |
CN112215013B (zh) | 一种基于深度学习的克隆代码语义检测方法 | |
US20220164626A1 (en) | Automated merge conflict resolution with transformers | |
CN112989796B (zh) | 一种基于句法指导的文本命名实体信息识别方法 | |
Harer et al. | Tree-transformer: A transformer-based method for correction of tree-structured data | |
US20220308848A1 (en) | Semi-supervised translation of source code programs using neural transformers | |
CN113064586B (zh) | 一种基于抽象语法树增广图模型的代码补全方法 | |
CN110442880B (zh) | 一种机器翻译译文的翻译方法、装置及存储介质 | |
CN116151132B (zh) | 一种编程学习场景的智能代码补全方法、系统及储存介质 | |
CN114201406B (zh) | 基于开源组件的代码检测方法、系统、设备及存储介质 | |
CN112162775A (zh) | 一种基于Transformer和混合代码表示的Java代码注释自动生成方法 | |
CN113901847A (zh) | 基于源语言句法增强解码的神经机器翻译方法 | |
CN112764738A (zh) | 基于多视图程序特征的代码自动生成方法及系统 | |
CN115438709A (zh) | 基于代码属性图的代码相似性检测方法 | |
CN114547619A (zh) | 一种基于树的漏洞修复系统及修复方法 | |
CN115543437A (zh) | 一种代码注释生成方法和系统 | |
CN113254575B (zh) | 一种基于多步证据推理的机器阅读理解方法与系统 | |
CN117390189A (zh) | 基于前置分类器的中立文本生成方法 | |
WO2020235024A1 (ja) | 情報学習装置、情報処理装置、情報学習方法、情報処理方法及びプログラム | |
CN116560890A (zh) | 一种结合词法和语法信息的自动程序修复方法 | |
CN115826988A (zh) | 一种基于数据流分析和注意力机制的Java方法注释即时自动更新方法 | |
CN116483314A (zh) | 一种自动化智能活动图生成方法 | |
CN115878177A (zh) | 一种代码克隆检测方法及系统 | |
CN115422945A (zh) | 一种融合情感挖掘的谣言检测方法及系统 | |
CN114185595A (zh) | 基于代码结构引导的方法名生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |