Service Recommendation Method Based on Transformer
In recent years, more and more developers have been using Web services for application development. However, it can be challenging for developers to choose the right Web services. They may not be familiar with various services and find it difficult to accurately describe their features. Therefore, we propose a Service Recommendation method based on Transformer (SRT). Firstly, we employ Transformer to extract textual features from the development requirements that provided by developers. Then, we utilize deep neural networks to further explore the potential relationship between applications and services, enabling service recommendations. Extensive experiments conducted on a real dataset collected from ProgrammableWeb demonstrate the effectiveness of our proposed method.
Transformer
随着云计算、大数据技术的迅猛发展,Web服务的数量和类型显著增加。例如,截至2021年4月,最大的Web服务目录之一ProgrammableWeb拥有23,000多个Web服务和7,000多个应用。在同一时期,流行的网络API市场RapidAPI列出了20,000多个Web服务。用户在进行应用开发时,通常会集成现有的Web服务,这样子,开发人员不必从头编写相关代码,从而减轻了开发时间和成本。如
通常,开发人员从Web服务库中浏览和选择相关服务,然后将它们集中到相关的应用程序中。这里的困难点在于,Web服务库中存在着大量的候选Web服务,如何进行精准选择。因此,Web服务的数量的不断增长对于Web服务推荐带来了一系列的挑战。
总结来看,Web服务推荐存在着以下问题:
1) 通常,开发者输入开发需求来描述所要开发的应用,然而,用户的输入通常是随意的。让用户选择合适的词语来精准的表达开发需求是不太现实的,因为开发人员并不是Web服务领域的专家。因此,如何引入自然语言处理技术来尽可能准确的提取开发需求的特征是遇到的第一个问题。
2) 当前的Web服务库中存在着大量的Web服务和应用的历史交互,如何利用现有的交互历史记录来挖掘待开发应用和服务之间的关联关系是遇到的第二个问题。
为了解决以上两个问题,本文提出了一种基于Transformer的服务推荐方法(SRT),首先,我们使用Transformer来对开发者提出的开发需求进行文本特征提取,充分挖掘开发者需求的隐含语义信息,接着我们使用深度神经网络来进一步挖掘应用和服务的潜在关系,进而进行服务推荐。
服务推荐是指根据用户需求和偏好,为用户推荐最合适的服务。在过去的研究中,已经有许多关于服务推荐的工作
基于内容的服务推荐是一种常见的推荐方法,它通过分析服务的特征和属性,为用户推荐与其需求相关的服务。在相关工作中,研究者们已经提出了许多基于内容的服务推荐算法。一种常见的方法是使用关键词匹配。这种方法首先对服务的描述文本进行处理,提取关键词或特征词。然后,通过比较用户需求与服务的关键词进行匹配,为用户推荐与其需求匹配程度较高的服务。例如,Zhong等人
基于神经网络的服务推荐方法通常利用深度学习技术来挖掘用户行为和服务特征之间的复杂关系,实现个性化的推荐。例如,Yan等人
自从Transformer
给定开发需求 ,Transformer编码器对开发需求中的所有单词提取特征表示,输出可表示为 。其中,L表示开发需求的长度, 表示在位置i的单词的嵌入表示。
编码器由 个相同的层组成,每一个层包含了两个子层,分别为自注意机制和完全连接的前馈网络。假设输入为 ,子层应用残差连接,然后进行层归一化来计算输出,可以表示为 ,其中 表示自注意机制和完全连接的前馈网络。
由于编码器的每一层都相同,这里选取其中的第 层来进行简单介绍。第 层的输入为前一层的输出 ,第一层的输入为文档的嵌入表示 。在自注意机制中,查询Q、关键字K和值V都是具有不同参数矩阵的 的线性投影,自我注意力的输出是根据缩放的点积注意力来计算的,计算过程如下所示:
(1)
此外,Transformer编码器并行计算h
(3)
其中,f表示拼接操作, , , , 表示参数矩阵。在自注意机制子层后,完全连接子层获取自注意的输出,表示如下:
其中, , , 和 表示可训练参数。
在获取开发需求特征 后,接着使用DNN层,进一步利用应用和服务的交互记录,提取应用和服务之间的非线性关系。这个过程可以表示为:
(5)
在这里,DNN的优点是可以学习不同抽象级别的交互特性。随着层数的增加,每个神经元的感受野相对于前一层变得更大。通过这种方式,它可以提供全局语义(全局交互)和抽象细节,这在浅层和线性操作中很难做到。
最后,将学习到的向量
其中 、 和 是权重矩阵, 、 和 是特定任务层中的偏差向量。这里,为了抑制提出的模型的过度拟合,采用了dropout。在这里,设置dropout = 0.2。
2021年3月,从全球最大的在线Web服务注册中心ProgrammableWeb中获取到22,016个服务和6,438个应用程序。原始数据集中清除了任何没有功能描述的应用程序和服务、从未使用过的服务以及包含少于三个组件服务的应用程序。最终的实验数据集包括1,384个服务和6,438个应用程序。数据集的综合统计数据如
值 |
|
#应用程序 |
6438 |
#服务 |
1384 |
#应用程序标签 |
417 |
#服务标签 |
366 |
使用Precision、Recall、F1进行性能评估,定义如下公式:
在数据挖掘中,通常将训练集中的数据划分为正样本和负样本,在具体的例子中,正样本是指某应用程序调用的服务,负样本表示是某应用程序没有调用过的服务。
预测为正样本中,被实际为正样本的比例。如公式(9)所示,其中
推荐给应用程序
Word2Vec
Doc2Vec
Web服务的重用使得软件开发人员可以快速、经济地创建应用程序。本文提出了一种基于Transformer的服务推荐方法SRT。在SRT中,考虑了开发需求的文本信息,通过DNN模型和多任务学习来预测候选服务被选择的概率。最后,通过一组来自ProgrammableWeb的真实数据实验验证了SRT的有效性。服务多样性也会影响开发者的满意度,在未来的研究中,除了探索更多的服务兼容性方法外,计划探索挖掘长尾服务,提高服务推荐的多样性和开发者满意度。
国家级大学生创新创业训练计划(No.202313291024);嘉兴南湖学院大学生研究训练计划(No.8517233215)。