[发明专利]一种基于程序切片的深度神经网络类型推导方法在审
申请号: | 202210052087.1 | 申请日: | 2022-01-17 |
公开(公告)号: | CN114580641A | 公开(公告)日: | 2022-06-03 |
发明(设计)人: | 冯洋;燕言言;范弘铖;李玉莹;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06N5/04 | 分类号: | G06N5/04;G06N3/04;G06N3/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 江苏省南京市栖霞*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 切片 深度 神经网络 类型 推导 方法 | ||
本发明涉及一种基于程序切片的深度神经网络类型推导方法,首先获取大量包含类型标注信息的动态语言程序项目,提取项目中的类型信息,构建类型信息数据集;然后用编码技术将提取的类型信息数据集嵌入成向量形式;最后用嵌入向量训练深度神经网络模型并使用训练好的模型预测程序变量类型或函数签名。本发明目的在于解决目前存在的动态语言程序类型推导效率低、准确率低的问题,提高动态语言程序在软件工程的生产实践中的可读性、可理解性和可维护性,最终实现提高软件质量保障的目标。
技术领域
本发明属于软件工程中程序分析与类型推导领域,尤其适用于动态类型语言程序的类型推导领域,其目的在于自动化提高类型推导的精度,是一种提高软件可读性、可理解性、可维护性的软件质量保障方法。
背景技术
在动态语言程序中,变量类型、对象属性、类结构等均可以在程序运行时改变,这使得动态语言具有较高的灵活性。然而,动态语言灵活的语法特性使得程序缺少严格的静态检查和约束,使得开发者难以及时发现程序中的缺陷,增加了程序调试与维护的成本。如果能够实现动态语言自动化高精度类型推导,就可以获知丰富的类型信息。类型信息不仅可以提高代码的可读性、可理解性和可维护性,而且可以实现动态语言程序的高准确率静态检查。
以Python为例,目前已经有许多Python类型推导方法,根据方法所使用技术的差异,大致分为以下两大类:第一类是基于传统方法的类型推导,该类方法只关注源程序,从程序上下文如数据流信息获取相关信息推导标识符类型;第二类是基于机器学习的类型推导,该类方法关注程序内部规则的学习,借助机器学习技术预测标识符类型,该类方法主要关注类型数据集构建、模型训练。理论及实证研究表明,上述理论及技术都具有较好的类型推导效果,为开发人员及维护人员提供了一定的帮助。然而,对于动态语言,第一类方法需要将类型标注添加到代码库(标准库和第三方库)中,基于已有的类型代码库,推导程序中标识符类型。当项目规模较大时,人工标注代码库非常耗时。因此,基于传统方法的类型推导技术无法适用于实际中的项目;第二类方法,无需依赖包含类型标注信息的代码库,训练好的类型推导模型适用于任意规模的项目,输出项目中标识符预测的类型向量,省略人工标注工作。但是目前已有的方法大部分是对函数进行类型推导,变量类型推导精度不高;而且现有的方法都没有结合程序切片技术,没有充分利用变量或函数相关的上下文信息,因此,类型预测的准确率较低。
综上所述,本发明提出一种基于程序切片的深度神经网络类型推导方法,该方法可以自动化地对动态语言程序进行类型推导。该方法有以下三方面创新:首先该方法结合了程序切片技术,充分利用了程序中标识符相关信息,从而有效提升类型推导的准确率;其次该方法创新了数据嵌入的过程,先将数据集中文本信息预处理成子字符串的形式,然后对子字符串进行嵌入,有效避免了嵌入过程中OOV(Out Of Vocabulary输入数据不在词汇表)的问题;最后该方法还结合了深度学习技术,不仅可以推导程序中的变量的类型,还可以推导函数签名。因此,该方法可以显著提高类型推导的准确率和推导过程的效率,减少开发人员和维护人员理解和维护项目代码所花费的时间,有效地提高软件研发和软件维护的效率。
发明内容
本发明通过提供一种基于程序切片的深度神经网络类型推导方法,来有效解决目前存在的动态语言类型推导效率低、准确率低的问题,提高动态语言程序在软件工程的生产实践中的可读性、可理解性和可维护性,最终实现提高软件质量保障的目标。
为达成上述目标,本发明提出一种基于程序切片的深度神经网络类型推导方法。该方法首先需要获取大量包含类型标注信息的项目,提取项目中的类型信息,构建类型信息数据集;其次,该方法用编码技术将提取的类型信息数据集嵌入成向量形式;然后,基于嵌入生成的向量,训练深度神经网络模型;最后,使用训练好的模型预测程序变量类型或函数签名。具体而言,该方法包括下列步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210052087.1/2.html,转载请声明来源钻瓜专利网。