一种代码推荐方法、装置及系统制造方法及图纸

技术编号:29925203 阅读:23 留言:0更新日期:2021-09-04 18:44
本发明专利技术公开了一种代码推荐方法、装置及系统,属于计算机技术领域。所述方法包括:获取代码推荐请求,所述代码推荐请求中包含搜索代码;解析所述搜索代码获得语法树;根据所述语法树生成所述搜索代码的特征向量,所述搜索代码的特征向量至少表示所述搜索代码的结构特征;将所述搜索代码的特征向量与代码特征库中预存代码的特征向量匹配,获得推荐代码。本发明专利技术通过将搜索代码解析成语法树,使得代码推荐工具可以适用于任何拥有语法结构的开发语言,适用性较好。适用性较好。适用性较好。

【技术实现步骤摘要】
一种代码推荐方法、装置及系统


[0001]本专利技术涉及计算机
,特别涉及一种代码推荐方法、装置及系统。

技术介绍

[0002]代码推荐工具作为软件开发辅助工具的一种,主要用于根据用户输入的代码片段或者一行代码即可从代码特征库中匹配到最优的开源代码推荐给用户。目前,由于代码的结构多样、代码特征库量级大,现有的代码推荐工具均存在匹配缓慢、语料库扩展性差以及对不同代码结构类型适用性差的问题,进而导致代码推荐效率低、推荐的有效性不高以及需要更换不同的代码推荐工具的缺陷。

技术实现思路

[0003]为了解决现有技术的问题,本专利技术实施例提供了一种代码推荐方法、装置及系统。所述技术方案如下:
[0004]第一方面,提供了一种代码推荐方法,所述方法包括:
[0005]获取代码推荐请求,所述代码推荐请求中包含搜索代码;
[0006]解析所述搜索代码获得语法树;
[0007]根据所述语法树生成所述搜索代码的特征向量,所述搜索代码的特征向量至少表示所述搜索代码的结构特征;
[0008]将所述搜索代码的特征向量与代码特征库中预存代码的特征向量匹配,获得推荐代码。
[0009]进一步地,所述根据所述语法树生成所述搜索代码的特征向量,包括:
[0010]根据所述语法树的结构构建所述搜索代码的稀疏矩阵;
[0011]根据所述稀疏矩阵生成所述搜索代码的稀疏向量,所述稀疏向量为所述搜索代码的特征向量。
[0012]进一步地,所述根据所述搜索代码的特征向量与代码特征库中预存代码的特征向量匹配,获得推荐代码,包括:
[0013]将所述搜索代码的特征向量与所述代码特征库中各所述预存代码的特征向量进行点积计算,获得点积值;
[0014]根据所述点积值筛选所述预存代码,获得所述推荐代码。
[0015]进一步地,所述根据所述点积值筛选所述预存代码,获得所述推荐代码,包括:
[0016]将所述点积值与第一点积值条件对比,将满足所述第一点积值条件的所述预存代码作为候选代码;
[0017]若存在两个及以上所述候选代码,则计算每两个所述候选代码的相似度,根据所述候选代码的相似度筛选所述候选代码,获得所述推荐代码。
[0018]进一步地,所述根据所述候选代码的相似度筛选所述候选代码,获得所述推荐代码,包括:
[0019]将所述候选代码的相似度与第一相似度条件对比,若满足,则在两个所述候选代码中保留所述点积值高的所述候选代码,并对所有保留的所述候选代码按照所述点积值进行排序,将满足第一排序条件的所述候选代码作为所述推荐代码。
[0020]进一步地,所述代码特征库由至少两个分片数据组成,各分片数据被配置在不同服务器中,各所述服务器分别根据其存储的所述代码特征库获得所述推荐代码。
[0021]进一步地,所述方法还包括:
[0022]汇总各所述服务器获得的推荐代码,计算每两个所述推荐代码的相似度;
[0023]将所述推荐代码的相似度与第二相似度条件对比,若满足,则在两个所述推荐代码中保留所述点积值高的所述推荐代码,并对保留的所述推荐代码按照所述点积值排序,将满足第二排序条件的所述推荐代码作为综合推荐代码。
[0024]进一步地,所述方法还包括:
[0025]对比各所述服务器存储的所述代码特征库的大小;
[0026]对存储所述代码特征库最小的所述服务器中的所述代码特征库进行增量更新。
[0027]第二方面,提供了一种代码推荐装置,所述装置包括:
[0028]通信模块,用于获取代码推荐请求,所述代码推荐请求中包含搜索代码;
[0029]解析模块,用于解析所述搜索代码获得语法树;
[0030]向量生成模块,用于根据所述语法树生成所述搜索代码的特征向量,所述搜索代码的特征向量至少表示所述搜索代码的结构特征;
[0031]推荐代码获取模块,用于将所述搜索代码的特征向量与代码特征库中预存代码的特征向量匹配,获得推荐代码。
[0032]进一步地,向量生成模块,包括:
[0033]矩阵构建模块,用于根据语法树的结构构建搜索代码的稀疏矩阵;
[0034]特征向量获取模块,用于根据稀疏矩阵生成搜索代码的稀疏向量,稀疏向量为搜索代码的特征向量。
[0035]进一步地,推荐代码获取模块,包括:
[0036]点积计算模块,用于将搜索代码的特征向量与代码特征库中各预存代码的特征向量进行点积计算,获得点积值;
[0037]筛选模块,用于根据点积值筛选代码特征库中的预存代码,获得推荐代码。
[0038]进一步地,筛选模块,包括:
[0039]候选代码确定模块,用于将点积值与第一点积值条件对比,将满足第一点积值条件的预存代码作为候选代码;
[0040]第一相似度计算模块,用于当存在两个及以上候选代码时,计算每两个候选代码的相似度;
[0041]第一筛选子模块,用于根据候选代码的相似度筛选候选代码获得推荐代码。
[0042]进一步地,第一筛选子模块,具体用于:
[0043]将候选代码的相似度与第一相似度条件对比,若满足第一相似度条件,则在两个候选代码中保留点积值高的候选代码,并对所有保留的候选代码按照点积值排序,将满足第一排序条件的候选代码作为推荐代码。
[0044]进一步地,代码特征库为预先按照代码的特征值生成的至少两个分片数据,分片
数据各自分别被配置在上述服务器中,各服务器分别根据其存储的代码特征库获得推荐代码。
[0045]进一步地,上述装置还包括:综合推荐代码获取模块,包括:
[0046]第二相似度计算模块,用于汇总各服务器获得的推荐代码,计算每两个推荐代码的相似度;
[0047]第二筛选子模块,用于将推荐代码的相似度与第二相似度条件对比,若满足第二相似度条件,则在两个推荐代码中保留点积值高的推荐代码,并对保留的推荐代码按照点积值排序,将满足第二排序条件的推荐代码作为综合推荐代码。
[0048]进一步地,上述装置还包括:
[0049]更新模块,用于对比各服务器存储的代码特征库的大小;以及,
[0050]对存储代码特征库最小的服务器中的代码特征库进行增量更新。
[0051]第三方面,提供了一种计算机系统,包括:
[0052]一个或多个处理器;以及
[0053]与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行上述第一方面任一项所述的方法。
[0054]本专利技术实施例提供的技术方案带来的有益效果是:
[0055]1、本专利技术公开的技术方案通过将搜索代码解析成语法树,使得代码推荐工具可以适用于任何拥有语法结构的开发语言,适用性较好;
[0056]2、本专利技术公开的技术方案通过搜索代码的特征向量与代码特征库中代码的特征向量的点积值筛选代码特征本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码推荐方法,其特征在于,包括:获取代码推荐请求,所述代码推荐请求中包含搜索代码;解析所述搜索代码获得语法树;根据所述语法树生成所述搜索代码的特征向量,所述搜索代码的特征向量至少表示所述搜索代码的结构特征;将所述搜索代码的特征向量与代码特征库中预存代码的特征向量匹配,获得推荐代码。2.如权利要求1所述的方法,其特征在于,所述根据所述语法树生成所述搜索代码的特征向量,包括:根据所述语法树的结构构建所述搜索代码的稀疏矩阵;根据所述稀疏矩阵生成所述搜索代码的稀疏向量,所述稀疏向量为所述搜索代码的特征向量。3.如权利要求1所述的方法,其特征在于,所述根据所述搜索代码的特征向量与代码特征库中预存代码的特征向量匹配,获得推荐代码,包括:将所述搜索代码的特征向量与所述代码特征库中各所述预存代码的特征向量进行点积计算,获得点积值;根据所述点积值筛选所述预存代码,获得所述推荐代码。4.如权利要求3所述的方法,其特征在于,所述根据所述点积值筛选所述预存代码,获得所述推荐代码,包括:将所述点积值与第一点积值条件对比,将满足所述第一点积值条件的所述预存代码作为候选代码;若存在两个及以上所述候选代码,则计算每两个所述候选代码的相似度,根据所述候选代码的相似度筛选所述候选代码,获得所述推荐代码。5.如权利要求4所述的方法,其特征在于,所述根据所述候选代码的相似度筛选所述候选代码,获得所述推荐代码,包括:将所述候选代码的相似度与第一相似度条件对比,若满足,则在两个所述候选代码中保留所述点积值高的所述候选代码,并对所有保留的所述候选代码按照...

【专利技术属性】
技术研发人员:鲁敏王斯开耿志亮孙捷
申请(专利权)人:苏宁金融科技南京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1