[发明专利]一种基于字符的代码补全方法及系统在审
申请号: | 201811223489.3 | 申请日: | 2018-10-19 |
公开(公告)号: | CN109614103A | 公开(公告)日: | 2019-04-12 |
发明(设计)人: | 李戈;郝逸洋;刘洋 | 申请(专利权)人: | 北京硅心科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N3/04;G06N3/08 |
代理公司: | 北京辰权知识产权代理有限公司 11619 | 代理人: | 刘广达 |
地址: | 100190 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 语言模型 源代码 循环神经网络 模型训练 标识符 抽象语法树 编程过程 方法调用 受限制 语料库 预测 准确率 构建 句子 解析 学习 | ||
本发明提供了一种基于字符的代码补全方法及系统,包括:源代码处理步骤,使用抽象语法树和标识符化工具解析源代码;模型训练步骤,使用LSTM模型训练语言模型;预测补全步骤,根据训练过的语言模型补全代码。本发明利用深度学习模型中的循环神经网络(RNN)来构建大规模代码语料库上的语言模型以预测后续的代码。本发明提出了一个受限制的字符级循环神经网络并将其用于在Java语言中补全方法调用。本发明实现了在编程过程中,不仅可以对程序句子进行补全,也可以对单个关键词进行补全。本发明的技术方案具有简单、快速的特点,能够较好地提高代码推荐的准确率和推荐效率。
技术领域
本发明涉及计算机软件工程技术领域,尤其是涉及一种基于字符的代码补全方法及系统。
背景技术
计算机自动生成代码是近年来软件工程的研究热点之一。代码自动生成极大的减少了程序员的工作量,提高了开发效率。随着开源社区的发展,可以通过分析大量的代码从而进行代码生成。代码自动生成的一大困难在于源代码本身具有诸多的约束和限制。近年来,在原有的基于组合优化方法进行程序综合研究的基础上,产生了一些新的基于机器学习技术进行程序生成的方法。
按照所采取的技术及应用场景的不同,可将当前的程序生成方法分成两类:一类为基于程序输入输出结果的程序生成,一类为基于程序代码语言特性的代码生成。基于输入输出结果的程序综合主要基于机器学习模型,利用程序输入输出结果之间的对应关系构造训练数据集,并利用该数据集对机器学习模型进行训练,以达到在输入输出效果上模拟程序行为的目的。该类方法尤以基于深度神经网络的方法为代表。基于程序设计语言模型的程序生成主要利用程序设计语言自身所具有的的统计特性,通过对已有大量程序代码的学习建立相应程序设计语言的机器学习模型,并基于该模型在已有程序代码的基础上通过自动补全的方式生成新的代码。
LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM已经在科技领域有了多种应用。基于LSTM的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等等任务。
中国发明专利申请号201710687197.4,涉及一种基于长短期记忆网络(LSTM)的代码推荐方法,针对现有代码推荐技术普遍存在推荐准确率低、推荐效率低等问题,该发明先将源代码提取成API序列,利用长短期记忆网络构建一个代码推荐模型,学习API调用之间的关系,然后进行代码推荐。并使用了dropout技术防止模型过拟合。同时提出运用ReLu函数代替传统饱和函数,解决梯度消失问题加快模型收敛速度,提高模型性能,充分发挥神经网络的优势。
然而,上述专利实际上进行的是API推荐,与代码级推荐或者自动补全的目标仍有较大差距。不能实现在任意地点对任意代码的推荐。
绝大多数的程序员在进行软件开发的过程中会使用框架或库API来复用代码。但程序员几乎不可能记住所有的API,因为现有的API数量已经很庞大。因此,代码自动补全机制已经成为现代集成开发环境(Integrated Development Environment,IDE)中的不可或缺的组成部分。据统计,代码补全是开发者最常使用的十个指令之一。代码补全机制在程序员输入代码时会尝试补全程序的剩余部分。智能的代码补全可以通过消除编程时的输入错误和推荐合适的API来加快软件开发过程。
发明内容
为解决以上问题,本发明利用深度学习模型中的循环神经网络(RNN)来构建大规模代码语料库上的语言模型以预测后续的代码。本发明提出了一个受限制的字符级循环神经网络并将其用于在Java语言中补全方法调用。
具体的,本发明提供了一种基于字符的代码补全方法,包括:
源代码处理步骤,使用抽象语法树和标识符化工具解析源代码;
模型训练步骤,使用LSTM模型训练语言模型;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京硅心科技有限公司,未经北京硅心科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811223489.3/2.html,转载请声明来源钻瓜专利网。