掌桥专利:专业的专利平台
掌桥专利
首页

一种协同过滤并权衡数据信息的API推荐方法与装置

文献发布时间:2023-06-19 09:41:38


一种协同过滤并权衡数据信息的API推荐方法与装置

技术领域

本发明涉及代码推荐领域,具体涉及一种考虑代码调用关系的协同过滤并权衡数据信息的API推荐方法与装置。

背景技术

API是指应用程序编程接口,能够为程序员快速复用已有的库中的函数功能,简化代码的开发过程。而在使用API的过程中,庞大的API数目往往令程序员手足无措,就算在库中已有程序员所需实现功能的接口,程序员往往不知道这个接口的名称而不得不从新自己写一遍实现。而基于调用关系的API推荐技术能够根据已经开发代码的上下文信息进行判断,为用户推荐合适的API。

代码间的调用关系指的是指的是整个项目中对各个声明的调用以及声明下队各个接口的调用。如下面的代码所示:

其中这一整个findByIdentifier函数就可以看做为一个声明,而许多个这样声明则组成了我们的整个开发项目,而在这声明中使用了许多个API接口,例如log.severe、entityManager.getCriteriaBuilder、log.find等等。我们的目的就是要根据已经开发的一部分代码,根据上下文间调用的关系来推荐接下来开发者可能需要用到的API。

由粗粒度到细粒度API推荐包括以下几个步骤:

(1)对项目间的相似度计算

(2)对声明间的相似度计算

(3)对候选列表API的协同过滤评分

在对项目间的相似计算中往往会因为部分调用的影响权值过大而对整体的相似性进行了误判造成推荐的不准确,而声明间的相似度计算往往采取推荐固定k个相似声明,而往往实际情况中与各个声明较为相似的声明数量不是固定的,固定选取k个会造成对相似度较高的声明的遗漏或将相似度极地的声明也选作为相似声明。而在最后对API的推荐评分中,权重的固定没有考虑到相似声明与推荐API具体数量的关系,这往往会造成低效的推荐。

发明内容

发明目的:针对现有技术的不足,本发明的目的在于提供一种协同过滤并权衡数据信息的API推荐方法与装置,提高推荐的准确性,使用户能够更好的使用推荐的API。

技术方案:为实现上述发明目的,本发明采用如下技术方案:

一种协同过滤并权衡数据信息的API推荐方法,包括如下步骤:

(1)获取当前开发项目的所有调用关系信息,包括项目中已开发部分的声明和声明中调用的API接口;

(2)将代码数据库中已有的项目的所有API接口编号,计算代码数据库中已有的项目与当前开发项目的相似度,数据库中相似度前三的项目作为候选集,再获取相似项目中的所有声明,计算这些声明与当前开发的声明的相似度,进行重排序,最后获取相似度超过阈值μ的声明,再由相似声明集合中的所有API接口作为候选列表;

(3)根据候选列表中的所有API接口,计算近邻因子权重和API推荐评分并进行排序,为用户推荐所需接口。

作为优先,所述方法根据如下数据处理步骤生成代码数据库:

从Java应用程序项目中抽取Java文件,解析每个Java文件,提取其中的函数名与Java文件间的调用关系,并且提取函数中调用其他函数的函数名,并且保留层次的API调用关系,并进行格式化存储在数据库中;

收集格式化API的结构信息,包括:项目名称,项目调用的声明名称,声明调用的API接口名称。

作为优先,所述方法根据如下公式计算项目间的相似度:

其中,p表示当前正在开发的项目,q表示计算与当前项目相似度的代码数据库中的项目,n表示代码数据库中所有API接口的种类数,其中φ

作为优先,所述方法根据如下公式计算声明间的相似度:

其中,d为当前正在开发的声明,e为相似项目中待计算相似度的声明,F()表示声明中所有调用接口的集合。

作为优先,所述方法根据如下数据处理步骤计算API的评分:

topsim(d)={e|sim(d,e)>μ}

根据如下公式计算候选集中的API评分:

其中,R

基于相同的发明构思,本发明提供的一种协同过滤并权衡数据信息的API推荐装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述计算机程序被加载至处理器时实现所述的一种协同过滤并权衡数据信息的API推荐方法。

有益效果:本发明在进行代码推荐时考虑使用了代码之间的调用关系信息,并且使用到了BM25与改进的KNN进行优化,BM25使用在查找相似项目的过程中相较于传统的TF-IDF使得单个调用对相似度影响控制在一定范围内从而能得到一个更加兼顾全体影响而非单个影响的相似度值,并且在选取相似声明的过程中使用了阈值进行控制而非传统的KNN,增加了相似选取的准确度,引入的近邻因子λ则根据相似声明与调用数量上的关系,协调了协调过滤推荐时声明与调用对最后评分结果的影响,使得推荐的API与当前正在开发项目之间的关联度更高,用户能够获得更好的推荐效果。

附图说明

图1为本发明实施例的方法流程图。

具体实施方式

下面结合附图和具体实施例对本发明做进一步说明。

如图1所示,本发明实施例公开的一种协同过滤并权衡数据信息的API推荐方法主要涉及两个阶段,数据处理阶段和推荐阶段,其核心在于推荐阶段。

在数据处理阶段,输入是从开源软件托管平台Github收集的开源Java应用程序项目,输出是代码数据库中我们筛选出的几个可能开发者要用到的API调用,该代码数据库的构建是:从Java应用程序项目中抽取Java文件,解析每个Java文件,提取其中的函数名与Java文件间的调用关系,并且提取函数中调用其他函数的函数名,并且保留层次的API调用关系,并进行格式化存储在数据库中;收集格式化API的结构信息,包括:项目名称,项目调用的声明名称,声明调用的API接口名称。其具体步骤如下:

1)从Java应用程序项目中抽取Java文件并将它们存储在存储库中。

2)解析每个Java文件,抽取其中的函数名与API接口名称。

3)格式化的结构信息,其中包括:该项目的项目名,项目下属的声明名称,以及声明中调用的API接口名称。形如:

com/sun/activation/registries/MimeTypeFile/parseEntry(java.lang.String)#java/lang/String/length()

4)对于数据库中的各个已有记录进行筛选,去除所有重复的记录。

在推荐阶段的搜索过程中,主要包括:

(1)获取当前开发项目的所有调用关系信息,比如已开发部分调用的函数,这一部分函数我们称之为声明,而这些声明又会调用许多API接口,因此我们将获取正在开发项目的整个项目-声明-接口的三层调用关系。

(2)将代码数据库中已有的项目的所有API接口编号,计算代码数据库中已有的项目与当前开发项目的相似度,数据库中相似度前三的项目作为候选集,再获取相似项目中的所有声明,计算这些声明与当前开发的声明的相似度,进行重排序,最后获取相似度超过阈值μ的声明,再由相似声明集合中的所有API接口作为候选列表。

具体地,本步骤中根据如下调整后的余弦相似度公式计算代码数据库中项目与当前项目的相似度:

其中,p表示当前正在开发的项目,q表示计算与当前项目相似度的代码数据库中的项目,n表示代码数据库中所有API接口的种类数,其中φ

根据如下公式计算声明间相似度:

其中,d为当前正在开发的声明,e为相似项目中待计算相似度的声明,F()表示声明中所有调用接口的集合。

根据如下公式选取相似的声明集合:

topsim(d)={e|sim(d,e)>μ}

其中,μ为代码数据库中所有声明间的平均相似度。

(3)根据候选列表中的所有API接口,计算近邻因子权重和API推荐评分并进行排序,为用户推荐所需接口。

具体地,根据如下公式计算候选集中的API评分:

其中,R

其中,API接口i,j的相似度计算公式如下:

sim(i,j)=LSI(i

其中,LSI(Latent Semantic Indexing)为第三方的潜在语义相似度处理工具,i

List(i)={j|sim(i,j)>μ'}

其中,μ'为API接口间的平均相似度。

本步骤中,在计算权重重新排序阶段主要包括:

1)根据筛选出的相似声明与候选列表API的数量计算出加权参数λ。

2)根据λ的权重对候选列表的API进行协同过滤并且获得各个API的最终评分。

3)根据评分降序选取前N个API。

4)最后将所有结果按照排序分数从高到低进行排列,最终反馈给用户。

本发明使用BM25方法来控制单一变量的影响程度,以及使用阈值选取若干个相似度相近的声明,这一步在传统KNN的基础上做出了优化而能打到更好的实际效果,最后利用动态的参数来决定声明与调用信息在最后推荐评分中的权值。BM25是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法。它是一种在TF-IDF基础上进一步进行优化的算法,能够使得单个变量的影响值控制在一定范围内,使得得出的代码之间的相似度能更加概括整个上下文所有信息的影响而不是仅仅被单个相关性特别高的调用影响。而BM25算法一般是使用在文本的相似度计算中,为了能够将其运用在代码推荐的过程中,我们将其进行了一定程度的转换和转变以能适应代码推荐的任务。而使用根据数据库中声明的样本计算出的阈值μ来选取相似声明相较于传统KNN能够更好的保证选取出的声明之间的相似性。根据动态的加权参数λ由具体的相似声明与候选API数量的差异来决定协同过滤的权重究竟是以相似声明间信息的影响为主还是API间信息的影响为主。

基于相同的发明构思,本发明实施例公开的一种协同过滤并权衡数据信息的API推荐装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被加载至处理器时实现上述的协同过滤并权衡数据信息的API推荐方法。

相关技术
  • 一种协同过滤并权衡数据信息的API推荐方法与装置
  • API推荐方法及API推荐装置
技术分类

06120112261379