1. 引言
随着Web 2.0的发展,用户越来越倾向于通过互联网上的各种服务来开发应用并创造价值。然而,网络中存在着大量功能相似但质量不同的候选服务,这通常会使开发人员难以抉择,因为开发人员不可能了解服务存储库中的所有服务。例如,开发人员打算完成一个具有三个功能的应用程序{地图、天气、支付},开发人员首先输入这三个关键字,接着通过关键字从服务存储库中搜索一组候选服务,这意味着需要对服务存储库中的大量服务进行遍历[1]-[4]。正如许多开发人员所困惑的,从这么多服务中找到最佳组合被称为NP-hard问题。在这种情况下,如何向应用程序开发人员推荐服务组合仍然是一项非常重要的任务。因此,尽管目前在这一领域进行了大量研究,但仍存在着以下的不足:传统的服务推荐方法通常关注的是服务的精确性,而忽略了服务之间的兼容性,这可能会降低应用程序创建的成功率。因此,如何找出相互兼容的服务列表,已成为服务推荐系统面临的一项挑战性任务。
考虑到上述挑战,本文提出了一种基于兼容性感知的服务推荐方法(SRCR)。首先,SRCR使用图神经网络算法来对历史记录进行深入挖掘,提取应用程序和服务的历史记录特征,从而计算其偏好。其次,SRCR通过对历史服务共同调用情况进行分析,预测候选服务和现有服务的兼容性。最后,将上述二者相融合得到最终的服务列表。
2. 相关工作
2.1. 准确性驱动的服务推荐方法
准确性驱动的服务推荐方法一直高度关注推荐系统中的服务排名或推荐的准确性。这种方法的核心目标是通过有效地分析和利用开发者的行为数据、服务属性和其他相关信息,为开发者提供最符合其喜好和需求的服务。在准确性驱动的服务推荐方法中,研究者采用各种算法和技术来实现准确的推荐结果。这些算法主要包括协同过滤、基于内容的过滤、深度学习等技术。Ma等人[5]提出使用递归神经网络来完成推荐系统,通过深度学习提供的强大表示学习功能,从应用程序和服务之间的各种类型的交互中提取隐藏的结构和特性。Yan等人[6]提出了一种基于深度学习的服务推荐框架coACN,对服务的双边信息进行有效的学习。该方法采用域级别的注意力模块,通过从相关服务域提取信息来细化开发需求,同时建立图卷积网络来挖掘服务组合图,以提高推荐的准确率。
2.2. 兼容性感知的服务推荐方法
兼容性感知的服务推荐方法是一种注重考虑服务与服务兼容性的推荐方法。兼容性感知的服务推荐方法的优势在于其能够更好地满足开发者的特定需求和条件,可以帮助开发者更好地找到与其设备、技能、场景等兼容的服务,提高用户体验和满意度。Qi等人[7]通过挖掘应用程序中的历史服务使用情况来衡量服务之间的兼容性,基于基本假设,即如果两个服务曾经在同一个真实世界的应用程序上被共同调用,则它们是兼容的。然后,根据不同服务之间的兼容性,构建服务关联图来进行服务推荐。与上述工作相似,Qi等人[8]定义了“服务–服务”关联图。接着,结合斯坦纳树搜索方法,提出了一种兼容性感知的服务推荐方法,以返回一组具有高级兼容性的服务。
3. 基于兼容性感知的服务推荐方法(SRCR)
图1显示了SRCR方法的框架,如图所示,首先基于开发者的历史调用记录,构建标签–应用程序–服务–标签图,利用KGAT模型挖掘应用和服务的特征。同时,基于开发者的历史调用记录,构建加权服务相关图,挖掘服务与服务之间的兼容性。最后,将上述内容融合,得到最终的服务推荐列表。
Figure 1. Framework diagram of SRCR
图1. SRCR框架图
3.1. 基于调用记录的特征提取
根据历史服务调用记录,得到应用程序–服务调用列表,它可以提供有关应用程序中服务的关系信息。通过应用程序–服务调用列表,可构建应用程序服务标签网络图
,其中
代表节点集合,
表示边集合。应用程序集合A、服务集合S和标签集合T用于构建节点集合
。对于边集合E,如果应用程序a和服务s之间进行了调用,那么它们在图中是连接的,因此形成了边集合
,同时,如果标签t属于某个服务s,那这两者在图中是连接的,从而形成边集合
。相同地,如果标签t属于某个应用程序a,那这两者在图中是连接的,从而形成边集合
。图2显示了一个异构应用程序–服务图的示例。
Figure 2. An example of application-service graph
图2. 应用程序–服务示例图
在构建完应用程序–服务异构图后,使用图神经网络KGAT [9]来提取历史应用程序和服务表示。KGAT主要包含了三个部分,分别为嵌入层、注意力传播层和特征表示生成。最终提取到应用程序特征表示和服务特征表示
和
,从而可以计算得到应用程序对于服务的偏好,如公式(1)所示:
(1)
3.2. 服务兼容性分析
通过图3所示的应用程序服务标签网络图G,可构建加权服务相关性图Gs,如图3所示,这是后续服务推荐过程中计算服务兼容性的基础。
Figure 3. Weighted service related graph
图3. 加权服务相关图
如图3所示,如果两个服务x和y曾经同时出现在同一个应用程序中,那么连接这两个服务的边
被放入集合e中。每个边
被赋予一个权值
,该权值是对
的出现频率进行计数。图4中共有6个节点,分别为
。
表示服务v2和v3在历史应用程序创建中同时出现了两次,
表示服务v2和v6在历史应用程序创建中同时出现了六次。
代表v2和v6的兼容性要高于v3。依此类推,
不存在,这意味着服务v4和v5在过去从未集成用于应用程序创建。在这里,使用Node2Vec [10]和深度神经网络来进行结构兼容性分析。
Figure 4. Comparison results of different methods
图4. 不同方法对比结果
Node2vec在学习特征表示的过程中借用了自然语言处理的Skip Gram模型,通过Node2Vec可得到图中的节点特征表示,假设有节点
和节点
,得到节点特征表示为
和
,接着分析应用程序中已选服务的情况,利用已选服务的节点特征预测候选服务与已选服务之间的相似性,将这个相似性作为服务与服务之间的兼容性,如公式(2)所示:
(2)
3.3. 服务推荐列表生成
通过历史调用记录得到各类偏好以及服务兼容性,将二者相融合,得到最终的服务推荐列表公式如下:
(3)
其中,
,
代表基于应用程序历史调用记录得到的服务偏好的重要程度。
4. 实验
4.1. 数据集
2021年3月,从全球最大的在线Web服务注册中心ProgrammableWeb中获取到22,016个服务和6438个应用程序。原始数据集中清除了任何没有功能描述的应用程序和服务、从未使用过的服务以及包含少于三个组件服务的应用程序。最终的实验数据集包括1384个服务和6438个应用程序。数据集的综合统计数据如表1所示。使用五重交叉验证技术评估不同的推荐方法。换句话说,数据集被分成了五个部分。每次,一个样本用于测试,另外四个样本用于训练。然后对五次的结果求平均值,并将平均值作为最终的结果。
Table 1. Dataset statistics (after preprocessing)
表1. 数据集统计(预处理后)
|
值 |
#应用程序 |
6438 |
#服务 |
1384 |
#应用程序标签 |
417 |
#服务标签 |
366 |
4.2. 评价指标
使用Precision、Recall、F1进行性能评估,定义如公式(4)~(6)所示:
(4)
(5)
(6)在数据挖掘中,通常将训练集中的数据划分为正样本和负样本,在具体的例子中,正样本是指某应用程序调用的服务,负样本表示是某应用程序没有调用过的服务。
预测为正样本中,被实际为正样本的比例。如公式(4)~(6)所示,其中
推荐给应用程序a
的前k个服务,而
测试集中应用程序a实际调用的服务。
实际为正样本中,预测为正样本的比例。F1是Precision、Recall和平均数,是一个综合指标,可以更全面地反映服务推荐的性能。通常情况下,F1越高,代表服务推荐的性能越好。
4.3. 对比方法
KGAT [9]:KGAT模型是一种用于知识图的图神经网络模型,它将注意力机制引入到知识图中,以提高知识图上的服务推荐的性能。
Node2Vec [10]:Node2vec算法通过在图上执行随机游走,并利用这些随机游走序列来学习节点表征。
SPR [11]:SPR方法利用应用程序的描述和调用信息来挖掘服务的重要词汇特征,进一步弥合应用程序开发人员和服务提供商之间的词汇鸿沟。同时,它使用作者主题模型(ATM)来重构服务配置文件。
RWR [12]:RWR使用知识图对应用程序服务关系进行编码,并使用重新启动的随机游走来评估它们的相似性。
4.4. 性能分析
图4显示了不同方法在精确率、召回率、F1值方面的性能比较。由于应用程序服务调用记录的密度很低,服务推荐的准确性等指标总体表现不高。从图中可知,Node2vec、RWR、SPR、KGAT等方法无论在精确率还是在召回率等指标上来看,其表现都低于我们所提出的方法。在这四者中间,KGAT的性能最好,这表明综合考虑应用、服务、标签之间的关系对于服务推荐有积极作用。与次优方法KGAT相比,我们所提出的方法SRCR在
上提高了12%,在
上提高了11.7%,在
上提高了11.9%。
5. 结论和未来工作
Web服务的重用使得软件开发人员可以快速、经济地创建应用程序。本文提出了一种基于兼容性感知的服务推荐方法SRCR。在SRCR中,充分考虑了应用和服务之间的调用记录以及服务与服务之间的兼容性。最后,通过一组来自ProgrammableWeb的真实数据实验验证了SRCR的有效性。在未来的工作中,我们将研究服务推荐中的长尾服务推荐和多样性服务推荐,提高服务推荐的开发者满意度。
基金项目
国家级大学生创新创业训练计划(No. 202313291024);嘉兴南湖学院大学生研究训练计划(No. 8517233215)。