一种基于知识图谱和协同过滤的api推荐方法
技术领域
本发明涉及面向Mashup的服务推荐领域和知识图谱
技术领域
,尤其涉及一种基于知识图谱和协同过滤的API推荐方法。背景技术
随着互联网的高速发展,Web服务正在成为一种主要技术。现如今我们对于API的依赖变得越来越大,单一Web API已经不能满足我们的需求了,这时候往往需要多个API共同工作才能达到我们的最终目的。
近些年来Mashup概念逐渐流行起来,这是一种通过组合现有的Web资源,利用数据和Web api的Web应用。一个Mashup往往结合了两个或者两个以上的Web API,比如名称为sportlogger的Mashup是提供体育博客功能的应用。这个Mashup一共整合了三个API,分别是google maps,twitter,janrain engage。Mashup易于实现最终用户需求,并且可以方便开发人员进行开发工作。由此可见,Mashup的出现和发展,不仅解决了单个Web API功能单一的缺点,同时也使Web API变得可以重用。然而目前的Web API数量庞大,据统计programmeweb上的API已经超过了23000个,这给开发工作者带来了巨大的困扰。在这种情况下,如何为Mashup推荐合适的API已经成为服务领域的热点和难点,一个性能优秀的服务推荐系统将大大提高开发人员的发开的效率。
目前面向Mashup的服务推荐主要是使用的协同过滤算法,但是这不能很好地挖掘Mashup与API之间的深层关系。同时当目标Mashup没有API使用记录的时候,将存在冷启动的问题,即很难给一个没有使用过API的Mashup推荐Web API。除此以外,目前还有很多研究只依赖于API和Mashup的描述信息。但是很多服务的描述信息都不完整或不准确,这极大影响了最终的推荐结果。
发明内容
为了高效准确地为相应Mashup推荐API,本发明提出了一种基于知识图谱和协同过滤的API推荐方法,该方法通过知识图谱挖掘Mashup与API间的深层关系,同时利用混合协同过滤方法解决了数据稀疏的问题。
本发明的目的是通过以下技术方案来实现的:一种基于知识图谱和协同过滤的API推荐方法,该方法包括以下步骤:
(1)根据Mashup与已存在API构建服务知识图谱,将知识谱图中的API使用表示学习算法TransH嵌入到低维向量,计算API实体之间的相似度;
(2)获取目标Mashup使用过的API,根据步骤(1)得到目标Mashup使用过的API的相似API构成推荐列表RS1;
(3)根据Mashup的文本描述文档用自然语言处理技术提取目标Mashup与其它Mashup的功能,通过功能计算目标Mashup与其它Mashup之间的相似度;
(4)根据步骤(3)获取目标Mashup的相似Mashup,将相似Mashup使用过的API构成推荐列表RS2;
(5)根据Mashup的API使用记录分别构建Mashup的使用矩阵和API的使用矩阵,然后分别计算Mashup之间的相似度,以及API之间的相似度;
(6)根据步骤(5)获取目标Mashup的相似Mashup,将相似Mashup使用过的API构成推荐列表RS3;
(7)获取目标Mashup使用过的API,根据步骤(5)得到目标Mashup使用过的API的相似API构成推荐列表RS4;
(8)根据RS1和RS4得到基于API的推荐集合AS,具体为:
将RS1和RS4中的推荐API的相似度做归一化处理;
将RS1中的推荐API集合记为set1,将RS4中的推荐API集合记为set2,取set1和set2的并集记为set;首先给RS1中的推荐API赋值评分,遍历set中的每一个API,如果RS1中存在这个API,则RS1中该API的评分就是归一化后的相似度;如果RS1中不存在这个API,则RS1中该API的评分为0;然后用相同的方式给RS4中的推荐API赋值评分;经过以上操作后RS1和RS4的长度相同,且推荐API相同;将处理过的RS1和RS4合并为一个基于API的推荐集合AS,AS中第i个推荐API的评分Sri计算公式如下:
其中s1和s2分别是RS1和RS4中第i个推荐API的评分;
(9)利用步骤(8)中的方法,根据RS2和RS3得到基于Mashup的推荐集合MS;
将RS2和RS3中的推荐API的相似度做归一化处理;
将RS2中的推荐API集合记为set3,将RS3中的推荐API集合记为set4,取set3和set4的并集记为set';首先给RS2中的推荐API赋值评分,遍历set'中的每一个API,如果RS2中存在这个API,则RS2中该API的评分就是归一化后的相似度;如果RS2中不存在这个API,则RS2中该API的评分为0;然后用相同的方式给RS3中的推荐API赋值评分;经过以上操作后RS2和RS3的长度相同,且推荐API相同;将处理过的RS2和RS3合并为一个基于API的推荐集合MS,MS中第i个推荐API的评分Sri计算公式如下:
其中s1和s2分别是RS2和RS3中第i个推荐API的评分;
(10)利用步骤(8)中的方法,将AS和MS合并,得到最终的API推荐结果;
将AS中的推荐API集合记为set5,将MS中的推荐API集合记为set6,取set5和set6的并集记为set”;首先给AS中的推荐API赋值评分,遍历set”中的每一个API,如果AS中存在这个API,则AS中该API的评分就是归一化后的相似度;如果AS中不存在这个API,则AS中该API的评分为0;然后用相同的方式给MS中的推荐API赋值评分;经过以上操作后AS和MS的长度相同,且推荐API相同;将处理过的AS和MS合并为最终的API推荐集合RS,RS中第i个推荐API的评分Sri计算公式如下:
其中s1和s2分别是AS和MS中第i个推荐API的评分。
进一步地,所述服务知识图谱的构建具体为:将API、Mashup以及它们的类别Category和标签Tag作为服务实体,其中API与Mashup之间的关系定义为“used”;API与Category之间,以及Mashup与Category之间的关系均定义为“belong_to”;API与Tag之间,以及Mashup与Tag之间的关系均定义为“Tag”;当API之间文本描述相似度越高时,两者功能就越相似,说明它们可能存在竞争关系,计算API之间的文本描述相似度,然后将每个API相似度最高的前20%的API设置为竞争关系,并且加入到知识图谱中。
进一步地,所述步骤(1)中,API实体之间的相似度计算具体为:
由知识图谱首先提取了实体和关系组成三元组,然后使用表示学习方法TransH将三元组嵌入到低维向量中。TansH是在TansE的基础上做的改进。TransE算法是将三元组中的head向量和relation向量相加尽量等于tail向量。设三元组中的head向量为h,关系向量为r,tail向量为t,则将三元组嵌入到低维向量的时候尽量满足以下公式:
h+r≈t
TransE算法将三元组嵌入到向量空间时是嵌入到单一平面;与TransE一样,TansH也是为了满足三元组中的head向量和relation向量相加尽量等于tail向量。但是和TransE将三元组映射到单一平面不同,TransH是将三元组映射到多平面。
得到API实体的低维向量后,用余弦相似度计算API实体间的相似度,数值越大,说明两个API之间的关联度越大,具体计算公式如下:
其中APIi和APIi′是两个API的低维向量,d是API向量的维度,优选地,d取100。
进一步地,所述步骤(3)中,Mashup之间的相似度计算具体为:
为了挖掘Mashup之间的相似度,提取了所有Mashup的功能。首先使用目前较为流行的自然语言处理工具Stanford Parser将Mashup的描述信息进行分词处理。然后以谓语和宾语组成相对应的依赖关系。比如名为“ordinateur”的Mashup的描述是“Ordinateurhelps Compare and buy computers”,提取出的动宾就是“Comparecomputers”和“buycomputers”,这就是“ordinateur”这个mashup的两个功能。
步骤(3)中目标Mashup与其他Mashup相似度是通过相同功能出现的概率计算的,因此Mashup间功能越相近,则相似度越高。具体的相似度计算公式如下:
其中P和Q分别是两个Mashup的功能集合。
进一步地,所述步骤(5)中的相似度计算具体为:
Mashup使用矩阵的构建方程式如下:
Mashupi=(API1,API2,...,APIj,...)
其中APIj的值取决于APIj是否被Mashupi使用过,如果被使用过,APIj的值为1,没有被使用过则为0。
API使用矩阵的构建方程式如下:
APIi=(Mashup1,Mashup2,...,Mashupj,...)
其中当APIi使用过Mashupj时,Mashupj的值为1,如果APIi没有使用过Mashupj,则Maxhupj的值为0。
分别计算Mashup使用矩阵之间和API使用矩阵之间的相似度,由于使用矩阵中的数据只有0和1,因此使用同现相似度计算Mashup之间和API之间的相似度,具体计算公式如下:
其中Mashupx和Mashupy是Mashup的使用矩阵,APIx和APIy是API的使用矩阵。
本发明的有益效果如下:本发明利用知识图谱技术降低了数据稀疏性对推荐结果的影响。同时利用提取Mashup功能解决了冷启动的问题。与现有的服务推荐算法相比,本发明方法在服务推荐的准确性方面有显著的提高。
附图说明
图1是本发明实施例提供的基于知识图谱和协同过滤的API推荐方法流程图;
图2是本发明实施例提供的目标Mashup基本信息及其使用过的API示意图;
图3是本发明实施例构建的部分服务知识图谱示意图;
图4是本发明实施例提供的推荐方法最终推荐结果。
具体实施方式
下面通过实施例并结合附图对本发明的技术方案作进一步详细说明。
如图1所示,本发明实施例提供一种基于知识图谱和协同过滤的API推荐方法,具体步骤如下:
(1)根据Mashup与已存在API构建服务知识图谱。例如按照图2所示的名称为sportlogger的目标Mashup信息构建的部分知识图谱如图3所示。其中Mashup与使用过的API的关系为used,如sportlogger与twitter形成三元组(sportlogger,use,twitte)。目标Mashup与category之间的关系是belong_to。例如sportlogger与Travel形成三元组(sportlogger,belong_to,twitte)。Mashup与tag之间的关系是Tag,如sportlogger与Social形成三元组(sportlogger,belong_to,Social)。将API实体嵌入低维向量,计算API之间的相似度。
(2)获取名称为sportlogger的目标Mashup使用过的API google maps,twitter和janrain engage,基于步骤(1)分别将与这三个API最相似的API组成候选推荐列表RS1。
(3)利用自然语言技术提取目标Mashup与其他Mashup的功能,目标Mashupsportlogger的文本描述信息是“By importing and tagging GPS tracks,usersget a clear view of their sport activities both in space(on a map)and time(ona calendar).”,用Stanford Parser开源工具分词以后得到动语和宾语组成二元组SD(get,sport activities)。然后根据描述文本提取的功能计算Mashup之间的相似度。
(4)基于步骤(3)得到sportlogger这个Mashup的相似Mashup为fonfinder,sneaker store finder,twitterwho,ukoel social jukebox,breaking news headlines,然后将这五个使用过的API组成推荐列表RS2。
(5)获得所有Mashup与API的使用矩阵,矩阵的每一元素公式为:
根据矩阵计算Mashup之间和API之间的相似度。
(6)根据步骤(5)得到的Mashupsportlogger的相似Mashup为destinations,100travel destinations,200towns,cool bars restaurants and clubs和darwin busmap并将这些相似Mashup使用过的API组成推荐列表RS3。
(7)获取sportlogger使用过的APIgoogle maps,twitter和janrain engage,然后根据步骤(5)得到这些API的相似API构成推荐列表RS4。
(8)将RS1和RS4中的推荐API的相似度做归一化处理;
将RS1中的推荐API集合记为set1,将RS4中的推荐API集合记为set2,取set1和set2的并集记为set;首先给RS1中的推荐API赋值评分,遍历set中的每一个API,如果RS1中存在这个API,则RS1中该API的评分就是归一化后的相似度;如果RS1中不存在这个API,则RS1中该API的评分为0;然后用相同的方式给RS4中的推荐API赋值评分;将处理过的RS1和RS4合并为一个基于API的推荐集合AS,AS中第i个推荐API的评分Sri计算公式:
其中s1和s2分别是RS1和RS4中第i个推荐API的评分。
(9)将RS2和RS3中的推荐API的相似度做归一化处理;
将RS2中的推荐API集合记为set3,将RS3中的推荐API集合记为set4,取set3和set4的并集记为set';首先给RS2中的推荐API赋值评分,遍历set'中的每一个API,如果RS2中存在这个API,则RS2中该API的评分就是归一化后的相似度;如果RS2中不存在这个API,则RS2中该API的评分为0;然后用相同的方式给RS3中的推荐API赋值评分;经过以上操作后RS2和RS3的长度相同,且推荐API相同;将处理过的RS2和RS3合并为一个基于API的推荐集合MS,MS中第i个推荐API的评分Sri计算公式如下:
其中s1和s2分别是RS2和RS3中第i个推荐API的评分。
(10)将AS和MS中的推荐API的评分做归一化处理,然后AS和MS合并后取评分最高的20个API形成最终推荐集合RS。Sportlogger的最终API推荐集合如图4所示。
进一步地,所述步骤(1),步骤(3),步骤(5)中的相似度计算具体为:
A)步骤(1)中API实体在低维向量中的相似度计算用的是余弦相似度计算,数值越大,说明两个API之间越关联,具体计算公式如下:
其中APIi和APIi′是两个API的低维向量,d是API向量的维度。
B)步骤(3)中目标Mashup与其他Mashup相似度是通过相同功能出现的概率,因此Mashup间功能越相近,则相似度越高,具体计算公式如下:
其中P和Q分别是两个Mashup的功能集合。
C)步骤(5)分别计算Mashup使用矩阵之间和API使用矩阵之间的相似度,由于使用矩阵中的数据只有0和1,因此使用同现相似度计算Mashup之间和API之间的相似度,具体计算公式如下:
其中Mashupx和Mashupy是Mashup的使用矩阵,APIx和APIy是API的使用矩阵。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围内。