预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN113761163A(43)申请公布日2021.12.07(21)申请号202110946937.8G06F9/455(2006.01)(22)申请日2021.08.18G06N3/04(2006.01)G06N3/08(2006.01)(71)申请人浙江大学地址310058浙江省杭州市西湖区余杭塘路866号(72)发明人刘超夏鑫李博奥张洋张昕东杨小虎王新宇(74)专利代理机构杭州求是专利事务所有限公司33200代理人邱启旺(51)Int.Cl.G06F16/332(2019.01)G06F40/284(2020.01)G06F40/30(2020.01)G06F8/41(2018.01)权利要求书2页说明书7页附图2页(54)发明名称基于代码结构语义信息的深度代码搜索方法、系统及装置(57)摘要本发明公开了一种基于代码结构语义信息的深度代码搜索方法、系统及装置,包括从目标软件项目中提取代码文件中的方法级代码和相关注释,形成数据集;训练分词模型生成代码搜索数据集;预处理代码搜索数据集,将方法级代码解析为抽象语法树,遍历抽象语法树并提取API序列;构建深度代码搜索模型,包括代码结构信息编码模块、代码语义信息编码模块、信息融合模块、自然语言编码模块;使用预处理后的数据集,优化深度代码搜索模型;利用深度代码搜索模型,从代码搜索数据集中获得与自然语言查询对应的方法级代码。本发明的方法能够有效提升代码搜索模型对于代码结构语义信息以及自然语言描述文本的理解能力,提高代码搜索系统的搜索效果与性能。CN113761163ACN113761163A权利要求书1/2页1.一种基于代码结构语义信息的深度代码搜索方法,其特征在于,包括:(1)获取软件项目中的代码数据,并利用分词模型生成代码搜索数据集。(2)对所述代码搜索数据进行预处理。(3)利用预处理后的数据集对深度代码搜索模型进行优化与测试。(4)基于深度代码搜索模型的实施代码搜索。2.如权利要求1所述基于代码结构语义信息的深度代码搜索方法,其特征在于,步骤(1)具体为:确定Java软件项目范围,从项目中的Java文件提取Java方法和相关注释;将解析出的数据集用于训练BPE分词模型;利用训练后的分词模型对数据集中的数据进行分词处理,形成代码搜索数据集。3.如权利要求2所述基于代码结构语义信息的深度代码搜索方法,其特征在于,步骤(2)中,数据预处理,包括:截取Java方法的第一段注释作为自然语言注释,省略参数的注释和返回值注释;去掉不包含任何API的Java方法以及重复的Java方法;利用代码解析工具Javaparser将Java方法转化为抽象语法树,采用深度有限遍历策略从抽象语法树中提取API序列,数据集中预处理后Java方法包括抽象语法树和API序列两部分;将预处理后的数据集划分为训练集、验证集以及测试集,用于步骤(3)优化和测试深度代码搜索模型。4.如权利要求3所述基于代码结构语义信息的深度代码搜索方法,其特征在于,步骤(3)中:深度代码搜索模型利用三个基于注意力机制的长短期记忆力网络,包括网络构建代码结构信息编码模块、代码语义信息编码模块以及自然语言编码模块。为了优化三个长短期记忆力网络中的参数,以上三个模块分别以步骤(2)中训练数据中Java方法的抽象语法树、API序列以及相关注释作为输入;然后构建信息融合模块,融合代码结构信息编码模块和代码语义信息编码模块输出的向量;最后构建相似度匹配模块,计算融合向量与自然语言编码模块输出向量之间的余弦相似度,计算深度代码搜索模型的损失函数,优化三个编码模块中的参数。优化过程的停止条件为:优化迭代次数超过训练集中的Java方法总数,或模型在验证集上的效果收敛。5.如权利要求4所述基于代码结构语义信息的深度代码搜索方法,其特征在于,步骤(4)具体为:以自然语言查询和Java方法为输入,计算两者之间的相似度,根据相似度大小完成对Java方法集合的重排序,输出最终排序后的Java方法。6.一种基于代码结构语义信息的深度代码搜索系统,其特征在于,包括离线端、在线端。离线端,负责解析Java文件、构建结构化数据集以及训练深度代码搜索模型等功能。在线端,用于与用户交互,为用户提供网页搜索入口和搜索结果呈现,记录用户查看搜索结果的行为,用于统计分析和后续进一步优化深度代码搜索模型。7.如权利要求6所述基于代码结构语义信息的深度代码搜索系统,其特征在于,离线端包括数据解析模块、数据存储模块、模型训练模块。数据解析模块,从Java文件中提取Java方法及其对应的注释,将Java方法解析为抽象语法树,根据抽象语法树的深度进行剪枝,利用基于正则表达式的方法从解析的抽象语法树中提取Java方法的方