CN115600012A - 一种基于知识增强和结构对比的api推荐方法 - Google Patents

一种基于知识增强和结构对比的api推荐方法 Download PDF

Info

Publication number
CN115600012A
CN115600012A CN202211523157.3A CN202211523157A CN115600012A CN 115600012 A CN115600012 A CN 115600012A CN 202211523157 A CN202211523157 A CN 202211523157A CN 115600012 A CN115600012 A CN 115600012A
Authority
CN
China
Prior art keywords
api
representation
graph
node
learning
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.)
Granted
Application number
CN202211523157.3A
Other languages
English (en)
Other versions
CN115600012B (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 CN202211523157.3A priority Critical patent/CN115600012B/zh
Publication of CN115600012A publication Critical patent/CN115600012A/zh
Application granted granted Critical
Publication of CN115600012B publication Critical patent/CN115600012B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于知识增强和结构对比的API推荐方法,包括以下步骤:步骤1,代码预处理构图;解析源代码,提取方法、API和结构节点以及它们之间的关系,构成调用关系图和层次结构图;步骤2,知识增强的图嵌入学习;使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,同时用翻译模型TransH学习层次结构图中的实体和关系的嵌入表示;步骤3,多任务学习;包括主要的API推荐任务和辅助的对比学习任务。本发明的有益效果是:本发明提出了知识增强的图嵌入学习,使得方法和API的嵌入向量中不仅建模了调用交互还融合了代码中的层次结构信息,优化了方法和API的表示,达到更准确的推荐效果。

Description

一种基于知识增强和结构对比的API推荐方法
技术领域
本发明涉及数据处理领域,尤其涉及一种基于知识增强和结构对比的API推荐方法。
背景技术
在现代软件开发中,随着软件系统开发需求的增加,软件开发人员的负担也随之增加。应用程序编程接口(Application Programmable Interface,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,知识增强的图嵌入学习;使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,同时用翻译模型TransH学习层次结构图中的实体和关系的嵌入表示。
步骤3,多任务学习;包括主要的API推荐任务和辅助的对比学习任务。
作为本发明的进一步改进,在所述步骤1中,还包括:
步骤10,使用静态分析工具解析源代码。
步骤11,提取所有方法节点集合
Figure 214014DEST_PATH_IMAGE001
、所有API节点集合
Figure 967207DEST_PATH_IMAGE002
和所有的实体节点集合
Figure 582996DEST_PATH_IMAGE003
, 提取边集合的方法和API之间的调用连接集合,以及边集合实体之间的层次结构集合。
步骤12,基于步骤11的节点集合和边集合,构建调用关系图
Figure 548678DEST_PATH_IMAGE004
和层次结构图
Figure 933523DEST_PATH_IMAGE005
作为本发明的进一步改进,在所述步骤12中,构建的调用关系图
Figure 857616DEST_PATH_IMAGE004
和层次结构图
Figure 695122DEST_PATH_IMAGE005
具体如下:
调用关系图
Figure 730074DEST_PATH_IMAGE004
:对于每一个在项目中的方法
Figure 235005DEST_PATH_IMAGE006
和方法
Figure 64421DEST_PATH_IMAGE007
中调用的API
Figure 920381DEST_PATH_IMAGE008
,在调用关 系图
Figure 493445DEST_PATH_IMAGE009
中增加一条边,这个图最终表示为
Figure 829445DEST_PATH_IMAGE010
,其中
Figure 95341DEST_PATH_IMAGE011
意味着方法
Figure 907439DEST_PATH_IMAGE006
调用过API
Figure 549773DEST_PATH_IMAGE012
,否则
Figure 763717DEST_PATH_IMAGE013
层次结构图
Figure 200514DEST_PATH_IMAGE005
:通过程序分析,将有需要的层次结构信息表示为知识图谱的形式
Figure 499909DEST_PATH_IMAGE014
, 其中
Figure 414775DEST_PATH_IMAGE015
是关系的集合,包括属于类、属于包和属于项 目。
作为本发明的进一步改进,在所述步骤2中,使用图卷积神经网络GCN在调用关系 图上传播信息来细化方法和API的初始嵌入表示,是指对于调用关系图上的方法节点和API 节点,使用其ID嵌入作为初始表示
Figure 748805DEST_PATH_IMAGE016
Figure 356503DEST_PATH_IMAGE017
,接着使用图卷积神经网络递归地传播初始 表示,以利用高阶连通性来优化初始表示。
作为本发明的进一步改进,在所述步骤2中,使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,具体如下:
步骤S1,先计算图上每个节点的自我网络表示
Figure 408773DEST_PATH_IMAGE018
Figure 861751DEST_PATH_IMAGE019
,公式如下:
Figure 315866DEST_PATH_IMAGE020
Figure 94466DEST_PATH_IMAGE021
其中,
Figure 634032DEST_PATH_IMAGE022
表示卷积的层数,从0开始,最大为
Figure 890701DEST_PATH_IMAGE023
层;
Figure 199323DEST_PATH_IMAGE024
表示方法节点
Figure 883245DEST_PATH_IMAGE006
的邻居,
Figure 644527DEST_PATH_IMAGE025
表 示API节点
Figure 970467DEST_PATH_IMAGE008
的邻居;
Figure 868015DEST_PATH_IMAGE026
表示方法节点
Figure 988418DEST_PATH_IMAGE006
的度数,
Figure 236997DEST_PATH_IMAGE027
表示API节点
Figure 101048DEST_PATH_IMAGE008
的度数。
步骤S2,将节点本身的表示
Figure 118682DEST_PATH_IMAGE028
/
Figure 409986DEST_PATH_IMAGE029
和节点的自我网络的表示
Figure 880282DEST_PATH_IMAGE030
/
Figure 282444DEST_PATH_IMAGE031
聚合 到一起,对节点的表示进行更新,公式如下:
Figure 154586DEST_PATH_IMAGE032
Figure 882370DEST_PATH_IMAGE033
步骤S3,经过了
Figure 839962DEST_PATH_IMAGE023
层卷积层后,获得了节点
Figure 311394DEST_PATH_IMAGE034
Figure 303621DEST_PATH_IMAGE035
的多种表示,把节点的每一层的表 示连接起来,得到节点
Figure 671149DEST_PATH_IMAGE034
Figure 381616DEST_PATH_IMAGE008
的最终表示
Figure 125581DEST_PATH_IMAGE036
Figure 972314DEST_PATH_IMAGE037
,公式如下:
Figure 41901DEST_PATH_IMAGE038
Figure 708506DEST_PATH_IMAGE039
其中,
Figure 521741DEST_PATH_IMAGE040
表示连接操作。
作为本发明的进一步改进,在所述步骤2中,用翻译模型TransH学习层次结构图中 的实体和关系的嵌入表示,是指对于层次结构图中的三元组
Figure 222981DEST_PATH_IMAGE041
,实体节点(头节点
Figure 197890DEST_PATH_IMAGE042
、尾节点
Figure 882949DEST_PATH_IMAGE043
)和关系边(
Figure 234296DEST_PATH_IMAGE044
),同样使用其ID嵌入作为初始表示
Figure 55622DEST_PATH_IMAGE045
Figure 935853DEST_PATH_IMAGE046
Figure 842629DEST_PATH_IMAGE047
,然后使用翻译模型 TransH翻译层次结构图中节点和关系构成的三元组,在这个过程中优化实体节点的嵌入表 示,它假设每个关系都拥有一个超平面,头部实体和尾部实体之间的转换只有投射到同一 个超平面上才有效,它为三元组定义了一个评分函数如下:
Figure 997667DEST_PATH_IMAGE048
其中,越低的分意味着这个三元组的可信程度越高,
Figure 673499DEST_PATH_IMAGE049
Figure 255790DEST_PATH_IMAGE050
是投影的实体向量, 投影方式如下:
Figure 384283DEST_PATH_IMAGE051
Figure 77433DEST_PATH_IMAGE052
其中,
Figure 873350DEST_PATH_IMAGE053
是关系
Figure 360963DEST_PATH_IMAGE044
的学习向量,为对应超平面的投影向量,层次结构图上的实体节 点经过TransH的翻译之后,得到了其包含结构信息的嵌入表示。
作为本发明的进一步改进,在所述步骤3中,主要的API推荐任务,是将所述步骤2中通过GCN得到的调用关系图中的方法和API节点表示和通过TransH得到的层次结构图中的实体表示进行联合学习来增强方法和API节点表示。
作为本发明的进一步改进,在所述步骤3中,主要的API推荐任务,具体步骤如下:
步骤A1,建立一组方法/API—实体对齐集合
Figure 711173DEST_PATH_IMAGE054
, 其中每一个
Figure 208014DEST_PATH_IMAGE055
表示
Figure 592859DEST_PATH_IMAGE056
可以映射到层次结构图中的实体
Figure 516952DEST_PATH_IMAGE057
,联合学习函数定义如下:
Figure 885617DEST_PATH_IMAGE058
其中,
Figure 654990DEST_PATH_IMAGE059
表示方法
Figure 894341DEST_PATH_IMAGE007
调用API
Figure 989336DEST_PATH_IMAGE012
的概率,和
Figure 579717DEST_PATH_IMAGE060
是方法嵌入向量
Figure 152781DEST_PATH_IMAGE036
和API嵌入 向量
Figure 777798DEST_PATH_IMAGE037
通过对应实体嵌入
Figure 43694DEST_PATH_IMAGE045
Figure 855792DEST_PATH_IMAGE046
增强后的嵌入向量:
Figure 232547DEST_PATH_IMAGE061
Figure 446490DEST_PATH_IMAGE062
步骤A2,为了训练主要的API推荐任务的网络参数,使用一个基于最大边际的损失 函数,其基本思想是确保反例的内积比正例的内积小于预先定义的边界
Figure 883288DEST_PATH_IMAGE063
Figure 448262DEST_PATH_IMAGE064
其中,
Figure 363128DEST_PATH_IMAGE065
表示训练集三元组,L REC 表示推荐任务的 损失函数。
作为本发明的进一步改进,在所述步骤3中,在辅助的对比学习任务中,从结构方面构建方法和API的正负样本对,具体步骤如下:
步骤B1,从GCN模型偶数层的输出中获得同构邻域的表示。
步骤B2,将方法自身的嵌入向量与偶数层GCN对应输出的嵌入向量视为正对(即,
Figure 697157DEST_PATH_IMAGE066
),不同的节点视为负样本(即,
Figure 304856DEST_PATH_IMAGE067
),提出结 构对比学习目标,最小化正样本对之间的距离,公式如下所示:
Figure 91547DEST_PATH_IMAGE068
其中,
Figure 75683DEST_PATH_IMAGE069
是衡量两个向量之间的相似度的余弦函数,
Figure 529798DEST_PATH_IMAGE070
是温度超参数,类似 地,将API自身的嵌入向量与偶数层GCN对应输出的嵌入向量视为正对(即,
Figure 308398DEST_PATH_IMAGE071
, 不同的节点视为负样(即,
Figure 582385DEST_PATH_IMAGE072
),提出结构对比学习目标,最小化正样本 对之间的距离,得到API方面的结构对比损失函数 L I CL ,公式如下所示:
Figure 104633DEST_PATH_IMAGE073
步骤B3,将方法和API的损失函数加权求和得到完整的结构对比目标函数:
Figure 147675DEST_PATH_IMAGE074
其中,
Figure 831598DEST_PATH_IMAGE075
是平衡结构对比学习中两种损失的权重超参数, L CL 是指的完整的结构对 比目标函数。
步骤B4,将提出的结构对比学习损失作为补充,利用多任务学习策略联合训练传统的排序损失和提出的对比学习损失:
Figure 858460DEST_PATH_IMAGE076
其中,
Figure 653240DEST_PATH_IMAGE077
是控制两个损失函数的权重超参数。
本发明的有益效果是:1.本发明提出了知识增强的图嵌入学习,将图卷积神经网络训练任务和知识图谱嵌入表示学习任务进行联合学习,使得方法和API的嵌入向量中不仅建模了调用交互还融合了代码中的层次结构信息,优化了方法和API的表示,以达到更准确的推荐效果;2.本发明提出了基于图结构的对比学习作为辅助任务,改善调用关系图中稀疏的API交互信号带来的图节点表征学习较差的问题,提高了方法和API表示的质量,同时,由于增加了正负样本,增强了训练集,降低了出现频次高的API对表征学习的影响,使得模型对低出现频率API的推荐效果更好。
附图说明
图1是本发明的原理框图。
具体实施方式
本发明公开了一种基于知识增强和结构对比的API推荐方法,它主要由三个阶段组成:1)代码预处理构图部分,解析源代码,提取方法、API和结构节点以及它们之间的关系,构成调用关系图和层次结构图;2)知识增强的图嵌入学习,使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,同时用翻译模型TransH学习层次结构图中的实体和关系的嵌入表示;3)多任务学习,主要任务是API推荐,辅助任务是对比学习。包括主要的API推荐任务和辅助的对比学习任务。在主要任务中,结合几种转移方案,将从层次结构图中学到的实体嵌入转移到方法和API的嵌入中,从而联合训练推荐任务与知识图谱嵌入模型,为方法和API引入更多的语义关系,更深层次地挖掘方法和API的关联。除了直接的方法和API之间的调用交互之外,一些潜在的联系,如在调用交互图上的高阶路径上连接的方法或API节点具有结构联系。因此,在辅助任务中,构建了结构和语义的样本对来进行对比学习,改进图神经网络得到的方法和API的嵌入表示。下面将对本发明进行清楚、完整的描述。
本发明公开的一种基于知识增强和结构对比的API推荐方法,包括:
步骤1,代码预处理构图;解析源代码,提取方法、API和结构节点以及它们之间的关系,构成调用关系图和层次结构图。该步骤具体包括:
步骤10,代码预处理构图部分中,使用静态分析工具Eclipse JDT解析源代码;
步骤11,提取所有方法节点集合
Figure 816368DEST_PATH_IMAGE001
、所有API节点集合
Figure 936771DEST_PATH_IMAGE002
和所有的实体(即,方法所 属的类、API所属的类、包和项目)节点集合
Figure 185350DEST_PATH_IMAGE003
。除了节点集合之外,边集合包含方法和API之 间的调用连接集合,以及实体之间的层次结构集合。
步骤12,基于这些节点集合和边集合,构建调用关系图
Figure 49401DEST_PATH_IMAGE004
和层次结构图
Figure 332614DEST_PATH_IMAGE005
。构图 的具体描述如下:
1)调用关系图
Figure 92760DEST_PATH_IMAGE004
:对于每一个在项目中的方法
Figure 828635DEST_PATH_IMAGE006
和方法
Figure 496377DEST_PATH_IMAGE007
中调用的API
Figure 899676DEST_PATH_IMAGE008
,在调用 关系图
Figure 361881DEST_PATH_IMAGE009
中增加一条边。这个图最终表示为
Figure 585052DEST_PATH_IMAGE010
,其中
Figure 790906DEST_PATH_IMAGE011
意味着方法
Figure 783132DEST_PATH_IMAGE006
调用过API
Figure 416239DEST_PATH_IMAGE012
,否则
Figure 126706DEST_PATH_IMAGE013
。调用交互图
Figure 136250DEST_PATH_IMAGE004
反映了方法和API之间的 基本关系。
2)层次结构图
Figure 717405DEST_PATH_IMAGE005
:在软件项目中,还有丰富的层次结构信息。如,在面向对象的程 序设计中,一个项目中会有很多类,负责不同的功能;每个类中会定义很多方法,来实现具 体的功能。通过程序分析,将这些结构信息表示为知识图谱的形式
Figure 786992DEST_PATH_IMAGE014
, 其中
Figure 719176DEST_PATH_IMAGE015
是关系的集合,包括属于类、属于包和属于项 目。
步骤2,知识增强的图嵌入学习;使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,同时用翻译模型TransH学习层次结构图中的实体和关系的嵌入表示。
知识增强的图嵌入学习部分,第一个模块是使用图神经网络GCN对调用关系图上的节点嵌入进行优化,第二个模块是使用翻译模型TransH学习层次结构图中的节点嵌入。接下来进行详细介绍。
1)对于调用关系图上的方法节点和API节点,使用其ID嵌入作为初始表示
Figure 532411DEST_PATH_IMAGE016
Figure 233651DEST_PATH_IMAGE017
,接着使用图卷积神经网络递归地传播初始表示,以利用高阶连通性来优化初始表示。 具体步骤如下:
步骤S1,首先计算图上每个节点的自我网络(即,这个点的邻居节点构成的网络) 表示
Figure 474139DEST_PATH_IMAGE018
Figure 893619DEST_PATH_IMAGE019
,公式如下:
Figure 244966DEST_PATH_IMAGE020
Figure 66292DEST_PATH_IMAGE021
其中,
Figure 235540DEST_PATH_IMAGE022
表示卷积的层数,从0开始,最大为
Figure 142316DEST_PATH_IMAGE023
层;
Figure 297354DEST_PATH_IMAGE024
表示方法节点
Figure 973185DEST_PATH_IMAGE006
的邻居,
Figure 555477DEST_PATH_IMAGE025
表 示API节点
Figure 683970DEST_PATH_IMAGE008
的邻居;
Figure 377119DEST_PATH_IMAGE026
表示方法节点
Figure 173037DEST_PATH_IMAGE006
的度数,
Figure 395071DEST_PATH_IMAGE027
表示API节点
Figure 276439DEST_PATH_IMAGE008
的度数。
步骤S2,然后,将节点本身的表示
Figure 507700DEST_PATH_IMAGE028
/
Figure 158124DEST_PATH_IMAGE029
和节点的自我网络的表示
Figure 816639DEST_PATH_IMAGE030
/
Figure 919724DEST_PATH_IMAGE031
聚合到一起,对节点的表示进行更新,公式如下:
Figure 954676DEST_PATH_IMAGE032
Figure 725186DEST_PATH_IMAGE033
步骤S3,经过了
Figure 820181DEST_PATH_IMAGE023
层卷积层后,获得了节点
Figure 410562DEST_PATH_IMAGE034
Figure 249205DEST_PATH_IMAGE035
的多种表示,把节点的每一层的表 示连接起来,得到节点
Figure 874222DEST_PATH_IMAGE034
Figure 874539DEST_PATH_IMAGE008
的最终表示
Figure 952216DEST_PATH_IMAGE036
Figure 328971DEST_PATH_IMAGE037
,公式如下:
Figure 808494DEST_PATH_IMAGE038
Figure 245291DEST_PATH_IMAGE039
其中,
Figure 810265DEST_PATH_IMAGE040
表示连接操作。
2)对于层次结构图中的三元组
Figure 725131DEST_PATH_IMAGE041
,实体节点(头节点
Figure 59161DEST_PATH_IMAGE042
、尾节点
Figure 666860DEST_PATH_IMAGE043
)和关系边 (
Figure 453550DEST_PATH_IMAGE044
),同样使用其ID嵌入作为初始表示
Figure 437686DEST_PATH_IMAGE045
Figure 626222DEST_PATH_IMAGE046
Figure 404822DEST_PATH_IMAGE047
。然后使用翻译模型TransH翻译层次结构 图中节点和关系构成的三元组,在这个过程中优化实体节点的嵌入表示。翻译模型TransH 学习基于不同关系的实体的不同表示。它假设每个关系都拥有一个超平面,头部实体和尾 部实体之间的转换只有投射到同一个超平面上才有效。它为三元组定义了一个评分函数如 下:
Figure 944388DEST_PATH_IMAGE048
其中,越低的分意味着这个三元组的可信程度越高。
Figure 201057DEST_PATH_IMAGE049
Figure 244100DEST_PATH_IMAGE050
是投影的实体向量, 投影方式如下:
Figure 928022DEST_PATH_IMAGE051
Figure 689304DEST_PATH_IMAGE052
其中,
Figure 749664DEST_PATH_IMAGE053
是关系
Figure 647213DEST_PATH_IMAGE044
的学习向量,为对应超平面的投影向量。层次结构图上的实体节 点经过TransH的翻译之后,得到了其包含结构信息的嵌入表示。
步骤3,多任务学习; 分为主要的API推荐任务和辅助的对比学习任务。主要的API推荐任务,是将步骤2中通过GCN得到的调用关系图中的方法和API节点表示和通过TransH得到的层次结构图中的实体表示进行联合学习来增强方法和API节点表示。具体步骤如下:
步骤A1,首先,建立了一组方法/API—实体对齐集合
Figure 33195DEST_PATH_IMAGE054
,其中每一个
Figure 281774DEST_PATH_IMAGE055
表示
Figure 145825DEST_PATH_IMAGE056
可以映射到层次结构图中的 实体
Figure 429038DEST_PATH_IMAGE057
。联合学习函数定义如下:
Figure 720343DEST_PATH_IMAGE058
其中,
Figure 456217DEST_PATH_IMAGE059
表示方法
Figure 858380DEST_PATH_IMAGE007
调用API
Figure 996100DEST_PATH_IMAGE012
的概率,
Figure 458305DEST_PATH_IMAGE078
Figure 681476DEST_PATH_IMAGE060
是方法嵌入向量
Figure 887330DEST_PATH_IMAGE036
和API嵌 入向量
Figure 879557DEST_PATH_IMAGE037
通过对应实体嵌入
Figure 778242DEST_PATH_IMAGE045
Figure 488710DEST_PATH_IMAGE046
增强后的嵌入向量:
Figure 967095DEST_PATH_IMAGE061
Figure 79408DEST_PATH_IMAGE062
步骤A2,接着,为了训练主要的API推荐任务的网络参数,使用一个基于最大边际 的损失函数。其基本思想是确保反例(即未观察到的API调用)的内积比正例(即观察到的 API调用)的内积小于预先定义的边界
Figure 883416DEST_PATH_IMAGE063
Figure 81179DEST_PATH_IMAGE064
其中,
Figure 628835DEST_PATH_IMAGE065
表示训练集三元组,L REC 表示推荐任务的 损失函数。
在辅助的对比学习任务中,本发明从结构方面构建方法和API的正负样本对,具体步骤如下:
步骤B1,由于调用关系图是二部图,在图上进行偶数次的信息传播时,就聚集了方法和API的同构邻居信息。通过这种方式,可以从GCN模型偶数层(如2,4,6)的输出中获得同构邻域的表示。
步骤B2,本发明将方法自身的嵌入向量与偶数层GCN对应输出的嵌入向量视为正 对(即,
Figure 330075DEST_PATH_IMAGE066
),不同的节点视为负样本(即,
Figure 570563DEST_PATH_IMAGE067
), 提出结构对比学习目标,最小化正样本对之间的距离,公式如下所示:
Figure 990043DEST_PATH_IMAGE068
其中,
Figure 75811DEST_PATH_IMAGE069
是衡量两个向量之间的相似度的余弦函数,
Figure 897136DEST_PATH_IMAGE070
是温度超参数。类似 地,将API自身的嵌入向量与偶数层GCN对应输出的嵌入向量视为正对(即,
Figure 308526DEST_PATH_IMAGE071
, 不同的节点视为负样(即,
Figure 215302DEST_PATH_IMAGE072
),提出结构对比学习目标,最小化正样本 对之间的距离,得到API方面的结构对比损失函数 L I CL ,公式如下所示:
Figure 104761DEST_PATH_IMAGE073
步骤B3,最后将方法和API的的损失函数加权求和得到完整的结构对比目标函数:
Figure 780593DEST_PATH_IMAGE074
其中,
Figure 362884DEST_PATH_IMAGE075
是平衡结构对比学习中两种损失的权重超参数, L CL 是指的完整的结构对 比目标函数。
本发明将提出的结构对比学习损失作为补充,利用多任务学习策略联合训练传统的排序损失和提出的对比学习损失:
Figure 756956DEST_PATH_IMAGE076
其中,
Figure 450106DEST_PATH_IMAGE077
是控制两个损失函数的权重超参数。
使用本发明进行API使用推荐的步骤如下:
(1)训练模型,使得模型达到最优推荐效果;
(2)将正在编程的方法输入已经训练好的模型中;
(3)模型允许,返回API推荐列表;
(4)软件开发人员根据当前代码段的需要选择API。
本发明的优点:
1. 提出了知识增强的图嵌入学习,将图卷积神经网络训练任务和知识图谱嵌入表示学习任务进行联合学习,使得方法和API的嵌入向量中不仅建模了调用交互还融合了代码中的层次结构信息,优化了方法和API的表示,以达到更准确的推荐效果。
2. 提出了基于图结构的对比学习作为辅助任务,改善调用关系图中稀疏的API交互信号带来的图节点表征学习较差的问题,提高了方法和API表示的质量。同时,由于增加了正负样本,增强了训练集,降低了出现频次高的API对表征学习的影响,使得模型对低出现频率API的推荐效果更好。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (9)

1.一种基于知识增强和结构对比的API推荐方法,其特征在于,包括以下步骤:
步骤1,代码预处理构图;解析源代码,提取方法、API和结构节点以及它们之间的关系,构成调用关系图和层次结构图;
步骤2,知识增强的图嵌入学习;使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,同时用翻译模型TransH学习层次结构图中的实体和关系的嵌入表示;
步骤3,多任务学习;包括主要的API推荐任务和辅助的对比学习任务。
2.根据权利要求1所述的API推荐方法,其特征在于,在所述步骤1中,还包括:
步骤10,使用静态分析工具解析源代码;
步骤11,提取所有方法节点集合
Figure 319256DEST_PATH_IMAGE001
、所有API节点集合
Figure 970817DEST_PATH_IMAGE002
和所有的实体节点集合
Figure 422658DEST_PATH_IMAGE003
,提取 边集合的方法和API之间的调用连接集合,以及边集合实体之间的层次结构集合;
步骤12,基于步骤11的节点集合和边集合,构建调用关系图
Figure 83447DEST_PATH_IMAGE004
和层次结构图
Figure 366661DEST_PATH_IMAGE005
3.根据权利要求2所述的API推荐方法,其特征在于,在所述步骤12中,构建的调用关系 图
Figure 657965DEST_PATH_IMAGE004
和层次结构图
Figure 393839DEST_PATH_IMAGE005
具体如下:
调用关系图
Figure 530423DEST_PATH_IMAGE004
:对于每一个在项目中的方法
Figure 871405DEST_PATH_IMAGE006
和方法
Figure 333611DEST_PATH_IMAGE007
中调用的API
Figure 556782DEST_PATH_IMAGE008
,在调用关系图
Figure 762635DEST_PATH_IMAGE009
中增加一条边,这个图最终表示为
Figure 754862DEST_PATH_IMAGE010
,其中
Figure 653548DEST_PATH_IMAGE011
意味 着方法
Figure 364015DEST_PATH_IMAGE006
调用过API
Figure 107980DEST_PATH_IMAGE012
,否则
Figure 485871DEST_PATH_IMAGE013
层次结构图
Figure 289879DEST_PATH_IMAGE005
:通过程序分析,将有需要的层次结构信息表示为知识图谱的形式
Figure 487643DEST_PATH_IMAGE014
, 其中
Figure 238561DEST_PATH_IMAGE015
是关系的集合,包括属于类、属于包和属于项 目。
4.根据权利要求1所述的API推荐方法,其特征在于,在所述步骤2中,使用图卷积神经 网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,是指对于调用关系图 上的方法节点和API节点,使用其ID嵌入作为初始表示
Figure 205380DEST_PATH_IMAGE016
Figure 445868DEST_PATH_IMAGE017
,接着使用图卷积神经网 络递归地传播初始表示,以利用高阶连通性来优化初始表示。
5.根据权利要求4所述的API推荐方法,其特征在于,在所述步骤2中,使用图卷积神经网络GCN在调用关系图上传播信息来细化方法和API的初始嵌入表示,具体步骤如下:
步骤S1,先计算图上每个节点的自我网络表示
Figure 865348DEST_PATH_IMAGE018
Figure 482275DEST_PATH_IMAGE019
,公式如下:
Figure 303600DEST_PATH_IMAGE020
Figure 918252DEST_PATH_IMAGE021
其中,
Figure 825028DEST_PATH_IMAGE022
表示卷积的层数,从0开始,最大为
Figure 714487DEST_PATH_IMAGE023
层;
Figure 921477DEST_PATH_IMAGE024
表示方法节点
Figure 707031DEST_PATH_IMAGE006
的邻居,
Figure 366682DEST_PATH_IMAGE025
表示API 节点
Figure 59832DEST_PATH_IMAGE008
的邻居;
Figure 793432DEST_PATH_IMAGE026
表示方法节点
Figure 835642DEST_PATH_IMAGE006
的度数,
Figure 717010DEST_PATH_IMAGE027
表示API节点
Figure 213850DEST_PATH_IMAGE008
的度数;
步骤S2,将节点本身的表示
Figure 864274DEST_PATH_IMAGE028
/
Figure 726051DEST_PATH_IMAGE029
和节点的自我网络的表示
Figure 94716DEST_PATH_IMAGE030
/
Figure 129668DEST_PATH_IMAGE031
聚合到一 起,对节点的表示进行更新,公式如下:
Figure 900178DEST_PATH_IMAGE032
Figure 995173DEST_PATH_IMAGE033
步骤S3,经过了
Figure 851133DEST_PATH_IMAGE023
层卷积层后,获得了节点
Figure 893039DEST_PATH_IMAGE034
Figure 252476DEST_PATH_IMAGE035
的多种表示,把节点的每一层的表示连 接起来,得到节点
Figure 518372DEST_PATH_IMAGE034
Figure 596049DEST_PATH_IMAGE008
的最终表示
Figure 238383DEST_PATH_IMAGE036
Figure 983485DEST_PATH_IMAGE037
,公式如下:
Figure 420283DEST_PATH_IMAGE038
Figure 985256DEST_PATH_IMAGE039
其中,
Figure 165702DEST_PATH_IMAGE040
表示连接操作。
6.根据权利要求4所述的API推荐方法,其特征在于,在所述步骤2中,用翻译模型 TransH学习层次结构图中的实体和关系的嵌入表示,是指对于层次结构图中的三元组
Figure 702994DEST_PATH_IMAGE041
,实体节点(头节点
Figure 310693DEST_PATH_IMAGE042
、尾节点
Figure 628542DEST_PATH_IMAGE043
)和关系边(
Figure 347099DEST_PATH_IMAGE044
),同样使用其ID嵌入作为初始表示
Figure 801214DEST_PATH_IMAGE045
Figure 579814DEST_PATH_IMAGE046
Figure 322642DEST_PATH_IMAGE047
,然后使用翻译模型TransH翻译层次结构图中节点和关系构成的三元组,在这个过 程中优化实体节点的嵌入表示,它假设每个关系都拥有一个超平面,头部实体和尾部实体 之间的转换只有投射到同一个超平面上才有效,它为三元组定义了一个评分函数如下:
Figure 844890DEST_PATH_IMAGE048
其中,越低的分意味着这个三元组的可信程度越高,
Figure 153512DEST_PATH_IMAGE049
Figure 368593DEST_PATH_IMAGE050
是投影的实体向量,投影 方式如下:
Figure 333138DEST_PATH_IMAGE051
Figure 924656DEST_PATH_IMAGE052
其中,
Figure 87784DEST_PATH_IMAGE053
是关系
Figure 208187DEST_PATH_IMAGE044
的学习向量,为对应超平面的投影向量,层次结构图上的实体节点经 过TransH的翻译之后,得到了其包含结构信息的嵌入表示。
7.根据权利要求1所述的API推荐方法,其特征在于,在所述步骤3中,主要的API推荐任务,是将所述步骤2中通过GCN得到的调用关系图中的方法和API节点表示和通过TransH得到的层次结构图中的实体表示进行联合学习来增强方法和API节点表示。
8.根据权利要求7所述的API推荐方法,其特征在于,在所述步骤3中,主要的API推荐任务,具体步骤如下:
步骤A1,建立一组方法/API—实体对齐集合
Figure 925607DEST_PATH_IMAGE054
,其中 每一个
Figure 789658DEST_PATH_IMAGE055
表示
Figure 807292DEST_PATH_IMAGE056
可以映射到层次结构图中的实体
Figure 364176DEST_PATH_IMAGE057
,联合学习函数定义如下:
Figure 365630DEST_PATH_IMAGE058
其中,
Figure 33371DEST_PATH_IMAGE059
表示方法
Figure 905513DEST_PATH_IMAGE007
调用API
Figure 633297DEST_PATH_IMAGE012
的概率,
Figure 856468DEST_PATH_IMAGE060
Figure 265584DEST_PATH_IMAGE061
是方法嵌入向量
Figure 257811DEST_PATH_IMAGE036
和API嵌入向 量
Figure 422076DEST_PATH_IMAGE037
通过对应实体嵌入
Figure 866963DEST_PATH_IMAGE045
Figure 79770DEST_PATH_IMAGE046
增强后的嵌入向量:
Figure 192083DEST_PATH_IMAGE062
Figure 996091DEST_PATH_IMAGE063
步骤A2,为了训练主要的API推荐任务的网络参数,使用一个基于最大边际的损失函数,其基本思想是确保反例的内积比正例的内积小于预先定义的边界:
Figure 459433DEST_PATH_IMAGE064
其中,
Figure 7089DEST_PATH_IMAGE065
表示训练集三元组,L REC 表示推荐任务的损失 函数。
9.根据权利要求1所述的API推荐方法,其特征在于,在所述步骤3中,在辅助的对比学习任务中,从结构方面构建方法和API的正负样本对,具体步骤如下:
步骤B1,从GCN模型偶数层的输出中获得同构邻域的表示;
步骤B2,将方法自身的嵌入向量与偶数层GCN对应输出的嵌入向量视为正对,即,
Figure 973908DEST_PATH_IMAGE066
,不同的节点视为负样本,即,
Figure 948817DEST_PATH_IMAGE067
,提出结构 对比学习目标,最小化正样本对之间的距离,公式如下所示:
Figure 837139DEST_PATH_IMAGE068
其中,
Figure 188486DEST_PATH_IMAGE069
是衡量两个向量之间的相似度的余弦函数,
Figure 275390DEST_PATH_IMAGE070
是温度超参数,类似地,将 API自身的嵌入向量与偶数层GCN对应输出的嵌入向量视为正对,即,
Figure 686780DEST_PATH_IMAGE071
,不同 的节点视为负样,即,
Figure 593556DEST_PATH_IMAGE072
,提出结构对比学习目标,最小化正样本对之间 的距离,得到API方面的结构对比损失函数L I CL ,公式如下所示:
Figure 483015DEST_PATH_IMAGE073
步骤B3,将方法和API的损失函数加权求和得到完整的结构对比目标函数:
Figure 424426DEST_PATH_IMAGE074
其中,
Figure 944400DEST_PATH_IMAGE075
是平衡结构对比学习中两种损失的权重超参数, L CL 是指的完整的结构对比目 标函数;
步骤B4,将提出的结构对比学习损失作为补充,利用多任务学习策略联合训练传统的排序损失和提出的对比学习损失:
Figure 338472DEST_PATH_IMAGE076
其中,
Figure 31622DEST_PATH_IMAGE077
是控制两个损失函数的权重超参数。
CN202211523157.3A 2022-12-01 2022-12-01 一种基于知识增强和结构对比的api推荐方法 Active CN115600012B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211523157.3A CN115600012B (zh) 2022-12-01 2022-12-01 一种基于知识增强和结构对比的api推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211523157.3A CN115600012B (zh) 2022-12-01 2022-12-01 一种基于知识增强和结构对比的api推荐方法

Publications (2)

Publication Number Publication Date
CN115600012A true CN115600012A (zh) 2023-01-13
CN115600012B CN115600012B (zh) 2023-04-21

Family

ID=84852042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211523157.3A Active CN115600012B (zh) 2022-12-01 2022-12-01 一种基于知识增强和结构对比的api推荐方法

Country Status (1)

Country Link
CN (1) CN115600012B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573084A (zh) * 2023-08-02 2024-02-20 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190312898A1 (en) * 2018-04-10 2019-10-10 Cisco Technology, Inc. SPATIO-TEMPORAL ANOMALY DETECTION IN COMPUTER NETWORKS USING GRAPH CONVOLUTIONAL RECURRENT NEURAL NETWORKS (GCRNNs)
US20200372088A1 (en) * 2019-05-20 2020-11-26 Fujitsu Limited Recommending web api's and associated endpoints
US20210110458A1 (en) * 2019-10-09 2021-04-15 Target Brands, Inc. Faceted item recommendation system
EP3893163A1 (en) * 2020-04-09 2021-10-13 Naver Corporation End-to-end graph convolution network
CN113590900A (zh) * 2021-07-29 2021-11-02 南京工业大学 一种融合动态知识图谱的序列推荐方法
EP3929853A1 (en) * 2020-06-26 2021-12-29 Facebook, Inc. Systems and methods for feature engineering based on graph learning
US20220067030A1 (en) * 2020-08-31 2022-03-03 Microsoft Technology Licensing, Llc Learning graph representations using hierarchical transformers for content recommendation
CN114416159A (zh) * 2022-04-01 2022-04-29 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 基于信息增强调用序列的api推荐方法及装置
CN114817745A (zh) * 2022-05-19 2022-07-29 大连海事大学 一种图嵌入增强的Web API推荐方法和系统
CN115186097A (zh) * 2022-01-07 2022-10-14 东北大学 一种基于知识图谱和强化学习的交互式推荐方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190312898A1 (en) * 2018-04-10 2019-10-10 Cisco Technology, Inc. SPATIO-TEMPORAL ANOMALY DETECTION IN COMPUTER NETWORKS USING GRAPH CONVOLUTIONAL RECURRENT NEURAL NETWORKS (GCRNNs)
US20200372088A1 (en) * 2019-05-20 2020-11-26 Fujitsu Limited Recommending web api's and associated endpoints
US20210110458A1 (en) * 2019-10-09 2021-04-15 Target Brands, Inc. Faceted item recommendation system
EP3893163A1 (en) * 2020-04-09 2021-10-13 Naver Corporation End-to-end graph convolution network
EP3929853A1 (en) * 2020-06-26 2021-12-29 Facebook, Inc. Systems and methods for feature engineering based on graph learning
US20220067030A1 (en) * 2020-08-31 2022-03-03 Microsoft Technology Licensing, Llc Learning graph representations using hierarchical transformers for content recommendation
CN113590900A (zh) * 2021-07-29 2021-11-02 南京工业大学 一种融合动态知识图谱的序列推荐方法
CN115186097A (zh) * 2022-01-07 2022-10-14 东北大学 一种基于知识图谱和强化学习的交互式推荐方法
CN114416159A (zh) * 2022-04-01 2022-04-29 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) 基于信息增强调用序列的api推荐方法及装置
CN114817745A (zh) * 2022-05-19 2022-07-29 大连海事大学 一种图嵌入增强的Web API推荐方法和系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117573084A (zh) * 2023-08-02 2024-02-20 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法
CN117573084B (zh) * 2023-08-02 2024-04-12 广东工业大学 一种基于逐层融合抽象语法树的代码补全方法

Also Published As

Publication number Publication date
CN115600012B (zh) 2023-04-21

Similar Documents

Publication Publication Date Title
Feilmayr et al. An analysis of ontologies and their success factors for application to business
CN113191357B (zh) 基于图注意力网络的多层次图像-文本匹配方法
Saini et al. Extractive single document summarization using binary differential evolution: Optimization of different sentence quality measures
CN113239131B (zh) 基于元学习的少样本知识图谱补全方法
CN112925857A (zh) 基于谓语类型预测关联的数字信息驱动的系统和方法
CN116090360B (zh) 一种基于多模态实体对齐的rpa流程推荐方法
CN115600012A (zh) 一种基于知识增强和结构对比的api推荐方法
Iyer et al. VeeAlign: multifaceted context representation using dual attention for ontology alignment
CN113918833A (zh) 通过社交网络关系的图卷积协同过滤实现的产品推荐方法
CN114332519A (zh) 一种基于外部三元组和抽象关系的图像描述生成方法
CN116089645A (zh) 一种基于层次化风格的条件文本-电商图片检索方法和系统
CN115631008A (zh) 商品推荐方法、装置、设备及介质
CN113111657A (zh) 一种跨语言知识图谱对齐与融合方法、装置及存储介质
CN116561264A (zh) 一种基于知识图谱的智能问答系统的构建方法
Assi et al. Data linking over RDF knowledge graphs: A survey
Fu et al. Robust representation learning for heterogeneous attributed networks
Cai et al. Semantic and correlation disentangled graph convolutions for multilabel image recognition
CN111339258B (zh) 基于知识图谱的大学计算机基础习题推荐方法
WO2021082444A1 (zh) 用于大规模脑病历分割的多粒度Spark超信任模糊方法
CN116955647A (zh) 一种基于知识图谱和神经网络的推荐算法
CN116450938A (zh) 一种基于图谱的工单推荐实现方法及系统
CN115545833A (zh) 一种基于用户社交信息的推荐方法及系统
CN112836511B (zh) 基于协同关系的知识图谱上下文嵌入方法
CN115455302A (zh) 一种基于优化图注意网络的知识图谱推荐方法
Hou et al. Binary Equalization Optimizer Based on Variable Order Transfer Functions to Solve High Dimensional Feature Selection Problem.

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