[发明专利]一种基于标签图嵌入技术的自动代码生成方法及系统有效
申请号: | 201910898025.0 | 申请日: | 2019-09-23 |
公开(公告)号: | CN110673840B | 公开(公告)日: | 2022-10-11 |
发明(设计)人: | 吕晨;张菡文;王汝芸;高学剑;吕蕾;刘弘 | 申请(专利权)人: | 山东师范大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/33;G06F8/41 |
代理公司: | 济南圣达知识产权代理有限公司 37221 | 代理人: | 李琳 |
地址: | 250000 山*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 标签 嵌入 技术 自动 代码 生成 方法 系统 | ||
本公开提供了一种基于标签图嵌入技术的自动代码生成方法及系统,读取自然语言描述并将其转化为对应语句的二维one‑hot向量序列,读取目标代码中的方法调用序列并将方法转化为初始化的二维one‑hot向量序列,对提取出的方法调用序列进行标签图建模,并合并标签图中邻居节点的同类节点,再利用标签图嵌入方法将合并节点后的图模型中的节点信息转化为代码片段的二维图嵌入向量序列;对上述二维向量序列进行训练得到自然语言描述与目标代码相对应的神经网络参数,得到训练好的序列到序列神经网络模型;根据序列到序列神经网络模型,基于自然语言描述的特征值并进行解码,生成对应目标代码;通过将自然语言描述与目标代码转换为对应的向量序列,并通过深度学习技术训练出一个序列到序列的模型,能够将给定的自然语言描述自动转化为目标代码,从而减轻了程序人员的工作负担并提高软件的开发效率。
技术领域
本公开涉及软件开发与自动化维护技术领域,特别涉及一种基于标签图嵌入技术的自动代码生成方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术,并不必然构成现有技术。
伴随着互联网的发展,特别是移动互联网的大规模普及,程序人员面临越来越多的软件需求。
本公开发明人发现:(1)由于自然语言描述的不同,程序人员在面对相同的软件需求时,往往会书写大量重复的代码,不仅会对程序人员带来繁重的工作量,而且难以提高效率;(2)现存的自动代码生成的方法往往是针对一项特定的任务或需求,这样的方法难以处理程序语言的灵活性以及随机性。
发明内容
为了解决现有技术的不足,本公开提供了一种基于标签图嵌入技术的自动代码生成方法及系统,通过将自然语言描述与目标代码转换为对应的向量序列,并通过深度学习技术训练出一个序列到序列的模型,能够将给定的自然语言描述自动转化为目标代码,从而减轻程序人员的工作负担并提高软件的开发效率。
为了实现上述目的,本公开采用如下技术方案:
第一方面,本公开提供了一种基于标签图嵌入技术的自动代码生成方法,步骤如下:
读取自然语言描述并将其转化为对应语句的二维one-hot向量序列,读取目标代码中的方法调用序列并将方法转化为初始化的二维one-hot向量序列;
对提取出的方法调用序列进行标签图建模,并合并标签图中邻居节点的同类节点,再利用标签图嵌入方法将合并后图模型中的节点信息转化为代码片段的二维图嵌入向量序列;
对自然语言描述的二维one-hot向量序列和目标代码的二维图嵌入向量序列进行训练得到自然语言描述与目标代码相对应的神经网络参数,构建序列到序列神经网络模型;
根据序列到序列神经网络模型,基于自然语言描述的特征值并进行解码,生成对应目标代码。
作为可能的一些实现方式,利用one-hot编码对自然语言描述所形成的语料库进行处理,将语料库所属的每一个词汇映射为一个一维one-hot向量后,对当前读取的自然语言描述片段中包含的词汇向量序列进行合并得到当前读取自然语言描述语句的二维one-hot向量序列。
作为可能的一些实现方式,利用one-hot编码对目标代码中提取出的方法调用序列进行初始化,对方法调用序列所形成的语料库进行编码,将语料库所属的每个方法名称映射为一个一维one-hot向量,合并得到初始化后所有节点对应的二维one-hot向量序列。
作为可能的一些实现方式,所述标签图建模的方法具体为:利用程序依赖分析工具提取目标代码的方法依赖关系,根据方法之间的输入输出关系构造标签图,并将标签图存放在邻接矩阵中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东师范大学,未经山东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910898025.0/2.html,转载请声明来源钻瓜专利网。