全网唯一标准王
(19)中华 人民共和国 国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202111674613.X (22)申请日 2021.12.31 (71)申请人 北京航空航天大 学 地址 100191 北京市海淀区学院路37号 (72)发明人 唐宇 王旭 严灏 刘旭东  (74)专利代理 机构 北京中创阳光知识产权代理 有限责任公司 1 1003 代理人 尹振启 (51)Int.Cl. G06F 8/72(2018.01) G06F 8/30(2018.01) G06F 8/41(2018.01) G06K 9/62(2022.01) G06N 3/08(2006.01) (54)发明名称 一种代码补全方法、 模型和工具 (57)摘要 本公开的实施例涉及一种代码补全方法, 包 括: 从真实代码仓库获取真实项目并且基于真实 项目的项目源码进行数据集分类, 同时通过选择 工作中使用的真实项目集合构建代码补全数据 集; 构建基于语义的代码补全模型, 其包括搭建 带有注意力机制的序列到序列神经网络, 通过 BPE分词算法进行源代码分词, 通过双向长短时 记忆神经网络进行上下文依 赖学习, 利用注意力 机制进行文本权重的学习, 并且根据不同预测场 景进行基于序列到序列的神经网络模型用于多 任务的适配; 构建基于语法的代码补全模型; 以 及重排序预测结果得到目标预测文本和排列顺 序。 通过上述布置, 使得基于神经网络的技术中 的低频词被更加有效地预测, 并且使得神经网络 预测的结果更加符合语法。 权利要求书2页 说明书7页 附图1页 CN 114327609 A 2022.04.12 CN 114327609 A 1.一种代码补全方法, 其特 征在于, 包括: 从真实代码仓库获取真实项目并且基于所述真实项目的项目源码进行数据集分类, 同 时通过选择工作中使用的所述真实项目集 合构建代码补全数据集; 构建基于语义的代码补全模型, 其包括基于循环神经网络搭建带有注意力 机制的序列 到序列神经网络, 通过BP E分词算法进 行源代码分词, 通过双向长 短时记忆神经网络进 行上 下文依赖的学习, 利用注意力机制进行文本权重的学习, 并且根据不同预测场景进行基于 所述序列到序列的神经网络模型用于多任务的适配; 构建基于语法的代码补全模型, 其包括使用抽象语法树代码推荐、 Template模板代码 推荐、 统计代码推荐和子词补全进行; 以及 将神经网络模型预测得到的结果优选地进行概率获取, 然后将基于语法的代码补全模 型预测得到的结果融合该概率分布得到重排序的语法预测结果, 最 终与基于语义的代码补 全模型预测得到的结果进行融合得到目标 预测文本和排列顺序。 2.根据权利要求1所述的方法, 其特征在于, 基于所述真实项目的项目源码进行数据集 分类包括将数据集分为训练集、 验证集和 测试集中的一种或多种。 3.根据权利要求1所述的方法, 其特 征在于, 构建基于语义的代码补全模型包括对构建出的所述基于语义的代码补全模型进行验 证; 以及 重排序预测结果得到目标预测文本和排列顺序包括通过对得到的预测文本和排列顺 序进行分析并且 验证。 4.根据权利要求1所述的方法, 其特征在于, 还包括设计和实现代码补全工具, 所述代 码补全工具包括数据采集模块、 数据传输模块、 数据处理模块和可视化补全展示模块, 其 中: 所述数据采集模块被 配置为采集当前开发人员编写代码段且 对文本进行 预处理; 所述数据传输模块被 配置为将文本传输 至服务端并从服 务端接收响应数据; 所述数据处理模块被配置为在服务端使用代码补全模型进行补全文本预测得到代码 补全结果; 以及 所述可视化补全展示模块被配置为进行语法语义融合的代码补全结果概率重排序显 示以供所述开发人员进行选择。 5.根据权利要求1所述的方法, 其特征在于, 所述BPE分词算法用于代码标识符的分割 以便低频词的预测。 6.一种代码补全 模型, 其特 征在于, 包括: 基于语义的代码补全模型, 所述基于语义的代码补全模型包括编码器和解码器, 所述 编码器包括双向长短时记忆架构, 以对代码标识符信息进行语义的捕获, 所述解码器包括 将编码器阶段处理的最终的所述代码标识符向量输出和隐藏层状态信息作为生成的代码 序列的第一个代码标识符向量, 以逐个生成代码标识符向量的方式来 生成代码补全语句; 基于语法的代码补全模型, 包括抽象语法树依赖代码推荐模块、 Template模板代码推 荐模块、 统计代码推荐模块和代码子词补全推荐模块, 所述抽象语法树依赖代码推荐模块 用于对项目中打开的J ava文件提供抽象语法树视图, 所述Template模板代码推荐模块用于 固定模板信息的代码补 全, 所述统计代码推荐模块用于通过提供的类型进 行基于频率统计权 利 要 求 书 1/2 页 2 CN 114327609 A 2方式的代码补全提示, 所述代码子词补全推荐模块用于对代码标识符进行代码补全预测; 以及 语法语义融合的代码补全模型, 所述语法语义融合的代码补全模型被配置为用于得到 符合语法和语义的代码补全结果。 7.根据权利 要求6所述的模型, 其特征在于, 所述基于语义的代码补全模型包括Global   Attention注意力机制。 8.根据权利要求6所述的模型, 其特征在于, 在所述基于语义的代码补全模型中, 所述 解码器将所述编码器阶段处理的最终的定长代码标识符向量输出和隐藏层状态信息作为 生成的代码序列的第一个代码标识符向量, 以逐个生成代码标识符向量的方式来生成代码 补全语句, 所述解码器根据代码标识符词表逐步生成对应的索引, 直到遇到预先定义的表 示代码补全语句已预测完成的终止符。 9.根据权利要求6所述的模型, 其特征在于, 所述语法语义融合的代码补全模型优选地 被配置为选取当前神经网络语言模型输出的概率分布值, 其中包括<Subtoken , Probability>组, 其中Subtoken表示预测到的代码标识符子词, 并且Probability表示该代 码标识符子词在神经网络语言模型 下的预测概 率。 10.根据权利要求9所述的模型, 其特征在于, 所述语法语义融合的代码补全模型特别 地还被配置为: 对基于语法的代码补全结果进行BPE算法分词; 对基于语义的神经网络代码补全预测结果进行概率排序, 并对得到的分词后的结果进 行<Subto ken,Probabi lity>组构造; 将<Subtoken,Probability>组映射至经所述BPE算法分词后的结果, 通过匹配前缀进 行代码补全代码标识符查询, 并且保持原有排列顺序; 以及 对新的匹配结果概率重排序, 最终结合Token概率分布和行概率分布得到语法语义融 合的代码补全结果。 11.一种代码补全工具, 其特征在于, 包括根据权利要求6至10中任一项所述的代码补 全模型, 所述代码补全 模型被配置为在代码补全过程中执 行代码补全。 12.根据权利要求11所述的代码补全工具, 其特征在于, 还包括数据采集模块、 数据传 输模块、 数据处 理模块和可视化补全展示模块, 其中: 所述数据采集模块被 配置为采集当前开发人员编写代码段且 对文本进行 预处理; 所述数据传输模块被 配置为将文本传输 至服务端并从服 务端接收响应数据; 所述数据处理模块被配置为在服务端使用代码补全模型进行补全文本预测得到代码 补全结果; 以及 所述可视化补全展示模块被配置为进行语法语义融合的代码补全结果概率重排序显 示以供所述开发人员进行选择。权 利 要 求 书 2/2 页 3 CN 114327609 A 3

.PDF文档 专利 一种代码补全方法、模型和工具

文档预览
中文文档 11 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种代码补全方法、模型和工具 第 1 页 专利 一种代码补全方法、模型和工具 第 2 页 专利 一种代码补全方法、模型和工具 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 22:42:00上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。