一种基于上下文及图学习的API推荐方法技术

技术编号:34798211 阅读:18 留言:0更新日期:2022-09-03 20:04
基于上下文及图学习的API推荐方法是一种根据上下文有限信息进行分析和预测API的推荐方法,从而缓解当上下文信息不足容易遇到冷启动导致推荐性能受到影响的问题。本方法首先需要进行细粒度的API建模和分析,通过融合结构和属性信息来丰富上下文信息,使得能够为API预测任务提供更多特征信息,发现更多潜在关系和使用关系,扩大API预测范围。然后基于图学习的特征表示进行链接预测,从而发现潜在关系。同时基于历史使用信息进行贝叶斯预测,推断下一步可能的API。最后结合两者的预测得分来预测接下来可能调用的API,以提高推荐性能。与已有的API推荐方法相比,本方法能有效的提升API推荐准确率,并且能够提供丰富的API推荐列表,具有一定的应用价值。具有一定的应用价值。具有一定的应用价值。

【技术实现步骤摘要】
一种基于上下文及图学习的API推荐方法


[0001]本专利技术属于软件工程智能化开发领域,是一种结合编程上下文信息应用图学习技术为开发人员推荐合适API的方法。

技术介绍

[0002]API作为软件工具包、软件框架等应用程序的功能访问接口,在日常的软件开发任务中被广泛使用。当前由于很多帮助文档存在质量不高、代码示例不完整等问题,导致开发人员经常面临API难以使用的问题。近年来,大数据和人工智能技术在代码搜索和推荐领域取得一些研究进展,很多学者在API推荐问题上做了进一步的深入研究和探索,并取得了一系列研究成果。
[0003]然而,当前API推荐方法在上下文信息的利用上还存在不足之处。当上下文信息不足时,推荐易陷入“冷启动”,导致推荐性能受到影响。图学习作为一种关系和属性特征融合学习的技术,能够从数据集中学习关系实体深层的特征表示,从而发现隐藏的关系。因此图学习技术在分类、预测和推荐等领域有着广泛的应用。
[0004]针对API推荐领域的“冷启动”问题,本专利技术结合图学习技术,提供一种基于图学习的API推荐方法。通过对上下文细粒度的API使用关系和API属性信息进行研究,利用图学习技术融合API结构和属性信息,以增强上下文信息表示,提高API预测能力。

技术实现思路

[0005]本专利技术的目的是当开发者所在代码上下文信息不足时,能够根据有限的上下文为开发者提供丰富的API使用建议。本专利技术的主要优势在于利用图学习机制来融合细粒度的API结构关系和API属性特征,从而学习API深层的特征表示,以增强上下文信息缓解“冷启动”问题。这些API特征将用于下游的预测任务,从而为推荐任务提供更多有效信息。基于图学习的API特征融合模型如图1所示。除此之外,本专利技术结合了链接预测技术和贝叶斯预测方法对候选API进行预测,实现预测未知关系边的产生概率并作为推荐依据。
[0006]主要步骤如下:
[0007](1)关系构建
[0008]构建API使用的关系图,表示上下文的API使用联系。
[0009](2)特征提取
[0010]主要针对API关系图中节点特征的提取。
[0011](3)模型训练
[0012]主要是将API关系图和特征进行融合表示,从而获得节点的深层特征。
[0013](4)预测和推荐
[0014]主要是基于上下文API节点的特征表示和API使用分布信息对未知API进行预测,然后根据预测值大小进行排序推荐。
具体实施方式
[0015]基于图学习的API推荐框架如图2所示,具体实施步骤如下:
[0016]步骤1:关系构建。
[0017]通过静态分析技术,可以提取一个项目中方法和API的调用关系,基于该调用关系可以构建关联关系,从而构建该项目对应的API关联子图。而关联关系的定义如下:
[0018]给定数据集P={M
i
|i=1,2,...,n},其中M
i
表示第i个客户端方法中调用的 API集合。如果满足一对API节点(u,v)同时使用于客户端方法M
i
中,那么则记 o(u,v)=1,否则o(u,v)=0。当API节点u、v满足那么认为API节点u和API节点v之间存在关联关系,其中minsup表示最小支持度,默认为1。
[0019]将细粒度的API结构关系通过一个带权无向的API关联图G={V,E}来表示,节点V表示API集合,边E表示关联关系集合。其中,节点V的标签用API全限定名表示,并使用唯一编号标识;边E使用节点对表示,如节点对(u,v,w)表示节点u和节点v存在关联的边,关联强度为w,即e=(u,v,w),e∈E。
[0020]根据上述提取方法完成API结构关系的构建,如图3所示是一个项目的API 关联图展示。
[0021]步骤2:特征提取。
[0022]特征提取主要针对API关联图中节点属性进行特征提取,作为图学习过程中节点的初始特征。主要从两个方面考虑节点的属性信息:API项目结构信息和 API功能语义信息。
[0023]为了同时考虑到API的项目结构信息和API功能语义信息的优点,本方法将两种信息融合作为节点属性,并嵌入到相同的向量空间从而表示为特征向量。具体节点属性提取方法是,先将API全限定名按照项目名(project)、包名(package)、类名(class)、方法名(method)进行层次关系分离以获得API 项目结构信息。然后每个名称再按照驼峰式拆分法进行拆分,获得单词序列以获得API功能语义信息。再将各个结构部分进行拼接,从而获得API节点的属性信息。
[0024]然后构建向量空间模型对节点文本属性进行向量化表示,其中利用TF

IDF 算法计算节点文本属性中每个词袋模型的权重,从而完成对API的编码和初始向量表示。API节点i的初始特征向量表示为其中i
w
的计算公式如下所示。
[0025][0026]式中,f
w
表示API节点i的文本属性中包含单词w的数量,|i|表示API关联图中的API节点数量,a
w
表示API关联图中所有文本属性包含单词w的API数量。
[0027]步骤3:模型训练。
[0028]为了将拓扑信息和节点属性融合学习,本方法利用基于空域的图学习框架 GraphSAGE进行图表征学习,从而获得API的融合特征表示。基于GraphSAGE 的API关联图学习模型主要分成三个部分:输入层、卷积层、输出层。
[0029]①
输入层
[0030]主要有两部分输入信息,分别是结构信息和属性信息。结构信息是指API关联图G,
用于图上计算任务。属性信息是指节点的文本属性T,利用上述向量空间模型先进行编码,从而获得API的初始特征向量。
[0031]②
卷积层
[0032]卷积层利用图G的结构特性,通过采样策略和聚合函数,聚合邻居节点的特征信息,实现特征的融合与更新。采样邻居节点的方法采用定长抽样方法,需要先定义邻居个数S,目的是保持邻居个数一定,方便多个节点拼接进行批训练。然后采用有放回的重采样方法达到S,通过该方式能够得到API节点v的邻居节点集N(v)。聚合函数的聚合过程是从k阶邻居节点上进行消息传递,从而更新节点的特征表示,平衡节点的属性特性也保留图的结构特性。
[0033]提供如下三类聚合函数实现对API节点v的特征更新:
[0034]1)平均聚合函数
[0035]取v的邻居节点的加权平均值作为节点的更新:
[0036][0037]其中,节点u是节点v的邻居节点,W是待学习参数。
[0038]2)LSTM聚合函数
[0039]将v的邻居节点集N(v)视为序列,利用LSTM模块结构对该序列进行处理。
[0040]3)池化聚合函数
[0041]采用最大池化操作汇总来自相邻节本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于上下文及图学习的API推荐方法,其特征在于,通过关系建模方法构建API关联图以表示上下文API使用关系;通过图学习模型将API关系和属性的融合特征来缓解上下文信息不足的问题;根据多源信息融合的预测方法预测候选API。2.根据权利要求1所述的关系建模方法,其特征在于,通过静态分析技术提取项目中的类文件信息、方法声明信息、方法参数信息、API调用信息和API参数信息,从而根据方法与API的共现关系构建API关联图,并根据API项目结构信息和语义信息进行属性特征提取。3.根据权利要求1...

【专利技术属性】
技术研发人员:郭俊霞赖宝强李征赵瑞莲
申请(专利权)人:北京化工大学
类型:发明
国别省市:

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

1