首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 156 毫秒
1.
源代码注释生成旨在为源代码生成精确的自然语言注释,帮助开发者更好地理解和维护源代码.传统的研究方法利用信息检索技术来生成源代码摘要,从初始源代码选择相应的词或者改写相似代码段的摘要;最近的研究采用机器翻译的方法,选择编码器-解码器的神经网络模型生成代码段的摘要.现有的注释生成方法主要存在两个问题:一方面,基于神经网络的方法对于代码段中出现的高频词更加友好,但是往往会弱化低频词的处理;另一方面,编程语言是高度结构化的,所以不能简单地将源代码作为序列化文本处理,容易造成上下文结构信息丢失.因此,本文为了解决低频词问题提出了基于检索的神经机器翻译方法,使用训练集中检索到的相似代码段来增强神经网络模型;为了学习代码段的结构化语义信息,本文提出结构化引导的Transformer,该模型通过注意力机制将代码结构信息进行编码.经过实验,结果证明该模型在低频词和结构化语义的处理上对比当下前沿的代码注释生成的深度学习模型具有显著的优势.  相似文献   

2.
源代码迁移技术旨在将源代码从一种编程语言转换至另一种编程语言,以减轻开发人员迁移软件项目的负担.现有研究通常利用神经机器翻译(NMT)模型将源代码转换为目标代码,但这些研究忽略了代码结构特征,导致源代码迁移性能不佳.为此,本文提出了基于代码语句掩码注意力机制的源代码迁移模型CSMAT (code-statement masked attention Transformer).该模型利用Transformer的掩码注意力机制(masked attention mechanism),在编码时引导模型理解源代码语句的语法和语义以及语句间上下文特征,在译码时引导模型关注并对齐源代码语句,从而提升源代码迁移性能.本文使用真实项目数据集CodeTrans进行实证研究,并使用4个指标评估模型性能.实验结果验证了CSMAT的有效性,同时验证了代码语句掩码注意力机制在预训练模型的适用性.  相似文献   

3.
曹英魁  孙泽宇  邹艳珍  谢冰 《软件学报》2021,32(4):1006-1022
在开发过程中,开发人员在进行缺陷修复、版本更新时,常常需要修改多处相似的代码.如何进行自动代码修改已成为软件工程领域的热点研究问题.一种行之有效的方式是:给定一组代码修改示例,通过抽取其中的代码修改模式,辅助相似代码进行自动转换.在现有工作中,基于深度学习的方法取得了一定进展,但在捕获代码间的长程信息依赖关系时,效果不佳.为此,本文提出了一种结构信息增强的代码修改自动转换方法ExpTrans.ExpTrans在解析代码时采用图的形式来表示修改示例,显式地指出了代码中变量之间的依赖关系,同时结合图卷积网络和Transformer架构,增强了模型对代码的结构信息和依赖信息的捕获能力,从而提升了代码修改自动转换的准确性.实验结果表明,对比同类型基于深度学习的方法,ExpTrans在准确率上提升了11.8%~30.8%;对比基于人工规则的方法,ExpTrans在修改实例的数量和准确率上均有显著提升.  相似文献   

4.
随着图卷积网络的发展,图卷积网络已经应用到很多任务中,其中就包含文本分类任务。通过将文本数据表示成图数据,进而在图上应用图卷积,从而捕获文本的结构信息和单词间的长距离依赖关系获得了良好的分类效果。但将文本建模成图模型后,图卷积网络面临着文本上下文语义信息和局部特征信息表示不充分的问题。提出一种新的模型,利用双向长短时记忆网络(Bi_LSTM)和卷积神经网络(CNN)混合提取文本的上下文语义信息和局部特征信息去丰富图卷积网络(GCN)的文本表示,从而弥补图卷积网络的不足,同时使用图池化层筛选出重要节点帮助卷积神经网络捕获文本深层局部特征信息,使得模型能更好的表示文本信息。通过在3个英文数据集上的实验结果表明,该模型相比于基线模型有较好的分类效果。  相似文献   

5.
基于卷积神经网络的代码注释自动生成方法   总被引:1,自引:0,他引:1  
彭斌  李征  刘勇  吴永豪 《计算机科学》2021,48(12):117-124
自动化代码注释生成技术通过分析源代码的语义信息生成对应的自然语言描述文本,可以帮助开发人员更好地理解程序,降低软件维护的时间成本.大部分已有技术是基于递归神经网络(Recurrent Neural Network,RNN)的编码器和解码器神经网络实现的,但这种方法存在长期依赖问题,即在分析距离较远的代码块时,生成的注释信息的准确性不高.为此,文中提出了一种基于卷积神经网络(Convolutional Neural Network,CNN)的自动化代码注释生成方法来缓解长期依赖问题,以生成更准确的注释信息.具体而言,通过构造基于源代码的CNN和基于AST的CNN来捕获源代码的语义信息.实验结果表明,与DeepCom和Hybrid-DeepCom这两种最新的方法相比,在常用的BLEU和METEOR两种评测指标下,所提方法能更好地生成代码注释,且执行时间更短.  相似文献   

6.
基于图卷积神经网络的行人重识别方法面临两个问题:1)在对特征映射构图时,图节点表达的语义信息不够显著;2)选择特征块构图时仅依赖特征块间的相对距离,忽略内容相似性.为了解决这两个问题,文中提出融合关系学习网络的行人重识别.利用注意力机制,使用最大注意力模型,使最重要的特征块更显著,赋予其语义信息.融合相似性度量,从距离和内容两方面对特征块进行相似性计算,度量方式更全面.该算法能够综合地选取近邻特征块,为图卷积神经网络提供更好的输入图结构,使图卷积神经网络提取更鲁棒的结构关系特征.在iLIDS-VID、MARS数据集上的实验验证文中网络的有效性.  相似文献   

7.
当前大多数基于图卷积网络的方面级情感分析方法利用文本的句法知识、语义知识、情感知识构建文本依赖,但少有研究利用文本语序知识构建文本依赖,导致图卷积网络不能有效地利用文本语序知识引导方面项学习上下文情感信息,从而限制了其性能。针对上述问题,提出基于语序知识的双通道图卷积网络(dual-channel graph convolutional network with word-order knowledge, WKDGCN)模型,该模型由语序图卷积网络(word-order graph convolutional network, WoGCN)和情感知识结合语义知识增强的句法图卷积网络(sentiment and attention-enhanced graph convolutional network, SAGCN)组成。具体地,WoGCN基于文本的语序知识构建图卷积网络,由文本的语序依赖引导方面项特征学习上下文情感信息;SAGCN利用SenticNet中的情感知识结合注意力机制增强句法依赖,利用增强后的句法依赖构建图卷积网络,以此引导方面项特征学习上下文情感信息;最后融合两个图卷积网...  相似文献   

8.
软件漏洞是导致网络安全事故的一项重要因素。针对现有静态代码分析工具存在较高的误报率与漏报率问题,提出了一种基于残差门控图卷积网络的自动化漏洞检测方法。首先将源代码转换成包含语义、语法特征信息的代码图数据,然后使用残差门控图卷积神经网络对图结构数据进行表示学习,最后训练神经网络模型来预测代码漏洞,实现了C/C++函数代码自动漏洞检测。该方法采用VDISC数据集来验证有效性,检测结果的F1值(CWE-119漏洞类型)达到了76.60%,并与基线方法相比,F1值分别提高了9.46个百分点、7.24个百分点、5.67个百分点、8.42个百分点,所提方法有效提高了漏洞检测能力,证明了该方法的有效性。  相似文献   

9.
针对小样本短文本分类过程中出现的语义稀疏与过拟合问题,在异构图卷积网络中利用双重注意力机制学习不同相邻节点的重要性和不同节点类型对当前节点的重要性,构建小样本短文本分类模型HGCN-RN。利用BTM主题模型在短文本数据集中提取主题信息,构造一个集成实体和主题信息的短文本异构信息网络,用于解决短文本语义稀疏问题。在此基础上,构造基于随机去邻法和双重注意力机制的异构图卷积网络,提取短文本异构信息网络中的语义信息,同时利用随机去邻法进行数据增强,用于缓解过拟合问题。在3个短文本数据集上的实验结果表明,与LSTM、Text GCN、HGAT等基准模型相比,该模型在每个类别只有10个标记样本的情况下仍能达到最优性能。  相似文献   

10.
代码注释可以帮助开发人员理解代码的功能和实现方法。代码注释生成模型可以自动识别代码中的关键信息,并生成相关注释,提高代码的可读性和可维护性。现有的代码注释生成模型通常只使用抽象语法树结构信息来表示代码,导致模型生成注释质量不高。提出一种融合多结构信息的代码注释生成模型,该模型在代码抽象语法树的基础上,增加了数据流图结构信息来表示代码。模型使用Transformer的编码器对抽象语法树序列进行编码,捕获代码全局信息。使用图神经网络对数据流图进行特征提取,提供变量之间的计算依赖关系等信息。然后使用跨模态注意力机制融合抽象语法树和数据流2种特征,经过Transformer的解码器生成相应的注释。实验结果表明,与6种主流模型相比,所提出的模型在Java和Python数据集上的BLEU、METEOR和ROUGE-L指标得分均有提高,生成的注释也具有良好的可读性。  相似文献   

11.
In software development, developers often need to change or update lost of similar codes. How to perform code transformation automatically has become a research hotspot in software engineering. An effective way is extracting the modification pattern from a set of similar code changes and applying it to automatic code transformation. In the related work, deep-learning-based approaches have achieved much progress, but they suffer from the problem of significant long-term dependency between the code. To address this challenge, an automatic code transformation method is proposed, namely ExpTrans. Based on the graph-based representations of code changes, ExpTrans is enhanced with the structural information of code. It labels the dependency between variables in code parsing and adopts the graph convolutional network and Transformer structure to capture the long-term dependency between the code. ExpTrans is first compared with existing learning-based approaches to evaluate its effectiveness; the results show that ExpTrans gains 11.8%--30.8% precision increment. Then, it is compared with rule-based approaches and the results demonstrate that ExpTrans significantly improves the correct rate of the modified instances.  相似文献   

12.
针对基于语言模型的代码补全方法忽略源代码中结构信息和命名信息而导致补全准确率偏低的问题,提出一种基于多任务学习的代码补全方法(multi-task learning code completion, MTLCC)。MTLCC对源代码数据集进行数据清洗和预处理,通过抽象语法树(abstract syntax tree, AST)提取源代码中的结构信息和命名信息;构建基于Transformer的多任务学习网络,采用软参数共享学习方式分别对源代码的节点类型预测、节点值预测和语句预测进行训练;利用集束搜索对模型推理结果进行后期处理生成代码补全建议列表。实验结果表明,与Pointer network、LSTM+TransformerXL和CodeGPT中最好的模型相比,MTLCC在节点类型预测和节点值预测任务中的准确率分别提升了2.5%和1.7%、MRR分别提升了3.7%和2.4%,在语句预测任务中的ROUGE-L分数(L@4)提升了0.055。  相似文献   

13.
付善庆  李征  赵瑞莲  郭俊霞 《软件学报》2022,33(11):3930-3943
在软件工程领域,代码补全是集成开发环境(integrated development environment,IDE)中最有用的技术之一,提高了软件开发效率,成为了加速现代软件开发的重要技术.通过代码补全技术进行类名、方法名、关键字等预测,在一定程度上提高了代码规范,降低了编程人员的工作强度.近年来,人工智能技术的发展促进了代码补全技术的发展.总体来说,智能代码补全技术利用源代码训练深度学习网络,从语料库学习代码特征,根据待补全位置的上下文代码特征进行推荐和预测.现有的代码特征表征方式大多基于程序语法,没有反映出程序的语义信息.同时,目前使用到的网络结构在面对长代码序列时,解决长距离依赖问题的能力依旧不足.因此,提出了基于程序控制依赖关系和语法信息结合共同表征代码的方法,并将代码补全问题作为一个基于时间卷积网络(time convolution network,TCN)的抽象语法树(abstract grammar tree,AST)节点预测问题,使得网络模型可以更好地学习程序的语法和语义信息,并且可以捕获更长范围的依赖关系.实验结果表明,该方法比现有方法的准确率提高了约2.8%.  相似文献   

14.
Ziyi Zhou  Huiqun Yu  Guisheng Fan 《Software》2020,50(12):2313-2336
Natural language summaries of source codes are important during software development and maintenance. Recently, deep learning based models have achieved good performance on the task of automatic code summarization, which encode token sequence or abstract syntax tree (AST) of code with neural networks. However, there has been little work on the efficient combination of lexical and syntactical information of code for better summarization quality. In this paper, we propose two general and effective approaches to leveraging both types of information: a convolutional neural network that aims to better extract vector representation of AST node for downstream models; and a Switch Network that learns an adaptive weight vector to combine different code representations for summary generation. We integrate these approaches into a comprehensive code summarization model, which includes a sequential encoder for token sequence of code and a tree based encoder for its AST. We evaluate our model on a large Java dataset. The experimental results show that our model outperforms several state-of-the-art models on various metrics, and the proposed approaches contribute a lot to the improvements.  相似文献   

15.
为了提高程序题自动评分的准确性,及解决传统评分方法无法从语法结构和语义角度衡量错误的学生程序与正确答案之间的相似度,提出了一种基于抽象语法树匹配的程序题自动评分方法。文中以JavaCC技术为核心,首先通过词法分析、语法分析和语义分析生成错误列表和抽象语法树的中间表示,然后通过语法树切片匹配得分,最后和错误列表结合给出评分结果。文中详细论述了各个模块的设计方法,着重讨论了抽象语法树生成并匹配的细节,设计并实现了一个传统方法与语义分析结合的C++程序题自动评分系统。通过对实际考试的结果进行实验,进而验证了该系统的实用性与有效性。  相似文献   

16.
源代码漏洞的自动检测是一个重要的研究课题。目前现有的解决方案大多是基于线性模型,依赖于源代码的文本信息而忽略了语法结构信息,从而造成了源代码语法和语义信息的丢失,同时也遗漏了许多漏洞特征。提出了一种基于结构表征的智能化漏洞检测系统Astor,致力于使用源代码的结构信息进行智能化漏洞检测,所考虑的结构信息是抽象语法树(Abstract Syntax Tree,AST)。首先,构建了一个从源代码转化而来且包含源码语法结构信息的数据集,提出使用深度优先遍历的机制获取AST的语法表征。最后,使用神经网络模型学习AST的语法表征。为了评估Astor的性能,对多个基于结构化数据和基于线性数据的漏洞检测系统进行比较,实验结果表明Astor能有效提升漏洞检测能力,降低漏报率和误报率。此外,还进一步总结出结构化模型更适用于长度大,信息量丰富的数据。  相似文献   

17.
谢德峰  吉建民 《计算机应用》2021,41(9):2489-2495
在自然语言处理(NLP)中,句法信息是完整句子中词汇与词汇之间的句法结构关系或者依存关系,是一种重要且有效的参考信息。语义解析任务是将自然语言语句直接转化成语义完整的、计算机可执行的语言。在以往的语义解析研究中,少有采用输入源的句法信息来提高端到端语义解析效率的工作。为了进一步提高端到端语义解析模型的准确率和效率,提出一种利用输入端句法依存关系信息来提高模型效率的语义解析方法。该方法的基本思路是先对一个端到端的依存关系解析器进行预训练;然后将该解析器的中间表示作为句法感知表示,与原有的字词嵌入表示拼接到一起以产生新的输入嵌入表示,并将得到的输入嵌入表示用于端到端语义解析模型;最后采用转导融合学习方式进行模型融合。实验对比了所提模型和基准模型Transformer以及过去十年的相关工作。实验结果表明,在ATIS、GEO、JOBS数据集上,融入依存句法信息感知表示以及转导融合学习的语义解析模型分别实现了89.1%、90.7%、91.4%的最佳准确率,全面超过了Transformer,验证了引入句法依存关系信息的有效性。  相似文献   

18.
代码注释能够提高程序代码的可读性,从而提升软件开发效率并降低成本。现有的代码注释生成方法将程序代码的序列表示或者抽象语法树表示输入到不同结构的编码器网络,无法融合程序代码不同抽象形式的结构特性,导致生成的注释可读性较差。构建一种结构感知的混合编码模型,同时考虑程序代码的序列表示和结构表示,通过序列编码层和图编码层分别捕获程序代码的序列信息和语法结构信息,并利用聚合编码过程将两类信息融合至解码器。设计一种结构感知的图注意力网络,通过将程序代码的语法结构的层次和类型信息嵌入图注意力网络的学习参数,有效提升了混合编码模型对程序代码的复杂语法结构的学习能力。实验结果表明,与SiT基准模型相比,混合编码模型在Python和Java数据集上的BLEU、ROUGE-L、METEOR得分分别提高了2.68%、1.47%、3.82%和2.51%、2.24%、3.55%,能生成更准确的代码注释。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号