[发明专利]一种基于程序切片的深度神经网络类型推导方法在审
申请号: | 202210052087.1 | 申请日: | 2022-01-17 |
公开(公告)号: | CN114580641A | 公开(公告)日: | 2022-06-03 |
发明(设计)人: | 冯洋;燕言言;范弘铖;李玉莹;徐宝文 | 申请(专利权)人: | 南京大学 |
主分类号: | G06N5/04 | 分类号: | G06N5/04;G06N3/04;G06N3/08 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 210023 江苏省南京市栖霞*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 程序 切片 深度 神经网络 类型 推导 方法 | ||
1.一种基于程序切片的深度神经网络类型推导方法,其特征在于,为了推导动态语言程序类型,首先需要获取大量包含类型标注信息的项目,提取项目中的类型信息,构建类型信息数据集;其次,该方法用编码技术将提取的类型信息数据集嵌入成向量形式;然后,基于嵌入生成的向量,训练深度神经网络模型;最后,使用训练好的模型预测程序变量类型或函数签名。具体而言,该方法包括下列步骤:
1)类型信息数据集构建。首先,从github等开源代码托管平台上爬取大量包含类型标注信息的项目,对于项目中不含类型标注信息的变量或函数,使用传统类型推导工具推导其类型信息,以便构建大规模的类型信息数据集。然后遍历程序AST(Abstract SyntaxTree抽象语法树),提取变量或函数的名称、类型、位置信息及其程序切片信息,构建类型信息数据集DataSetType。
2)类型信息嵌入。先对类型信息数据集DataSetType中变量或函数的名称和程序切片进行BPE(Byte Pair Embedding,字节对编码)编码预处理,将文本信息处理成子字符串的形式。然后,将预处理生成的子字符串输入Word2vec模型中进行嵌入,实现文本信息向深度神经网络学习所需的输入向量形式Vecunioin转换。
3)深度神经网络模型训练。将上步骤中嵌入得到的变量或函数及其程序切片的联合向量Vecunioin,结合one-hot(独热码)编码的类型向量作为输入数据Vecinput训练深度神经网络模型。训练过程中需要根据训练结果调整模型的超参数或者改变模型结构以便优化模型,提升模型的类型预测效果,最终得到类型推导模型MOptimal。
4)类型推导。模型训练好以后,使用同样的嵌入方法将要预测的变量或函数及其程序切片的联合向量Vecpred输入训练好的类型推导模型MOptimal中进行预测,预测结果是变量类型或函数参数和返回值类型的向量Vectype。
2.根据权利要求1所述的基于程序切片的深度神经网络类型推导方法,其特征在于,在步骤1)中,构建类型信息数据集;获取大量含有类型标注信息的开源项目,然后遍历程序AST,提取变量或函数相关的类型信息,构建类型信息数据集。
3.根据权利要求1所述的基于程序切片的深度神经网络类型推导方法,其特征在于,在步骤2)中,嵌入类型信息生成深度神经网络向量所需向量;先用BPE将类型信息数据集中的文本信息预处理成子字符串的形式,然后将子字符串输入到Word2vec模型中进行嵌入,以便将文本信息转换为深度神经网络模型所需的向量形式。
4.根据权利要求1所述的基于程序切片的深度神经网络类型推导方法,其特征在于,在步骤3)中,训练深度神经网络模型;嵌入得到的变量或函数及其程序切片的联合向量结合one-hot(独热码)编码的类型向量作为输入数据,对深度神经网络模型进行训练和优化,得到最终训练好的类型推导模型。
5.根据权利要求1所述的基于程序切片的深度神经网络类型推导方法,其特征在于,在步骤4)中,类型推导动态程序变量类型以及函数签名;使用类型信息嵌入的方法将要预测的变量或函数及其程序切片表示为联合向量,将联合向量输入到训练好的类型推导模型中进行预测,预测结果即为变量类型或函数参数以及返回值类型的向量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210052087.1/1.html,转载请声明来源钻瓜专利网。