1. 引言
随着云计算、大数据技术的迅猛发展,Web服务的数量和类型显著增加。例如,截至2021年4月,最大的Web服务目录之一ProgrammableWeb拥有23,000多个Web服务和7,000多个应用。在同一时期,流行的网络API市场RapidAPI列出了20,000多个Web服务。用户在进行应用开发时,通常会集成现有的Web服务,这样子,开发人员不必从头编写相关代码,从而减轻了开发时间和成本。如图1所示,应用程序nearplace是免费的商店定位器和谷歌地图标记,包含了不同的Web服务,其中有MetaLocator、WordPress.org、Google Maps、WooCommerce、Shopify Admin和Magento SOAP。
Figure 1.The example of an application
图1.应用程序示例图
通常,开发人员从Web服务库中浏览和选择相关服务,然后将它们集中到相关的应用程序中。这里的困难点在于,Web服务库中存在着大量的候选Web服务,如何进行精准选择。因此,Web服务的数量的不断增长对于Web服务推荐带来了一系列的挑战。
总结来看,Web服务推荐存在着以下问题:
1) 通常,开发者输入开发需求来描述所要开发的应用,然而,用户的输入通常是随意的。让用户选择合适的词语来精准的表达开发需求是不太现实的,因为开发人员并不是Web服务领域的专家。因此,如何引入自然语言处理技术来尽可能准确的提取开发需求的特征是遇到的第一个问题。
2) 当前的Web服务库中存在着大量的Web服务和应用的历史交互,如何利用现有的交互历史记录来挖掘待开发应用和服务之间的关联关系是遇到的第二个问题。
为了解决以上两个问题,本文提出了一种基于Transformer的服务推荐方法(SRT),首先,我们使用Transformer来对开发者提出的开发需求进行文本特征提取,充分挖掘开发者需求的隐含语义信息,接着我们使用深度神经网络来进一步挖掘应用和服务的潜在关系,进而进行服务推荐。
2. 相关工作
服务推荐是指根据用户需求和偏好,为用户推荐最合适的服务。在过去的研究中,已经有许多关于服务推荐的工作[1]-[5]。
2.1. 基于内容的服务推荐方法
基于内容的服务推荐是一种常见的推荐方法,它通过分析服务的特征和属性,为用户推荐与其需求相关的服务。在相关工作中,研究者们已经提出了许多基于内容的服务推荐算法。一种常见的方法是使用关键词匹配。这种方法首先对服务的描述文本进行处理,提取关键词或特征词。然后,通过比较用户需求与服务的关键词进行匹配,为用户推荐与其需求匹配程度较高的服务。例如,Zhong等人[6]基于由一组组件Web API组成的移动应用程序的功能描述来挖掘Web API的客观可靠的功能。挖掘过程主要是通过分析移动应用程序的功能描述和应用程序API的组成结构。Hao等人[7]通过挖掘隐藏在移动应用程序描述中的价值信息来描述Web API功能。然后,提出了一种有针对性的重构服务描述(TRSD)方法来帮助Web API推荐和移动APP开发。
2.2. 基于神经网络的服务推荐方法
基于神经网络的服务推荐方法通常利用深度学习技术来挖掘用户行为和服务特征之间的复杂关系,实现个性化的推荐。例如,Yan等人[8]利用LightGCN的协作注意力卷积网络有效地捕获双边信息进行服务推荐。Wei等人[9]提出了一种时间感知服务推荐方法。不幸的是,很难在软件工程场景中验证这种方法。因此,他们使用产品推荐数据集进行实验。Mezni等人[10]提出了一种时间感知服务推荐方法,该方法利用时间知识图对用户与服务的交互进行建模。Liu等人[11]提出了一种捆绑服务推荐方法,该方法旨在解决推荐服务之间的约束问题。这些基于神经网络的服务推荐方法通过深度学习技术的应用,能够更好地挖掘用户和服务之间的复杂关系,实现个性化、精准的推荐,为用户提供更好的推荐体验。
3. 基于Transformer的服务推荐方法(SRT)
Figure 2.The framework of SRT
图2.SRT框架图
图2显示了我们所提出的基于Transformer的服务推荐方法的框架。首先,我们使用Transformer模型来提取应用的开发需求特征,接着,我们利用深度神经网络DNN来进一步挖掘应用和服务的潜在关系,从而进行服务推荐。
3.1. 文本特征提取
自从Transformer[12]被提出以来,这种基于注意力机制的神经网络在许多领域都取得了巨大的成功。Transformer中的编码器部分在学习单词与单词之间的交互信息方面具有很强的能力。受此启发,本文使用Transformer编码器对开发需求进行特征提取。
给定开发需求
,Transformer编码器对开发需求中的所有单词提取特征表示,输出可表示为
。其中,L表示开发需求的长度,
表示在位置i的单词的嵌入表示。
编码器由
个相同的层组成,每一个层包含了两个子层,分别为自注意机制和完全连接的前馈网络。假设输入为
,子层应用残差连接,然后进行层归一化来计算输出,可以表示为
,其中
表示自注意机制和完全连接的前馈网络。
由于编码器的每一层都相同,这里选取其中的第
层来进行简单介绍。第
层的输入为前一层的输出
,第一层的输入为文档的嵌入表示
。在自注意机制中,查询Q、关键字K和值V都是具有不同参数矩阵的
的线性投影,自我注意力的输出是根据缩放的点积注意力来计算的,计算过程如下所示:
(1)
此外,Transformer编码器并行计算h头实现自我注意,其中每个头基于公式(1)计算注意力。多头注意力的输出是h个头的串联,接着进行线性投影,过程如下:
(2)
(3)
其中,f表示拼接操作,
,
,
,
表示参数矩阵。在自注意机制子层后,完全连接子层获取自注意的输出,表示如下:
(4)
其中,
,
,
和
表示可训练参数。
3.2. 服务应用关系挖掘
在获取开发需求特征
后,接着使用DNN层,进一步利用应用和服务的交互记录,提取应用和服务之间的非线性关系。这个过程可以表示为:
(5)
在这里,DNN的优点是可以学习不同抽象级别的交互特性。随着层数的增加,每个神经元的感受野相对于前一层变得更大。通过这种方式,它可以提供全局语义(全局交互)和抽象细节,这在浅层和线性操作中很难做到。
最后,将学习到的向量
输入到sigmoid函数中,在这里,加入了多任务学习。作为一种归纳转移方法,多任务学习可以充分利用多个相关任务的训练信号中隐含的特定领域信息,从而可以减少过拟合风险。同时,多任务学习有助于模型关注最基本的特征并提高其泛化能力。最后,多任务学习中的辅助任务所提供的额外信息也有助于学习特征之间的相关性或不相关性,从而帮助模型更好地理解数据。最后输出为
、
、
。
表示表示下一个服务被推荐的概率,
表示应用
属于某个类别的概率,
表示服务
属于某个类别的概率。
(6)
(7)
(8)
其中
、
和
是权重矩阵,
、
和
是特定任务层中的偏差向量。这里,为了抑制提出的模型的过度拟合,采用了dropout。在这里,设置dropout = 0.2。
4. 实验
4.1. 数据集
2021年3月,从全球最大的在线Web服务注册中心ProgrammableWeb中获取到22,016个服务和6,438个应用程序。原始数据集中清除了任何没有功能描述的应用程序和服务、从未使用过的服务以及包含少于三个组件服务的应用程序。最终的实验数据集包括1,384个服务和6,438个应用程序。数据集的综合统计数据如表1所示。使用五重交叉验证技术评估不同的推荐方法。换句话说,数据集被分成了五个部分。每次,一个样本用于测试,另外四个样本用于训练。然后对五次的结果求平均值,并将平均值作为最终的结果。
Table 1.Dataset statistics (after preprocessing)
表1.数据数据集统计(预处理后)
|
值 |
#应用程序 |
6438 |
#服务 |
1384 |
#应用程序标签 |
417 |
#服务标签 |
366 |
4.2. 评价指标
使用Precision、Recall、F1进行性能评估,定义如下公式:
(9)
(10)
(11)
在数据挖掘中,通常将训练集中的数据划分为正样本和负样本,在具体的例子中,正样本是指某应用程序调用的服务,负样本表示是某应用程序没有调用过的服务。
预测为正样本中,被实际为正样本的比例。如公式(9)所示,其中
推荐给应用程序
的前
个服务,而
测试集中应用程序
实际调用的服务。
实际为正样本中,预测为正样本的比例。
是
,
和平均数,是一个综合指标,可以更全面地反映服务推荐的性能。通常情况下,
越高,代表服务推荐的性能越好。
4.3. 对比方法
Word2Vec[13]:Word2Vec方法首先使用Word2Vec工具对开发需求的文本描述特征进行提取。然后基于提取的特征输入到DNN模型中计算应用对于各个服务的偏好。
Doc2Vec[14]:Doc2Vec方法首先使用Doc2Vec工具对开发需求的文本描述特征进行提取。然后基于提取的特征输入到DNN模型中计算应用对于各个服务的偏好。
4.4. 性能分析
图3显示了不同方法在精确率、召回率、F1值方面的性能比较。由于应用程序服务调用记录的密度很低,服务推荐的准确性等指标总体表现不高。从图中可知,Word2Vec、Doc2Vec等方法无论在精确率还是在召回率等指标上来看,其表现都低于我们所提出的方法。证明了相对于传统的特征提取方法,Transformer方法在文本特征提取方面显示出了优势。与次优方法相比,SRT在
上提高了15.2%,在
上提高了15.1%,在
上提高了15.0%。
Figure 3.Comparison results of different methods
图3.不同方法对比结果
5. 结论和未来工作
Web服务的重用使得软件开发人员可以快速、经济地创建应用程序。本文提出了一种基于Transformer的服务推荐方法SRT。在SRT中,考虑了开发需求的文本信息,通过DNN模型和多任务学习来预测候选服务被选择的概率。最后,通过一组来自ProgrammableWeb的真实数据实验验证了SRT的有效性。服务多样性也会影响开发者的满意度,在未来的研究中,除了探索更多的服务兼容性方法外,计划探索挖掘长尾服务,提高服务推荐的多样性和开发者满意度。
基金项目
国家级大学生创新创业训练计划(No.202313291024);嘉兴南湖学院大学生研究训练计划(No.8517233215)。