[发明专利]一种基于抽象语法树的程序理解方法及系统在审
申请号: | 202110096711.3 | 申请日: | 2021-01-25 |
公开(公告)号: | CN112835585A | 公开(公告)日: | 2021-05-25 |
发明(设计)人: | 吕晨;姜雪;高学剑;高曰秀;马正;李季;吕蕾;刘弘 | 申请(专利权)人: | 山东师范大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N3/04;G06N3/08 |
代理公司: | 济南圣达知识产权代理有限公司 37221 | 代理人: | 董雪 |
地址: | 250014 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 抽象 语法 程序 理解 方法 系统 | ||
本公开公开的一种基于抽象语法树的程序理解方法及系统,包括:获取程序代码;将程序代码生成语法树;提取每个语法树根结点到终端结点的路径;根据屏蔽策略遮蔽路径中结点后形成路径表示向量;根据屏蔽策略遮蔽程序代码中部分节点后形成词向量序列;将路径表示向量集合和词向量序列输入程序理解模型中完成预训练任务,获取训练好的用于程序理解的程序理解模型。充分提取了程序代码中的语法结构信息和语义信息,缓解深度神经网络训练中对标注数据依赖过重的问题,提高程序理解的效率和准确率。
技术领域
本发明涉及程序理解技术领域,尤其涉及一种基于抽象语法树的程序理解方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
程序理解是软件工程中的关键活动,也一直是软件工程领域的研究热点,它在软件开发、复用、测试及维护等任务中,都要发挥着重要作用。
程序结构上的复杂性是程序理解的面临的挑战。结构性是程序的重要特性,程序的语义也依赖不同语法结构的程序语句和表达式的组合来体现。例如,程序在语法结构上可以分解为顺序、分支与循环三种基本语法结构的组合,其功能也由这些基本的语法结构的组合来体现。因此要完成程序理解任务,必须对程序的结构信息进行充分的提取和抽象。
虽然神经网络模型在程序理解中已经取得了成功,但发明人认为,现有的进行程序分解的神经模型在训练时,依赖标注数据集,但是目前程序理解的标注数据集规模都比较小,而深度神经网络模型通常有大量的参数,较小的训练数据集会导致过拟合的出现,这限制了程序理解更好地表现。
发明内容
本公开为了解决上述问题,提出了一种基于抽象语法树的程序理解方法及系统,充分提取了程序代码中的语法结构信息和语义信息,缓解深度神经网络训练中对标注数据依赖过重的问题,提高程序理解的效率和准确率。
为实现上述目的,本公开采用如下技术方案:
第一方面,提出了一种基于抽象语法树的程序理解方法,包括:
获取程序代码;
将程序代码生成语法树;
提取每个语法树根结点到终端结点的路径;
根据屏蔽策略遮蔽路径中部分结点后形成路径表示向量;
根据屏蔽策略遮蔽程序代码中部分节点后形成词向量序列;
将路径表示向量和词向量序列输入程序理解模型中完成预训练任务,获取训练好的用于程序理解的程序理解模型。
第二方面,提出了一种基于抽象语法树的程序理解系统,包括:
程序代码获取模块,用于获取程序代码;
语法树生成模块,用于将程序代码生成语法树;
路径提取模块,用于提取每个语法树根结点到终端结点的路径;
路径表示向量生成模块,用于根据屏蔽策略遮蔽路径中部分结点后形成路径表示向量;
词向量序列生成模块,用于根据屏蔽策略遮蔽程序代码中部分节点后形成词向量序列;
模型训练模块,用于将路径表示向量和词向量序列输入程序理解模型中完成预训练任务,获取训练好的用于程序理解的程序理解模型。
第三方面,提出了一种电子设备,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成一种基于抽象语法树的程序理解方法所述的步骤。
第四方面,提出了一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成一种基于抽象语法树的程序理解方法所述的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东师范大学,未经山东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110096711.3/2.html,转载请声明来源钻瓜专利网。