CN114416159B - 基于信息增强调用序列的api推荐方法及装置 - Google Patents

基于信息增强调用序列的api推荐方法及装置 Download PDF

Info

Publication number
CN114416159B
CN114416159B CN202210335647.4A CN202210335647A CN114416159B CN 114416159 B CN114416159 B CN 114416159B CN 202210335647 A CN202210335647 A CN 202210335647A CN 114416159 B CN114416159 B CN 114416159B
Authority
CN
China
Prior art keywords
api
sequence
vector
representation
original
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210335647.4A
Other languages
English (en)
Other versions
CN114416159A (zh
Inventor
高翠芸
陈雨佳
王轩
廖清
刘川意
韩培义
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute Of Technology shenzhen Shenzhen Institute Of Science And Technology Innovation Harbin Institute Of Technology
Original Assignee
Harbin Institute Of Technology shenzhen Shenzhen Institute Of Science And Technology Innovation Harbin Institute Of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute Of Technology shenzhen Shenzhen Institute Of Science And Technology Innovation Harbin Institute Of Technology filed Critical Harbin Institute Of Technology shenzhen Shenzhen Institute Of Science And Technology Innovation Harbin Institute Of Technology
Priority to CN202210335647.4A priority Critical patent/CN114416159B/zh
Publication of CN114416159A publication Critical patent/CN114416159A/zh
Application granted granted Critical
Publication of CN114416159B publication Critical patent/CN114416159B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于信息增强调用序列的API推荐方法及装置,方法包括解析源代码提取得到原始API调用序列,根据原始API调用序列获取用户自定义API和非自定义API的对应关系,得到增强API调用序列;将原始API调用序列和增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,并和原始序列表示向量进行信息融合得到API新向量表示;将API新向量表示输入神经网络第二编码器中,得到API序列向量并输入相似度计算模块,得到每一个候选API的概率。本发明可解决原始API调用序列信息不足和用户自定义API携带信息过少影响推荐准确率的问题。

Description

基于信息增强调用序列的API推荐方法及装置
技术领域
本发明属于数据处理技术领域,具体涉及一种基于信息增强调用序列的API推荐方法及装置。
背景技术
在软件开发过程中,一种常见的做法是重用外部库提供的应用程序编程接口(API),而不是从头开始重新实现它们。开发人员经常需要找出在当前编程环境中应该使用哪些API来实现他们的目的。然而,要熟悉大量外部库的所有API并不容易。在这种情况下,开发人员会通过查阅API官方文档、查询问答网站、使用搜索引擎等方式来正确使用API。但是,这些方式可能会非常耗时而且容易出错,因为官方文档通常只报告API描述,而没有提供琐碎的示例、问答示例可能不完整且质量差,通用的搜索引擎出现质量不高、无关甚至是错误的结果。
近些年,推荐技术的研究引起了越来越多的关注。为了降低开发人员熟悉API的时间成本,正确有效的使用API,提高编程效率,很多研究人员将API学习的问题与推荐技术结合,提出了API推荐方法。更具体的说,API推荐技术旨在根据前面的部分代码信息,在当前编程位置自动推荐正确的API调用。
为了准确进行API推荐,前人使用频繁模式挖掘或集群技术从大量实际项目中提取API使用模式或者使用API调用序列的概率统计模型来预测API使用模式,但是这些方法往往存在高冗余问题,并产生不准确的API使用模式。随着深度学习技术的发展,有人提出了采用上下文感知的协同过滤推荐系统,根据相似的项目和方法进行API推荐,但是这种方法只能捕获精确匹配,无法利用API调用和项目的高阶连接性,导致API推荐的准确率不高。又有人提出了基于图的协同过滤,构建方法、项目和目标API的集成图,有效利用了图上的高阶连通性,但是这个方式忽视了API之间很重要的顺序调用关系,开发人员确定下一个要调用的API,很大程度上是基于之前调用的API的逻辑关系。而且,在实际的项目开发过程中,开发人员经常会调用自己写好的特定用于本项目的API,但是,已经提出的这些方法,都将关注点集中在官方API库、流行的第三方API库里的API,却忽略了用户自定义的API,降低API推荐的准确率。
发明内容
本发明针对上述问题,提供了一种基于信息增强调用序列的API推荐方法及装置,用于解决原始API调用序列信息不足和用户自定义API携带信息过少影响推荐准确率的问题,使软件开发过程中API推荐更准确。
本发明的第一方面,提供了一种基于信息增强调用序列的API推荐方法,方法包括如下步骤:
数据预处理:解析源代码提取得到原始API调用序列,根据所述原始API调用序列获取用户自定义API和非自定义API的对应关系,得到增强API调用序列;
API调用序列表示学习:将所述原始API调用序列和所述增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将所述第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,将所述第二增强序列表示向量和所述原始序列表示向量进行信息融合得到API新向量表示;
API使用预测:将所述API新向量表示输入神经网络第二编码器中,得到API序列向量,将所述API序列向量输入相似度计算模块,得到每一个候选API的相似性得分,选出相似性得分从高到低序列中的前N个API即为推荐的API。
本发明的进一步技术方案是:所述数据预处理中,所述用户自定义API为不在官方库或第三方库的API,根据所述用户自定义API,提取实现所述用户自定义API功能的官方库或第三方库的API序列,并将提取的所述API序列代替所述原始API调用序列中的用户自定义API,得到增强API调用序列。
本发明的进一步技术方案是:所述API调用序列表示学习中,所述信息融合包括门控融合,所述门控融合是对所述第二增强序列表示向量中的自定义API表示向量和所述原始序列表示向量中的自定义API表示向量进行融合,通过图注意力机制根据所述用户自定义API和非自定义API的对应关系,得到所述第二增强序列表示向量中的自定义API表示向量,将所述第二增强序列表示向量中的自定义API表示向量与所述原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,得到自定义API表示输出向量。
本发明的进一步技术方案是:所述API调用序列表示学习中,所述信息融合还包括线性融合,所述线性融合是将所述第二增强序列表示向量中的非自定义API表示向量和所述原始序列表示向量中的非自定义API表示向量拼接后进行线性变换,得到信息融合后的非自定义API表示输出向量,将所述非自定义API表示输出向量与所述自定义API表示输出向量结合得到所述API新向量表示。
本发明的第二方面,提供了一种基于信息增强调用序列的API推荐装置,装置包括:
数据预处理模块,用于解析源代码提取得到原始API调用序列,根据所述原始API调用序列获取用户自定义API和非自定义API的对应关系,得到增强API调用序列;
API调用序列表示学习模块,将所述原始API调用序列和所述增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将所述第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,将所述第二增强序列表示向量和所述原始序列表示向量进行信息融合得到API新向量表示;
API使用预测模块,用于将所述API新向量表示输入神经网络第二编码器中,得到API序列向量,将所述API序列向量输入相似度计算模块,得到每一个候选API的相似性得分,选出相似性得分从高到低序列中的前N个API即为推荐的API。
本发明的进一步技术方案是:所述数据预处理模块中,所述用户自定义API为不在官方库或第三方库的API,根据所述用户自定义API,提取实现所述用户自定义API功能的官方库或第三方库的API序列,并将提取的所述API序列代替所述原始API调用序列中的用户自定义API,得到增强API调用序列。
本发明的进一步技术方案是:所述API调用序列表示学习模块中,所述信息融合包括门控融合,所述门控融合是对所述第二增强序列表示向量中的自定义API表示向量和所述原始序列表示向量中的自定义API表示向量进行融合,通过图注意力机制根据所述用户自定义API和非自定义API的对应关系,得到所述第二增强序列表示向量中的自定义API表示向量,将所述第二增强序列表示向量中的自定义API表示向量与所述原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,得到自定义API表示输出向量。
本发明的进一步技术方案是:所述API调用序列表示学习模块中,所述信息融合还包括线性融合,所述线性融合是将所述第二增强序列表示向量中的非自定义API表示向量和所述原始序列表示向量中的非自定义API表示向量拼接后进行线性变换,得到信息融合后的非自定义API表示输出向量,将所述非自定义API表示输出向量与所述自定义API表示输出向量结合得到所述API新向量表示。
本发明提出了一种基于信息增强调用序列的API推荐方法及装置,通过设计一种将代码段解析成原始API调用序列和增强API调用序列的方法,来弥补原始序列信息不足和用户自定义API携带信息过少影响推荐准确率的问题;设计了一种融合原始API调用序列和增强API调用序列信息来学习序列表示的深度学习网络,该深度学习网络通过图注意力机制,获取增强调用序列中的替换API的信息,再通过门控机制,与原始API调用序列中对应的用户自定义API进行信息融合,这样原始调用序列中的用户自定义API的信息就得到了更新;再通过线性变换机制,将两条序列里的非用户自定义API的信息进行融合,这样原始API调用序列中的非用户自定义API的信息就得到了更新;经过两次更新操作,原始序列中的API新向量表示已经全部完成融合了增强序列的信息,使得学习到的API新向量表示更加准确。
附图说明
图1是本发明实施例中基于信息增强调用序列的API推荐方法流程示意图;
图2是本发明实施例中图注意力机制示意图;
图3是本发明实施例中基于信息增强调用序列的API推荐装置结构示意图。
具体实施方式
为进一步对本发明的技术方案作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的步骤。
基于本发明的实施例1
实施例1提供了基于信息增强调用序列的API推荐方法,如图1所示,方法包括如下步骤:
数据预处理:解析源代码提取得到原始API调用序列,根据原始API调用序列获取用户自定义API和非自定义API的对应关系,得到增强API调用序列;
具体实施过程中,数据预处理部分用于解析源代码,获取神经网络需要的三个输入,原始API调用序列、原始API调用序列获取用户自定义API和实现功能的底层非自定义API的对应关系以及增强API调用序列,其中,使用静态分析工具Eclipse JDT解析源代码,识别出源代码中的函数体,将函数体中的API调用序列作为原始API调用序列,将API表示为
Figure 655758DEST_PATH_IMAGE001
,则原始API调用序列为
Figure 41740DEST_PATH_IMAGE002
,其中n表示为神经网络能处理的最大序列长度。如果序列的长度小于n,就重复的在序列的左方添加填充值,直到长度为n;如果序列的长度大于n,则只考虑最右的n的API,因为离要预测的API越近,影响程度越大。
进一步的,数据预处理中,用户自定义API为不在官方库或第三方库的API,根据用户自定义API,提取实现用户自定义API功能的官方库或第三方库的API序列,并将提取的API序列代替原始API调用序列中的用户自定义API,得到增强API调用序列。
具体实施过程中,分析获得的原始API调用序列,对于每个API,若该API不在官方库里或者流行的第三方库里,则认为其是用户自定义API,记为u。根据源代码中用户自定义API的代码,提取实现其的底层官方API或流行第三方库的API序列,将对应关系记为
Figure 24740DEST_PATH_IMAGE003
。可以根据识别出的用户自定义API,修改序列表示为
Figure 888790DEST_PATH_IMAGE004
。然后,将原始序列中的用户自定义API替换为其底层实现API序列,则原始API调用序列就变为增强API调用序列
Figure 172004DEST_PATH_IMAGE005
API调用序列表示学习:将原始API调用序列和增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,将第二增强序列表示向量和原始序列表示向量进行信息融合得到API新向量表示;
具体实施过程中,API调用序列表示学习部分首先将原始API调用序列
Figure 260046DEST_PATH_IMAGE006
和增强API调用序列
Figure 730341DEST_PATH_IMAGE007
分别经过神经网络嵌入层得到原始序列表示向量和第一增强序列表示向量,再将第一增强序列表示向量经过Transformer编码器,得到第二增强序列表示向量。然后将第二增强序列表示向量与原始序列表示向量进行信息融合。
进一步的,API调用序列表示学习中,信息融合包括门控融合,门控融合是对第二增强序列表示向量中的自定义API表示向量和原始序列表示向量中的自定义API表示向量进行融合,通过图注意力机制根据用户自定义API和非自定义API的对应关系,得到第二增强序列表示向量中的自定义API表示向量,将第二增强序列表示向量中的自定义API表示向量与原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,得到自定义API表示输出向量。
具体实施过程中,信息融合结构主要分为两个部分,门控融合和线性融合。门控融合部分首先通过图注意力机制按照对应关系
Figure 398083DEST_PATH_IMAGE008
,得到第二增强序列表示向量中的自定义API表示向量,再与原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,门控融合机制的公式如下:
Figure 332541DEST_PATH_IMAGE009
Figure 529167DEST_PATH_IMAGE010
其中,
Figure 549076DEST_PATH_IMAGE011
表示非线性激活函数sigmoid,x表示第二增强序列表示向量中的自定义API表示向量,
Figure 489350DEST_PATH_IMAGE012
表示原始序列表示向量中的自定义API表示向量,
Figure 481577DEST_PATH_IMAGE013
Figure 177000DEST_PATH_IMAGE014
分别表示x、y线性变换中的权重矩阵,综合考虑两种编码信息得到更新门z参数,out 输出向量即为自定义API表示输出向量。
进一步的,图注意力机制如图2所示,公式如下:
Figure 621888DEST_PATH_IMAGE015
Figure 162591DEST_PATH_IMAGE016
Figure 271974DEST_PATH_IMAGE017
其中,节点 j 是节点i的邻居,使用Attention机制计算节点j对于节点i的重要性,得到重要性分数
Figure 810403DEST_PATH_IMAGE018
。其中,
Figure 804903DEST_PATH_IMAGE019
表示节点i经过线性变换后的表示,
Figure 86980DEST_PATH_IMAGE020
表示节点j经过线性变换后的表示,d表示
Figure 53799DEST_PATH_IMAGE019
的维度。最后使用了softmax对中心节点的邻居节点做了归一化,得到
Figure 91025DEST_PATH_IMAGE021
表示重要性系数,最终通过对输入特征的加权得到输出特征,其中
Figure 244926DEST_PATH_IMAGE022
表示节点i的所有邻居。
进一步的,API调用序列表示学习中,信息融合还包括线性融合,线性融合是将第二增强序列表示向量中的非自定义API表示向量和原始序列表示向量中的非自定义API表示向量拼接后进行线性变换,得到信息融合后的非自定义API表示输出向量,将非自定义API表示输出向量与自定义API表示输出向量结合得到API新向量表示。
具体实施过程中,线性融合部分主要是融合第二增强序列表示向量中的非自定义API表示向量和原始序列表示向量中的非自定义API表示向量。将两种表示向量拼接到一起,再通过线性变换,得到信息融合后的非自定义API表示输出向量,公式如下:
Figure 393011DEST_PATH_IMAGE023
其中,
Figure 948757DEST_PATH_IMAGE024
表示原始序列表示向量中的非自定义API表示向量,
Figure 360147DEST_PATH_IMAGE025
表示第二增强序列表示向量中的非自定义API表示向量,最终得到融合结果非自定义API表示输出向量
Figure 63660DEST_PATH_IMAGE026
API使用预测:将所述API新向量表示输入神经网络第二编码器中,得到API序列向量,将所述API序列向量输入相似度计算模块,得到每一个候选API的相似性得分,选出相似性得分最高的N个API即为推荐的API。
具体实施过程中,API使用预测部分,经过信息融合后,得到API新向量表示,再将其放入Transformer编码器中,得到最终的API序列向量,再通过一个相似度计算模块将得到的API序列向量与候选API集作匹配,选出相似性得分最高的N个API推荐给开发人员,其中候选API集为源代码数据集中的所有API。
具体的,相似度计算模块使用内积作为相似函数,得到相似性分数:
Figure 953119DEST_PATH_IMAGE027
其中,
Figure 628951DEST_PATH_IMAGE028
表示最终的API序列向量,
Figure 7980DEST_PATH_IMAGE029
表示候选集里的API向量,g(s,a)表示得到的相似性分数。
基于本发明的实施例2
本实施例描述根据本公开实施例1的方法对应的装置,一种基于信息增强调用序列的API推荐装置,装置100包括:数据预处理模块101,用于解析源代码提取得到原始API调用序列,根据所述原始API调用序列获取用户自定义API和实现相同功能的底层非自定义API的对应关系,得到增强API调用序列;API调用序列表示学习模块102,将所述原始API调用序列和所述增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将所述第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,将所述第二增强序列表示向量和所述原始序列表示向量进行信息融合得到API新向量表示;API使用预测模块103,用于将所述API新向量表示输入神经网络第二编码器中,得到API序列向量,将所述API序列向量输入相似度计算模块,得到每一个候选API的相似性得分,选出相似性得分最高的N个API即为推荐的API。除了上述3个模块以外,装置100还可以包括其他部件,然而,由于这些部件与本公开实施例的内容无关,因此在这里省略其图示和描述。
进一步的,所述数据预处理模块中,所述用户自定义API为不在官方库或第三方库的API,根据所述用户自定义API,提取实现所述用户自定义API功能的官方库或第三方库的API序列,并将提取的所述API序列代替所述原始API调用序列中的用户自定义API,得到增强API调用序列。
进一步的,所述API调用序列表示学习模块中,所述信息融合包括门控融合,所述门控融合是对所述第二增强序列表示向量中的自定义API表示向量和所述原始序列表示向量中的自定义API表示向量进行融合,通过图注意力机制根据所述用户自定义API和实现相同功能的底层非自定义API的对应关系,得到所述第二增强序列表示向量中的自定义API表示向量,将所述第二增强序列表示向量中的自定义API表示向量与所述原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,得到自定义API表示输出向量。
进一步的,所述API调用序列表示学习模块中,所述信息融合还包括线性融合,所述线性融合是将所述第二增强序列表示向量中的非自定义API表示向量和所述原始序列表示向量中的非自定义API表示向量拼接后进行线性变换,得到信息融合后的非自定义API表示输出向量,将所述非自定义API表示输出向量与所述自定义API表示输出向量结合得到所述API新向量表示。
一种基于信息增强调用序列的API推荐装置100的具体工作过程参照上述一种基于信息增强调用序列的API推荐方法实施例1的描述,不再赘述。
本发明实施例针对以上所述基于信息增强调用序列的API推荐方法及装置,通过设计一种将代码段解析成原始API调用序列和增强API调用序列的方法,来弥补原始序列信息不足和用户自定义API携带信息过少影响推荐准确率的问题;设计了一种融合原始API调用序列和增强API调用序列信息来学习序列表示的深度学习网络,该深度学习网络通过图注意力机制,获取增强调用序列中的替换API的信息,再通过门控机制,与原始API调用序列中对应的用户自定义API进行信息融合,这样原始调用序列中的用户自定义API的信息就得到了更新;再通过线性变换机制,将两条序列里的非用户自定义API的信息进行融合,这样原始API调用序列中的非用户自定义API的信息就得到了更新;经过两次更新操作,原始序列中的API新向量表示已经全部完成融合了增强序列的信息,使得学习到的API新向量表示更加准确。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的步骤、方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种步骤、方法所固有的要素。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (6)

1.一种基于信息增强调用序列的API推荐方法,其特征在于,方法包括如下步骤:
数据预处理:解析源代码提取得到原始API调用序列,根据所述原始API调用序列获取用户自定义API和非自定义API的对应关系,得到增强API调用序列;
API调用序列表示学习:将所述原始API调用序列和所述增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将所述第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,将所述第二增强序列表示向量和所述原始序列表示向量进行信息融合得到API新向量表示;
API使用预测:将所述API新向量表示输入神经网络第二编码器中,得到API序列向量,将所述API序列向量输入相似度计算模块,得到每一个候选API的相似性得分,选出相似性得分最高的N个API即为推荐的API;
其中,得到增强API调用序列的具体方法为:所述用户自定义API为不在官方库或第三方库的API,根据所述用户自定义API,提取实现所述用户自定义API功能的官方库或第三方库的API序列,并将提取的所述API序列代替所述原始API调用序列中的用户自定义API,即可将原始API调用序列转为增强API调用序列。
2.根据权利要求1所述的基于信息增强调用序列的API推荐方法,其特征在于,所述API调用序列表示学习中,所述信息融合包括门控融合,所述门控融合是对所述第二增强序列表示向量中的自定义API表示向量和所述原始序列表示向量中的自定义API表示向量进行融合,通过图注意力机制根据所述用户自定义API和非自定义API的对应关系,得到所述第二增强序列表示向量中的自定义API表示向量,将所述第二增强序列表示向量中的自定义API表示向量与所述原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,得到自定义API表示输出向量。
3.根据权利要求2所述的基于信息增强调用序列的API推荐方法,其特征在于,所述API调用序列表示学习中,所述信息融合还包括线性融合,所述线性融合是将所述第二增强序列表示向量中的非自定义API表示向量和所述原始序列表示向量中的非自定义API表示向量拼接后进行线性变换,得到信息融合后的非自定义API表示输出向量,将所述非自定义API表示输出向量与所述自定义API表示输出向量结合得到所述API新向量表示。
4.一种基于信息增强调用序列的API推荐装置,其特征在于,装置包括:
数据预处理模块,用于解析源代码提取得到原始API调用序列,根据所述原始API调用序列获取用户自定义API和非自定义API的对应关系,得到增强API调用序列;
API调用序列表示学习模块,将所述原始API调用序列和所述增强API调用序列分别放入神经网络嵌入层,得到原始序列表示向量和第一增强序列表示向量,将所述第一增强序列表示向量输入神经网络第一编码器,得到第二增强序列表示向量,将所述第二增强序列表示向量和所述原始序列表示向量进行信息融合得到API新向量表示;
API使用预测模块,用于将所述API新向量表示输入神经网络第二编码器中,得到API序列向量,将所述API序列向量输入相似度计算模块,得到每一个候选API的相似性得分,选出相似性得分最高的N个API即为推荐的API;
其中,得到增强API调用序列的具体方法为:所述用户自定义API为不在官方库或第三方库的API,根据所述用户自定义API,提取实现所述用户自定义API功能的官方库或第三方库的API序列,并将提取的所述API序列代替所述原始API调用序列中的用户自定义API,即可将原始API调用序列转为增强API调用序列。
5.根据权利要求4所述的基于信息增强调用序列的API推荐装置,其特征在于,所述API调用序列表示学习模块中,所述信息融合包括门控融合,所述门控融合是对所述第二增强序列表示向量中的自定义API表示向量和所述原始序列表示向量中的自定义API表示向量进行融合,通过图注意力机制根据所述用户自定义API和非自定义API的对应关系,得到所述第二增强序列表示向量中的自定义API表示向量,将所述第二增强序列表示向量中的自定义API表示向量与所述原始序列表示向量中的自定义API表示向量通过更新门进行信息融合,得到自定义API表示输出向量。
6.根据权利要求5所述的基于信息增强调用序列的API推荐装置,其特征在于,所述API调用序列表示学习模块中,所述信息融合还包括线性融合,所述线性融合是将所述第二增强序列表示向量中的非自定义API表示向量和所述原始序列表示向量中的非自定义API表示向量拼接后进行线性变换,得到信息融合后的非自定义API表示输出向量,将所述非自定义API表示输出向量与所述自定义API表示输出向量结合得到所述API新向量表示。
CN202210335647.4A 2022-04-01 2022-04-01 基于信息增强调用序列的api推荐方法及装置 Active CN114416159B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210335647.4A CN114416159B (zh) 2022-04-01 2022-04-01 基于信息增强调用序列的api推荐方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210335647.4A CN114416159B (zh) 2022-04-01 2022-04-01 基于信息增强调用序列的api推荐方法及装置

Publications (2)

Publication Number Publication Date
CN114416159A CN114416159A (zh) 2022-04-29
CN114416159B true CN114416159B (zh) 2022-07-22

Family

ID=81263481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210335647.4A Active CN114416159B (zh) 2022-04-01 2022-04-01 基于信息增强调用序列的api推荐方法及装置

Country Status (1)

Country Link
CN (1) CN114416159B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114896514B (zh) * 2022-07-14 2022-09-30 西安电子科技大学 一种基于图神经网络的Web API标签推荐方法
CN115600012B (zh) * 2022-12-01 2023-04-21 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 一种基于知识增强和结构对比的api推荐方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832047A (zh) * 2017-11-27 2018-03-23 北京理工大学 一种基于lstm的非api函数实参推荐方法
CN111966817A (zh) * 2020-07-24 2020-11-20 复旦大学 基于深度学习及代码上下文结构和文本信息的api推荐方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11762926B2 (en) * 2019-05-20 2023-09-19 Fujitsu Limited Recommending web API's and associated endpoints
US11614991B2 (en) * 2020-07-09 2023-03-28 Dell Products L.P. Recommendation engine for application programming interface (API) in a multi-cloud environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832047A (zh) * 2017-11-27 2018-03-23 北京理工大学 一种基于lstm的非api函数实参推荐方法
CN111966817A (zh) * 2020-07-24 2020-11-20 复旦大学 基于深度学习及代码上下文结构和文本信息的api推荐方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Chengpeng Wang 等.Statistical API Completion Based on Code Relevance Mining.《2019 IEEE Workshop on Mining and Analyzing Interaction Histories (MAINT)》.2019,第7-13页. *
Jing Kai Siow 等.CORE: Automating Review Recommendation for Code Changes.《2020 IEEE 27th International Conference on Software Analysis, Evolution and Reengineering (SANER)》.2020,第284-293页. *
潘鹤中 等.深度学习数据窃取攻击在数据沙箱模式下的威胁分析与防御方法研究.《通信学报》.2021,第42卷(第11期),第133-144页. *

Also Published As

Publication number Publication date
CN114416159A (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
CN112214995B (zh) 用于同义词预测的分层多任务术语嵌入学习
CN112528034B (zh) 一种基于知识蒸馏的实体关系抽取方法
CN114416159B (zh) 基于信息增强调用序列的api推荐方法及装置
US11789753B2 (en) Machine-learned models for user interface prediction, generation, and interaction understanding
CN113010683B (zh) 基于改进图注意力网络的实体关系识别方法及系统
CN110943981A (zh) 基于层次学习的跨架构漏洞挖掘方法
CN112417097A (zh) 一种用于舆情解析的多模态数据特征提取与关联方法
CN115017294B (zh) 代码搜索方法
CN113705238A (zh) 基于bert和方面特征定位模型的方面级情感分析方法及模型
Althar et al. [Retracted] Software Systems Security Vulnerabilities Management by Exploring the Capabilities of Language Models Using NLP
CN113742733A (zh) 阅读理解漏洞事件触发词抽取和漏洞类型识别方法及装置
CN111582506A (zh) 基于全局和局部标记关系的偏多标记学习方法
CN113392929B (zh) 一种基于词嵌入与自编码器融合的生物序列特征提取方法
Zhu et al. Trobo: A novel deep transfer model for enhancing cross-project bug localization
Ahmed et al. Efficient transformer-based sentence encoding for sentence pair modelling
Sarnot et al. Snapcode-a snapshot based approach to code stylometry
CN117151247B (zh) 机器学习任务建模的方法、装置、计算机设备和存储介质
Che et al. A feature and deep learning model recommendation system for mobile application
CN118410498B (zh) 一种细粒度混合语义漏洞检测方法及系统
Li et al. ACAGNN: Source Code Representation Based on Fine-Grained Multi-view Program Features
Tan et al. Information Extraction System for Cargo Invoices
CN117874277B (zh) 一种基于无监督域自适应哈希的图像检索方法
Bonfitto A semantic approach for constructing knowledge graphs extracted from tables
JP6980616B2 (ja) 計算機システム及び学習方法
Althar et al. Research Article Software Systems Security Vulnerabilities Management by Exploring the Capabilities of Language Models Using NLP

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Gao Cuiyun

Inventor after: Xu Guoai

Inventor after: Chen Yujia

Inventor after: Wang Xuan

Inventor after: Liao Qing

Inventor after: Liu Chuanyi

Inventor after: Han Peiyi

Inventor before: Gao Cuiyun

Inventor before: Chen Yujia

Inventor before: Wang Xuan

Inventor before: Liao Qing

Inventor before: Liu Chuanyi

Inventor before: Han Peiyi

CB03 Change of inventor or designer information