【技术实现步骤摘要】
一种基于抽象语法树的程序理解方法及系统
本专利技术涉及程序理解
,尤其涉及一种基于抽象语法树的程序理解方法及系统。
技术介绍
本部分的陈述仅仅是提供了与本公开相关的
技术介绍
信息,不必然构成在先技术。程序理解是软件工程中的关键活动,也一直是软件工程领域的研究热点,它在软件开发、复用、测试及维护等任务中,都要发挥着重要作用。程序结构上的复杂性是程序理解的面临的挑战。结构性是程序的重要特性,程序的语义也依赖不同语法结构的程序语句和表达式的组合来体现。例如,程序在语法结构上可以分解为顺序、分支与循环三种基本语法结构的组合,其功能也由这些基本的语法结构的组合来体现。因此要完成程序理解任务,必须对程序的结构信息进行充分的提取和抽象。虽然神经网络模型在程序理解中已经取得了成功,但专利技术人认为,现有的进行程序分解的神经模型在训练时,依赖标注数据集,但是目前程序理解的标注数据集规模都比较小,而深度神经网络模型通常有大量的参数,较小的训练数据集会导致过拟合的出现,这限制了程序理解更好地表现。专利技 ...
【技术保护点】
1.一种基于抽象语法树的程序理解方法,其特征在于,包括:/n获取程序代码;/n将程序代码生成语法树;/n提取每个语法树根结点到终端结点的路径;/n根据屏蔽策略遮蔽路径中部分结点后形成路径表示向量;/n根据屏蔽策略遮蔽程序代码中部分节点后形成词向量序列;/n将路径表示向量和词向量序列输入程序理解模型中完成预训练任务,获取训练好的用于程序理解的程序理解模型。/n
【技术特征摘要】
1.一种基于抽象语法树的程序理解方法,其特征在于,包括:
获取程序代码;
将程序代码生成语法树;
提取每个语法树根结点到终端结点的路径;
根据屏蔽策略遮蔽路径中部分结点后形成路径表示向量;
根据屏蔽策略遮蔽程序代码中部分节点后形成词向量序列;
将路径表示向量和词向量序列输入程序理解模型中完成预训练任务,获取训练好的用于程序理解的程序理解模型。
2.如权利要求1所述的一种基于抽象语法树的程序理解方法,其特征在于,程序理解模型采用Transformer的编解码器结构,去掉解码器端的位置编码,并添加二分类器进行预测,其中编码器读入AST路径的集合并生成AST的表示,解码器利用该表示推测出AST对应的代码片段。
3.如权利要求2所述的一种基于抽象语法树的程序理解方法,其特征在于,对解码器的输出处理为:使用“INDENT”和“DEDENT”表示程序代码的开始和结束;使用“NEWLINE”代表程序代码换行;使用“_”代表程序代码中的空格;删除程序代码中的注释。
4.如权利要求2所述的一种基于抽象语法树的程序理解方法,其特征在于,程序理解模型训练时,训练损失为二分类交叉熵损失与多分类交叉熵之和。
5.如权利要求1所述的一种基于抽象语法树的程序理解方法,其特征在于,每个路径为一个结点序列。
6.如权利要求1所述的一种基于抽象语法树的程序理解方法,其特征在于,根据屏蔽策略遮蔽路径中部分节点,将...
【专利技术属性】
技术研发人员:吕晨,姜雪,高学剑,高曰秀,马正,李季,吕蕾,刘弘,
申请(专利权)人:山东师范大学,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。