[发明专利]一种软件程序的自动生成方法有效
申请号: | 201810611516.8 | 申请日: | 2018-06-14 |
公开(公告)号: | CN108733359B | 公开(公告)日: | 2020-12-25 |
发明(设计)人: | 王旭;孙海龙;田言飞;郭春波;刘旭东 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G06F8/20 | 分类号: | G06F8/20;G06F8/30 |
代理公司: | 北京中创阳光知识产权代理有限责任公司 11003 | 代理人: | 尹振启 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 软件 程序 自动 生成 方法 | ||
1.一种软件程序的自动生成方法,其生成过程经过包括数据处理模块、用例生成模型模块和预测生成模块,所述数据处理模块主要负责从开源代码库中抽取模型所需要的训练数据,形成自然语言注释,API使用模式的数据集;用例生成模型模块中具体的根据自然语言描述生成API使用模式的模型,根据API之间控制流结构和他们之间的差异性生成了MCTree Decoder,并评估模型的效果;预测生成模块将训练好的模型来进行根据描述功能的自然语言生成相关的API Tree,进而生成API使用模式;所述数据处理模块中从开源平台上收集Java项目,将每个Java文件解析成抽象语法树,并从语法树中获得相应的自然语言描述和API使用模式,所述解析过程为从Java方法体中抽取出Java JDK API和控制流结构作为相应的API使用模式,在所述方法体里面,忽略非JDK相关的API;对于发生API调用的部分,首先获得作为参数的API;对于所述控制流结构,从其中代码块中抽取API使用模式,然后再按照原顺序将控制流结构和包含的API使用模式结合在一起;
所述用例生成模型模块中具有编码-解码模型用于由描述功能的自然语言生成API使用模式,在所述编码部分基于LSTM单元的一种循环神经网络,通过循环的处理词来将自然语言序列编码到一个固定大小的自然语言向量中,所述解码部分用于在自然语言向量的基础上生成API-MCTree,所述API-MCTree中除根之外的叶子节点表示相关的控制流结构,叶子节点表示API和特殊符号,进而得到API使用模式;在所述用例生成模型模块中加入注意力机制,生成API-MCTree包括使用从编码部分获得的内容向量和所述编码中间获得的语义向量;在所述解码部分考虑API使用模式的树形结构和不同控制流结构之间的差异性,首先定义多种非终结符,并定义第一层起始符和层终结符,在每一层的生成过程中,不断生成相应的终结符和非终结符,直到生成层终结符表示该层的生成过程结束,每当遇到非终结符,表示该处有一个控制结构,则进入到下一层进行解析继续生成,生成该控制结构下的内容,当不再产生新的非终结符而且每一层的生成过程均结束,则生成层终结符,API使用模式模型生成的过程结束;模型训练的目标是最大化条件log似然函数L(θ)=∑(x,y)∈D-logp(y|x),其中,D是训练集合,x和y分别是其中描述功能的自然语言和对应的API使用模式,θ是模型中的参数集合,p(y|x)是在给定自然语言描述x情况下,模型预测生成API使用模式y的概率,分层级迭代生成API-MCTree,如果生成的是一个非终结符,则表示一个新的子树会建立生成,得到的API-MCTree最后通过深度优先遍历,得到最终的API使用模式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810611516.8/1.html,转载请声明来源钻瓜专利网。