CN110297628B - 一种基于同源相关性的api推荐方法 - Google Patents

一种基于同源相关性的api推荐方法 Download PDF

Info

Publication number
CN110297628B
CN110297628B CN201910502764.3A CN201910502764A CN110297628B CN 110297628 B CN110297628 B CN 110297628B CN 201910502764 A CN201910502764 A CN 201910502764A CN 110297628 B CN110297628 B CN 110297628B
Authority
CN
China
Prior art keywords
api
recommendation
homology
apis
score2
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
CN201910502764.3A
Other languages
English (en)
Other versions
CN110297628A (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.)
Southeast University
Original Assignee
Southeast University
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 Southeast University filed Critical Southeast University
Priority to CN201910502764.3A priority Critical patent/CN110297628B/zh
Publication of CN110297628A publication Critical patent/CN110297628A/zh
Application granted granted Critical
Publication of CN110297628B publication Critical patent/CN110297628B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • 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

Abstract

本发明公开了一种基于同源相关性的API(Application Programming Interface,应用程序接口)推荐方法,在得到新的API推荐需求之后,首先,根据余弦相似度从历史信息库中筛选出前k个相似的历史信息,提取这k个历史信息所对应的API,根据这些API出现频率计算推荐分数Score1。其次,按照推荐分数Score1的大小对API标记权重,计算同一第三方库中API总权重,通过归一化得到API同源影响分数Score2。最后,API推荐分数Score1和同源影响分数Score2进行求和,获得API推荐分数Score,进行API推荐。本推荐技术考虑API同源相关性,更符合实际编程场景需要,提高开发和维护效率,系统安全性更高。

Description

一种基于同源相关性的API推荐方法
技术领域
本发明涉及评估方法,具体涉及一种基于同源相关性的API推荐方法,属于API推荐技术领域。
背景技术
API(Application Programming Interface,即应用程序编程接口)推荐是代码推荐领域的一个重要部分,随着第三方库的增多,其包含的功能也越来越丰富,在开发项目的过程中,第三方库的使用可以减少项目中的代码量,进而减少代码测试的工作量。但是由于第三方库中庞大的API数量,开发人员在选择合适的API方法时需要阅读相关介绍文档以及查看相关示例代码,需要花费大量的时间来选择合适的API方法,因此自动API推荐对提高软件开发效率,增加第三方库的有效使用具有重要意义。
API推荐的方法主要有利用k近邻或者循环神经网络或者其他机器学习方法进行训练,这种方法是通过把代码中的方法转化为API向量,通过机器学习后进行推荐。另外针对在项目测试演进过程中,根据需求进行API推荐,也有根据历史信息和API文档描述进行API推荐的方法,但其在基于需求推荐的过程中并没有考虑同源API的使用,忽视了编程人员习惯使用同一第三方库API的问题,使得开发效率降低,维护成本较高。
发明内容
本发明正是针对现有技术中存在的问题,提供一种基于同源相关性的API推荐方法,该方法利用余弦相似度,进行历史信息对应方法推荐分析和同源API对推荐过程影响分析。结合API同源相关性对API进行推荐,解决API推荐中第三方库引用较多的问题,提高开发效率,降低维护成本,系统安全性更高。
为了实现上述目的,本发明的技术方案如下,一种基于同源相关性的API推荐方法,包括如下步骤:
步骤1)获得相似历史信息:通过余弦相似度计算获得新需求和历史信息之间的相似度值,获取相似度排名前k的历史信息;
步骤2)获得API推荐分数Score1:在排名前k的历史信息中,计算每个API的推荐分数Score1;
步骤3)获得API同源影响分数Score2:根据步骤2)的推荐分数Score1对API进行排序,并标记每个API权重,根据API找到对应第三方库,计算同一第三方库(即同源)中API的总权重,通过归一化得到API同源影响分数Score2;
步骤4)API推荐:将步骤2)得到的API的推荐分数Score1和步骤3)得到的API同源影响分数Score2进行求和得到API推荐分数Score。根据得到的推荐分数Score进行API推荐,推荐分数越高越优先推荐。
公式:Score=Score1+Score2。
本发明首先根据余弦相似度从历史信息库中筛选出前k个相似的历史信息,提取这k个历史信息所对应的API,根据这些API出现频率计算推荐分数Score1。其次,按照推荐分数Score1的大小对API标记权重,计算同一第三方库中API总权重,通过归一化得到API同源影响分数Score2。最后,API推荐分数Score1和同源影响分数Score2进行求和,获得API推荐分数Score,进行API推荐。
本发明方法所述步骤1)中,新需求来自用户输入,用符号NewQ表示,NewQ中包含字段{new_description},new_description代表新需求对应描述。历史信息库来自项目与事务跟踪工具,历史信息的集合{Q1,Q2,…,Qm},Qi中的字段为{description,methods},(1≤i≤m)。description代表历史信息对应描述,methods代表历史信息对应方法的集合。通过计算new_description和所有历史信息的description之间的余弦相似度,获得相似度排名前k的历史信息(k>0,k为整数,k为用户输入)。
本发明方法所述步骤2)中对于名为m的API,其推荐分数Score1(m)的计算方法为:
公式:
其中,Countm表示前k个相似历史信息中m出现的次数,k表示选择相似历史信息的数目。
本发明方法所述步骤3)中API同源影响分数Score2具体计算流程为:
(a)根据推荐分数Score1从大到小将API进行排序,标记其权重为n,n-1……(逐次减一),n为API总个数。如果API对应的Score1相同则权重也标记相同。
(b)计算相同第三方库(即同源)的API权重之和,将得到的所有权重之和进行归一化,得到同源影响分数Score2。
相同第三方库(即同源)的API权重之和计算方法为:
公式:Sumtt=∑Weighttt
其中,Sumtt表示名为tt的第三方库中API权重之和,Weighttt表示tt中每个API的权重
同源影响分数Score2计算方法为:
公式:
其中,Score2(m)表示名为m的API的同源影响分数Score2,Sumlibm中libm表示m所在的第三方库,Sumlibm表示该第三方库中API的权重之和,∑Sumlib表示所有第三方库的总权重。
相对于现有技术,本发明具有如下优点,本发明结合历史信息对应方法推荐分析和同源API对推荐过程影响分析,具体优点如下:
(1)推荐过程更严谨合理,推荐结果更符合编程人员习惯。编程人员在使用API时习惯使用相同第三方库的API,因此在推荐过程中结合API同源相关性的影响进行API推荐,推荐结果更准确,也更利于编程人员使用API;
(2)提高开发和维护效率,因为同源API之间契合度高、兼容性好,所以基于同源相关性的API推荐方法,在开发过程中可以有效提高开发效率,更易于测试和维护;
(3)系统的安全性更高,同源API内聚度更高,而且可避免引入过多的第三方库,数据对象更多的在同源API中流动,信息泄露可能性降低,可提高系统安全性。
附图说明
图1是本发明方法的流程图。
具体实施方式:
为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。
实施例1:参见图1,一种基于同源相关性的API推荐方法,所述方法包括以下步骤:
步骤1)获得相似历史信息:通过余弦相似度计算获得新需求和历史信息之间的相似度值,获取相似度排名前k的历史信息。新需求来自用户输入,用符号NewQ表示,NewQ中包含字段{new_description},new_description代表新需求对应描述。历史信息库来自项目与事务跟踪工具,历史信息的集合{Q1,Q2,…,Qm},Qi中的字段为{description,methods},(1≤i≤m)。description代表历史信息对应描述,methods代表历史信息对应方法的集合。通过计算new_description和所有历史信息的description之间的余弦相似度,获得相似度排名前k的历史信息(k>0,k为整数,k为用户输入)。相似度计算如下,通过TF-IDF计算将新需求new_description和历史信息description转化成向量表示,即Vnew_description(NewQ),Vdescription(Qi),然后计算两者的余弦相似度即SimHISTORY(NewQ,Qi);
公式:SimHISTORY(NewQ,Qi)=Cosine(Vnew_description(NewQ),VDescription(Qi),)
步骤2)获得API推荐分数Score1:在排名前k的历史信息中,计算每个API的推荐分数Score1。对于名为m的API,其推荐分数Score1(m)的计算方法为:
公式:
其中,Countm表示前k个相似历史信息中m出现的次数,k表示选择相似历史信息的数目。
步骤3)获得API同源影响分数Score2:根据步骤2)的推荐分数Score1对API进行排序,并标记每个API权重,根据API找到对应第三方库,计算同一第三方库(即同源)中API的总权重,通过归一化得到API同源影响分数Score2。API同源影响分数Score2具体计算流程为:
(a)根据推荐分数Score1从大到小将API进行排序,标记其权重为n,n-1……(逐次减一),n为API总个数。如果API对应的Score1相同则权重也标记相同。
(b)计算相同第三方库(即同源)的API权重之和,将得到的所有权重之和进行归一化,得到同源影响分数Score2。
相同第三方库(即同源)的API权重之和计算方法为:
公式:Sumtt=∑Weighttt
其中,Sumtt表示名为tt的第三方库中API权重之和,Weighttt表示tt中每个API的权重
同源影响分数Score2计算方法为:
公式:
其中,Score2(m)表示名为m的API的同源影响分数Score2,Sumlibm中libm表示m所在的第三方库,Sumlibm表示该第三方库中API的权重之和,∑Sumlib表示所有第三方库的总权重。
步骤4)API推荐:将步骤2)得到的API的推荐分数Score1和步骤3)得到的API同源影响分数Score2进行求和得到API推荐分数Score。根据得到的推荐分数Score进行API推荐,推荐分数越高越优先推荐。
公式:Score=Score1+Score2。
具体应用实施例:
为了方便描述,我们假定有如下简化的应用实例:新需求和历史信息如下所示:
新需求NewQ:
{description:KMS client/server should implement support forgenerating encrypted keys and decrypting them via the REST API beingintroduced by HADOOP-10719.}
历史信息库:
根据我们前面提到的推荐步骤,依次实施:
第一步,计算新需求和历史信息的余弦相似度,得到相似度排名前k的历史信息,本例中得到的排名前三的历史信息为:
第二步,获得API推荐分数Score1,API m的推荐分数Score1(m)的计算方法为:
公式:
按此方法计算得到的API对应Score1如表1。
表1.API及对应Score1值
API Score1
LogFactory.getLog 1
Response.ok 1
Base64.encodeBase64String 0.67
Base64.decodeBase64 0.67
Preconditions.checkArgument 0.67
FilterConfig.getServletContext 0.33
Preconditions.checkNotNull 0.33
IOUtils.copy 0.33
第三步:获得API同源影响分数Score2。
首先,根据第二步的推荐分数Score1对API进行排序,标记其权重为n,n-1……逐次减一,n为API总个数。如果API对应的Score1相同则权重也标记相同,根据此方法得到的权重为:
表2.API及对应权重
API 权重
LogFactory.getLog 8
Response.ok 8
Base64.encodeBase64String 7
Base64.decodeBase64 7
Preconditions.checkArgument 7
FilterConfig.getServletContext 6
Preconditions.checkNotNull 6
IOUtils.copy 6
然后,根据API找到对应第三方库,计算相同第三方库中API的权重之和,将得到的所有权重之和进行归一化,得到同源影响分数Score2。
按照此方法得到相同第三方库中API的权重之和及归一化结果为:
表3.API、API权重及对应第三方库
第三方库 API 权重
commons-logging LogFactory.getLog 8
servlet-api Response.ok 8
commons-codec Base64.encodeBase64String 7
commons-codec Base64.decodeBase64 7
guava Preconditions.checkArgument 7
servlet-api FilterConfig.getServletContext 6
guava Preconditions.checkNotNull 6
commons-io IOUtils.copy 6
表4.第三方库及对应权重
第三方库 权重之和 归一化
commons-logging 8 0.15
servlet-api 14 0.25
commons-codec 14 0.25
guava 13 0.24
commons-io 6 0.11
根据上述步骤得到同源影响大小Score2。按照此方法得到API对应分数Score2为:
表5.API及对应Score2值
第四步:根据第二步得到的推荐分数Score1和第三步得到的API同源影响分数Score2进行API推荐,推荐分数越高越优先推荐。
将Score1和Score2之和作为最后API的推荐分数Score。
公式:Score=Score1+Score2
根据此方法得到API对应推荐分数Score为:
表6.API及对应推荐分数Score值
API Score1 Score2 Score
LogFactory.getLog 1 0.15 1.15
Response.ok 1 0.25 1.25
Base64.encodeBase64String 0.67 0.25 0.92
Base64.decodeBase64 0.67 0.25 0.92
Preconditions.checkArgument 0.67 0.24 0.91
FilterConfig.getServletContext 0.33 0.25 0.58
Preconditions.checkNotNull 0.33 0.24 0.57
IOUtils.copy 0.33 0.11 0.44
按照此方法推荐的API序列为:
Response.ok
LogFactory.getLog
Base64.encodeBase64String
Base64.decodeBase64
Preconditions.checkArgument
FilterConfig.getServletContext
Preconditions.checkNotNull
IOUtils.copy
需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。

Claims (1)

1.一种基于同源相关性的API推荐方法,其特征在于,所述方法包括以下步骤:
步骤1)获得相似历史信息,通过余弦相似度计算获得新需求和历史信息之间的相似度值,获取相似度排名前k的历史信息;
步骤2)获得API推荐分数Score1:在排名前k的历史信息中,提取历史信息中的API,根据API出现频率,计算每个API的推荐分数Score1;
步骤3)获得API同源影响分数Score2:根据步骤2)的推荐分数Score1对API进行排序,并标记每个API权重,根据API找到对应第三方库,计算同一第三方库(即同源)中API的总权重,通过归一化得到每个API的同源影响分数Score2;
步骤4)API推荐:将步骤2)得到的API的推荐分数Score1和步骤3)得到的API同源影响分数Score2进行求和得到API推荐分数Score;根据得到的推荐分数Score进行API推荐,推荐分数越高越优先推荐:
公式:Score=Score1+Score2,
所述步骤1)中,新需求来自用户输入,用符号NewQ表示,NewQ中包含字段{new_description},new_description代表新需求对应描述,历史信息库来自项目与事务跟踪工具,历史信息的集合{Q1,Q2,…,Qm},Qi中的字段为{description,methods},(1≤i≤m),description代表历史信息对应描述,methods代表历史信息对应方法的集合,通过计算new_description和所有历史信息的description之间的余弦相似度,获得相似度排名前k的历史信息,其中,k>0,k为整数,k为用户输入;
所述步骤2)中对于名为m的API,其推荐分数Score1(m)的计算方法为:公式:
其中,Countm表示前k个相似历史信息中m出现的次数,k表示选择相似历史信息的数目;
所述步骤3)中API同源影响分数Score2具体计算流程为:
(a)根据推荐分数Score1从大到小将API进行排序,标记其权重为n,n-1,……(逐次减一),n为API总个数,如果API对应的Score1相同则权重也标记相同;
(b)计算相同第三方库(即同源)的API权重之和,将得到的所有权重之和进行归一化,得到同源影响分数Score2;
相同第三方库(即同源)的API权重之和计算方法为:
公式:Sumtt=∑Weighttt
其中,Sumtt表示名为tt的第三方库中API权重之和,Weighttt表示tt中每个API的权重
同源影响分数Score2计算方法为:
公式:
其中,Score2(m)表示名为m的API的同源影响分数Score2,Sumlibm中libm表示m所在的第三方库,Sumlibm表示该第三方库中API的权重之和,∑Sumlib表示所有第三方库的总权重。
CN201910502764.3A 2019-06-11 2019-06-11 一种基于同源相关性的api推荐方法 Active CN110297628B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910502764.3A CN110297628B (zh) 2019-06-11 2019-06-11 一种基于同源相关性的api推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910502764.3A CN110297628B (zh) 2019-06-11 2019-06-11 一种基于同源相关性的api推荐方法

Publications (2)

Publication Number Publication Date
CN110297628A CN110297628A (zh) 2019-10-01
CN110297628B true CN110297628B (zh) 2023-07-21

Family

ID=68027846

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910502764.3A Active CN110297628B (zh) 2019-06-11 2019-06-11 一种基于同源相关性的api推荐方法

Country Status (1)

Country Link
CN (1) CN110297628B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110806861B (zh) * 2019-10-10 2021-10-08 南京航空航天大学 一种结合用户反馈信息的api推荐方法及终端
CN112269946A (zh) * 2020-11-06 2021-01-26 南京航空航天大学 一种协同过滤并权衡数据信息的api推荐方法与装置
CN117111916A (zh) * 2023-10-19 2023-11-24 天津赛象科技股份有限公司 基于ai和模块化框架的接口代码自动生成方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104995650A (zh) * 2011-12-27 2015-10-21 汤姆森路透社全球资源公司 用于使用源于社交媒体的数据和情绪分析来生成复合索引的方法及系统
CN109844781A (zh) * 2016-10-24 2019-06-04 甲骨文国际公司 用于从日志文件识别处理流并使流可视化的系统和方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656365B2 (en) * 2011-09-01 2014-02-18 Infosys Limited Systems, methods, and computer-readable media for measuring quality of application programming interfaces
US10212031B2 (en) * 2016-06-22 2019-02-19 Amazon Technologies, Inc. Intelligent configuration discovery techniques
CN107479879B (zh) * 2017-07-28 2021-09-14 扬州大学 一种面向软件功能维护的api及其使用推荐方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104995650A (zh) * 2011-12-27 2015-10-21 汤姆森路透社全球资源公司 用于使用源于社交媒体的数据和情绪分析来生成复合索引的方法及系统
CN109844781A (zh) * 2016-10-24 2019-06-04 甲骨文国际公司 用于从日志文件识别处理流并使流可视化的系统和方法

Also Published As

Publication number Publication date
CN110297628A (zh) 2019-10-01

Similar Documents

Publication Publication Date Title
CN110297628B (zh) 一种基于同源相关性的api推荐方法
Liu et al. Mitigating confounding bias in recommendation via information bottleneck
Zhang et al. Optimizing top-n collaborative filtering via dynamic negative item sampling
CN107220845B (zh) 用户复购概率预测/用户质量确定方法、装置及电子设备
CN108322317B (zh) 一种账号识别关联方法及服务器
JP5627820B1 (ja) 文書分析システム及び文書分析方法並びに文書分析プログラム
US10891631B2 (en) Framework for generating risk evaluation models
US11537905B2 (en) Inference-based assignment of data type to data
CN116932909A (zh) 模型的推荐方法、装置、处理器以及电子设备
CN110929169A (zh) 基于改进Canopy聚类协同过滤算法的职位推荐方法
CN113742763A (zh) 一种基于政务敏感数据混淆加密方法及系统
Wang Research on bank marketing behavior based on machine learning
CN110197078B (zh) 数据处理方法、装置、计算机可读介质及电子设备
CN110930106A (zh) 线上面试系统的信息处理方法、装置和系统
CN116382647A (zh) 一种基于大数据的软件开发管理系统及方法
WO2015118619A1 (ja) 文書分析システム及び文書分析方法並びに文書分析プログラム
CN115391460A (zh) 一种基于区块链平台的企业数据处理方法
JP5815911B1 (ja) 文書分析システム、文書分析システムの制御方法、および、文書分析システムの制御プログラム
Guo et al. Fair Learning to Rank with Distribution-free Risk Control
JP7345744B2 (ja) データ処理装置
CN112860150B (zh) 基于大数据分析的用户页面操作提示方法及装置
CN113704640B (zh) 用户常驻地址的预测方法、装置、电子设备及存储介质
TWI829558B (zh) 保護資料摘要的聯邦學習系統及其方法
Hernández-Castro et al. Breaking CaptchaStar using the BASECASS methodology
US11816246B2 (en) Modeling techniques to classify data sets containing personal identifiable information comprising numerical identifiers

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