首页 / 专利库 / 人工智能 / 查询似然模型 / 一种基于链接预测的服务组合推荐方法

一种基于链接预测的服务组合推荐方法

阅读:1017发布:2020-06-15

专利汇可以提供一种基于链接预测的服务组合推荐方法专利检索,专利查询,专利分析的服务。并且本 发明 提出了一种基于链接预测的 服务组合 推荐方法,用以解决现有方法中只关注单个服务API或服务流程方案,忽视了在现实中用户组建服务时既有单个服务推荐需要也有业务流程推荐需求的问题,本发明包括数据集 整理 、链接模型训练与预测、服务组合推荐,可以根据用户创建服务组合中的行为推荐用户所需要的服务组件和服务组合,通过链接预测的 算法 给用户推荐单个服务组件,根据朴素贝叶斯分类器给用户推荐符合用户兴趣的服务组合。本发明能够为用户推荐和调用相匹配的服务,缓解了用户在组建服务时出现服务不匹配的问题;不仅缩减了用户创建服务所需开销,还能让模板库中组合得到复用,对轻量级服务组合的发展具有重要推动作用。,下面是一种基于链接预测的服务组合推荐方法专利的具体信息内容。

1.一种基于链接预测的服务组合推荐方法,其特征在于,包括数据集整理、链接模型训练与预测、服务组合推荐,其步骤如下:
数据集整理包括:1a)整理用户服务数据集;1b)整理服务组合数据集;
链接模型训练与预测包括:2a)通过用户服务数据集中的服务链接关系扩充服务组件集合;2b)将扩充服务组件集合分解成二部图;2c)根据二部图计算每个服务的hub值,利用hub值给用户推荐能与其链接的服务;
所述步骤2a)通过用户服务数据集中服务链接关系扩充服务组件集合的方法为:
1)在用户服务数据集中找到用户的前n项服务作为种子服务集合,此集合为服务组件的根集合;
2)在种子服务集合的基础上,通过查找用户服务数据集,找到与种子服务集合有直接链接关系的服务组件并将其纳入集合中,形成扩充服务组件集合;
所述步骤2b)中扩充服务组件集合分解成二部图的方法如下:
1)将扩展服务组件集合中的服务组件转换为二个子集合hub和authority;
2)如果一个服务组件有出度,将此组件加入出度子集合,此集合定义为hub子集合;如果一个服务组件有入度,将此组件加入到入度子集合,此集合定义为authority子集合;当一个服务组件既有出度也有入度时,将此服务组件同时归入上述两个集合中;
所述步骤2c)中利用hub值给用户推荐能与其链接的服务的方法为:
1)根据二部图的链接关系,通过多次迭代生成hub子集合的节点转移图,即hub集合的连通图;
2)根据二部图和节点迁移图计算出hub子集中每个节点ai1的权值rai1,rai1即为节点的hub值,计算公式为:
其中,A为二部图中hub子集合的节点数,Aj1为组件ai1所在节点迁移图的节点数,Oj1为组件ai1所在节点迁移图中包含的出度总数,B(i1)为二部图中组件ai1的出度个数;
3)根据节点迁移图向用户推荐能与其所选服务链接的其他服务,其他服务按照hub值从高到低的顺序排序,即优先推荐与其能链接的hub值比较大的服务组件;
服务组合推荐包括:3a)确定用户已选择的服务组件集,通过信息增益算法约减服务组件集;3b)根据约减后的服务组件集调用朴素贝叶斯分类器确定用户的兴趣;3c)根据步骤
3a) 中确定的用户已选择的服务组件集和步骤3b)中确定的用户兴趣,向用户推荐相似的服务组合;
所述步骤3a)中通过信息增益算法约减服务组件集的方法为:
1)根据服务组合数据集,离线计算服务系统中有这个服务组件的熵H(C);
2)根据服务组合数据集,离线计算服务系统中没有这个服务组件的熵H(C|s);
3)计算熵H(C)和熵H(C|s)两者差值即为此服务组件的分类增益值;
其中,P(ci|s)代表服务s属于兴趣类别ci的概率,P(ci)代表兴趣类别ci在所有兴趣类别中所占服务数的比例, 代表兴趣类别ci中不包含服务s的概率;
4)将用户已选择的服务组件集根据分类增益值排序,前n1个服务组件即为约减后的服务组件集;
所述步骤3b)中用贝叶斯分类器确定用户兴趣的方法为:
1)根据服务组合数据集,离线计算服务系统中各个服务组件属于不同用户兴趣类别的概率 其中,scj代表服务组件,SC代表用户访问的组件序列(sc1,sc2,...,scn1),ci代表不同用户兴趣的类别,(c1,c2,...,cm)表示兴趣类别变量C,n(ci)代表兴趣类别ci在整个类别组件库中所占服务个数,p(scj|ci)代表在兴趣类别ci中组件scj出现的次数;
2)根据概率P(ci|scj)利用朴素贝叶斯分类器计算约减后的服务组件集SC(sc1,sc2,...,scn1)属于各类兴趣的概率:
P(ci|sc1,sc2,…,scn1)∝P(sc1,sc2,...,scn1|ci)P(ci),
其中,P(ci)代表兴趣类别ci在整个兴趣类别组件库中占的比例;
3)选择概率最大的类别作为用户的兴趣:
所述步骤3c)中根据用户兴趣推荐服务组合的方法为:
1)选择服务组合数据集中和用户兴趣相符的服务组合;
2)使用n-gram算法计算服务组合和用户已选择的约减后的服务组件集之间的距离;
3)根据距离的大小推荐和用户兴趣最相似的服务组合,求服务组合Sl和Sp的相似度的公式如下:Sim(Sl,Sp)=GN(Sl)+GN(Sp)-2×|GN(Sl)∩GN(Sp)|;
其中,GN(Sl)表示服务组合Sl的服务组件个数,GN(Sp)表示服务组合Sp的服务组件个数,GN(Sl)∩GN(Sp)代表两个服务组合中相同的组件个数。
2.根据权利要求1所述的基于链接预测的服务组合推荐方法,其特征在于,所述步骤
1a)中整理用户服务数据集的具体方法为:
1)将爬虫抓取的服务访问数据集放入到mysql数据库
2)将mysql数据库中的服务访问数据集通过sql技术转换成用户-服务矩阵形式,即user1:service1->service2->…形式,其中,服务service1、service2...按用户选择时间的先后顺序排序,->表示前后服务之间具有直接链接关系;
3)将用户-服务矩阵中数据按行读到一个临时列表中,对临时列表中每行数据的服务数进行长度判断,将长度大于阈值的行读入文本userInvocationDataSet.txt中。
3.根据权利要求1所述的基于链接预测的服务组合推荐方法,其特征在于,所述步骤
1b)中整理服务组合数据集的具体方法为:
1)将网上下载的服务组合模板库中的服务组合按类别排序;
2)剔除服务组件少于3的服务组合和评分低于2的服务组合,将剩余的服务组合读入到serviceProcessClass.txt中。
4.根据权利要求1 至 3 中任意一项所述的基于链接预测的服务组合推荐方法,其特征在于,包括offline训练和online推荐,其中,offline训练又包括两个部分:(1)对用户服务数据集的训练得出各服务组件的hub值;(2)对服务组合数据集的训练,通过信息增益算法得出服务组件的分类增益值,通过条件概率得出每个服务组件的兴趣类别概率;Online推荐包含两个部分:(1)是通过用户调用服务的行为推荐出能和当下服务链接并且hub值大的服务组件,(2)是记录用户调用的服务集合,通过对服务集合的类别判断得出用户当下的服务组合兴趣,然后推荐出和用户兴趣相符的服务组合,其具体步骤如下:
步骤1,将爬虫抓取的服务访问数据处理成用户-服务的矩阵形式,将非活跃用户的数据剔除,将活跃用户的服务调用数据写入到文本userInvocationDataSet.txt中;
步骤2,将用户服务数据集中的前n项作为种子服务集合,然后将能与种子服务相链接的服务一起加入到扩充服务集合中,分解扩充服务集合成为二部图,然后训练矩阵hub和矩阵authority得到节点迁移图;
步骤3,根据二部图和节点迁移图,通过公式 计算每个节点的hub值,然后根据hub值对服务组件进行排序,并写入文件hubvalueSort.txt中;
步骤4,在服务组合模板库中,将单一的、未完整的组合从数据集中剔除,将访问次数超过万次访问且评分大于等于3分的服务组合写入到文本serviceProcessClass.txt中;
步骤5,训练数据集serviceProcessClass.txt,通过信息增益算法得到每个服务组件的增益值;
步骤6,将该服务组件作为key、增益值作为value,以servicenode:IGvalue形式放入一个字典serviceNodeIg.txt中;
步骤7,训练数据集serviceProcessClass.txt,将各组件属于各类别的概率统计出来放入字典servicenodeprobability.txt中,其中,服务组件作为key,类别概率值作为value;
步骤8,用户点击或者调用一个服务组件;
步骤9,从文件hubvalueSort.txt中检索和此服务能链接的服务组件,挑选前k项推荐给用户;
步骤10,用户从推荐列表中调用一个服务组件时,系统继续推荐能与所选服务组件相链接的服务组件;
步骤11-14,重复上述过程,在用户点击推荐列表中的服务组件后,系统继续给用户推荐单个列表,用户也可根据兴趣自己随机调用其他服务组件;
步骤15,系统记录用户调用的服务组件集,包括自己随机选择的服务组件和推荐列表中选择的服务组,将其放入到一个列表serviceInvocationSet[]中;
步骤16,以列表serviceInvocationSet[]内的服务作为键值key,查找字典serviceNodeIg.txt中,设定阈值,大于阈值的返回,将小于阈值的服务组件剔除掉;
步骤17,将列表serviveInvacationSet[]中小于阈值的服务组件剔除掉后,生成一个新的列表servicetoClass[];
步骤18,将列表servicetoClass[ ]中的服务组件作为键值,在字典
servicenodeprobability.txt中查询每个服务组件的value即为每个服务组件所属类别的概率值;
步骤19,将上一步得到的服务组件所属类别的概率值相乘,得到该用户属于各个兴趣类别的概率值;
步骤20,将各类概率值从高到低排列,将概率最高的那个类别视为用户当下的兴趣,也可以根据用户的要求,选出两个兴趣类;
步骤21,将服务组合数据集中的属于用户兴趣的列表选出来,放入到一个临时列表中tempServiceProcessList[]中;
步骤22,将临时列表tempServiceProcessList[]中的服务组合和用户已选择的服务组件集做相似度计算,将相似度最大的服务组合推荐给用户,用户就能得到与其兴趣最相似的服务组合列表;
步骤1-7属于离线训练,步骤1-3属于离线训练用户服务数据集,步骤4-7是离线训练服务组合数据集;步骤8-22属于在线推荐,步骤8-14属于链接模型训练以及预测的阶段,步骤
15-22属于数据组合推荐阶段。

说明书全文

一种基于链接预测的服务组合推荐方法

技术领域

[0001] 本发明涉及计算机科学中服务计算的技术领域,尤其涉及一种基于链接预测的服务组合推荐方法,基于合并链接预测和分类算法为用户在服务组合时推荐服务组件和服务组合的智能方法。

背景技术

[0002] 在面向服务的体系架构SOA(service oriented architecture)的技术支持下,基于SOAP(Simple Object Access Protocol)协议,用WSDL(Web Services Description Language)文档描述的网络服务被广泛运用在互联网的各个领域,服务计算的目的是要将不同功能的网络服务无缝组合成功能更加强大的增值服务,进而满足用户多样化的需求。Web2.0和Internet的迅猛发展,使得Web应用(例如维基百科、微博、YouTube)内容创建过程中参与的用户不断增加。随着服务组合工具的大量出现,用户不再满足单一的服务,而越来越多的用户社区也从已有的单个服务组合生成自己的应用,例如使用IFTTT(If This Then That)定制雾霾短信,这开启了用户创建服务的趋势,使普通用户从创建内容转向创建业务流程。
[0003] 然而传统的服务技术体系过于复杂,可扩展性差,对普通用户来说组合不易。而轻量级的WEB-API由于易访问、可扩展和易开发等特点,成为面向普通用户进行轻量级服务组合的发展方向。面向用户的轻量级业务组合模式是基于服务组合的概念,让用户在一个轻量级的业务组合平台上对服务组件进行拖拽和连线操作,将存在的简单服务聚合为一个具有附加值的新服务从而生成满足用户个性化需求。一般来说,轻量级业务组合平台工具能够支持将第三方的服务资源封装为平台可用的图形化的组件,例如RSS/Atom feeds,web services以及第三方公开的各种编程API(google maps,flick之类),前端用户无需编程技能就可以通过可视化的操作界面来创建服务应用。产业界和学术界都对这种面向用户的轻量级的服务组合方式产生了极大兴趣,将轻量级服务组合称之为服务组合或者mashup。例如Yahoo公司发布的Yahoo!pipe可以将feed、webpage以及第三方services封装为组件,这些组件可以被用户拖拽到workspaces中,在组件与组件之间进行使用操作符来满足用户的需要。
[0004] 虽然服务组合工具受到用户认可,但是普通用户在组合轻量级服务的时候依然需要一些策略指引,这些指引包括当用户拖拽一些服务组件时,那些能和这些服务组件链接的服务应该放入到推荐列表里推荐给用户,另一方面,当用户在选择推荐列表中的服务时,要通过分类器去提取用户的服务组合兴趣,将已有的服务组合推荐给用户。对于用户而言,推荐单个服务可以缩减用户创建服务组合的开销,通过算法获取到用户的当下兴趣后推荐满足用户兴趣的服务组合也能让模板库中的优秀服务组合能够复用,所以推荐策略对于用户创建服务组合的发展有着重要的推动作用。

发明内容

[0005] 针对现有方法中只关注单个服务API或服务流程方案,忽视了在现实中用户组建服务时既有单个服务推荐需要也有业务流程推荐需求的技术问题,本发明提出一种基于链接预测的服务组合推荐方法,可以根据用户创建服务组合中的行为推荐用户所需要的服务组件和服务组合,是一种辅助决策的智能策略;通过链接预测的算法给用户推荐单个服务组件,根据朴素贝叶斯分类器给用户推荐符合用户兴趣的服务组合。
[0006] 为了达到上述目的,本发明的技术方案是这样实现的:一种基于链接预测的服务组合推荐方法,包括数据集整理、链接模型训练与预测、服务组合推荐,其步骤如下:
[0007] 数据集整理包括:1a)整理用户服务数据集;1b)整理服务组合数据集;
[0008] 链接模型训练与预测包括:2a)通过用户服务数据集中的服务链接关系扩充服务组件集合;2b)将扩充服务组件集合分解成二部图;2c)根据二部图计算每个服务的hub值,利用hub值给用户推荐能与其链接的服务;
[0009] 服务组合推荐包括:3a)确定用户已选择的服务组件集,通过信息增益算法约减服务组件集;3b)根据约减后的服务组件集调用朴素贝叶斯分类器确定用户的兴趣;3c)根据步骤3a)中确定的用户已选择的服务组件集和步骤3b)中确定的用户兴趣,向用户推荐相似的服务组合。
[0010] 所述步骤1a)中整理用户服务数据集的具体方法为:
[0011] 1)将爬虫抓取的服务访问数据集放入到mysql数据库
[0012] 2)将mysql数据库中的服务访问数据集通过sql技术转换成用户-服务矩阵形式,即user1:service1->service2->…形式,其中,服务service1、service2...按用户选择时间的先后顺序排序,->表示前后服务之间具有直接链接关系;
[0013] 3)将数据集中数据按行读到一个临时列表中,对每行用户选择的服务数进行长度判断,将长度大于阈值的行读入文本userInvocationDataSet.txt中。
[0014] 所述步骤1b)中整理服务组合数据集的具体方法为:
[0015] 1)将网上下载的服务组合模板库中的服务组合按类别排序;
[0016] 2)剔除服务组件少于3的服务组合和评分低于2的服务组合,将优秀的服务组合读入到serviceProcessClass.txt中。
[0017] 所述步骤2a)通过用户服务数据集中服务链接关系扩充服务组件集合的方法为:
[0018] 1)在用户服务数据集中找到用户的前n项服务(默认值一般为4)作为种子服务集合,此集合为服务组件的根集合;
[0019] 2)在种子服务集合的基础上,通过查找用户服务数据集,找到与种子服务集合有直接链接关系的服务组件并将其纳入集合中,形成扩充服务组件集合。
[0020] 所述步骤2b)中扩充服务组件集合分解成二部图的方法如下:
[0021] 1)将扩展服务组件集合中的服务组件转换为二个子集合hub和authority;
[0022] 2)如果一个服务组件有出度,将此组件加入出度子集合,此集合定义为hub子集合;如果一个服务组件有入度,将此组件加入到入度子集合,此集合定义为authority子集合;当一个服务组件既有出度也有入度时,将此服务组件同时归入上述两个集合中。
[0023] 所述步骤2c)中利用hub值给用户推荐能与其链接的服务的方法为:
[0024] 1)根据二部图的链接关系,通过多次迭代生成hub子集合的节点转移图,即hub集合的连通图;
[0025] 2)根据二部图和节点迁移图计算出hub子集中每个节点ai的权值rai,rai即为节点的hub值,计算公式为:
[0026]
[0027] 其中,A为二部图中hub子集合的节点数,Aj为组件ai所在节点迁移图的节点数,Oj为组件ai所在节点迁移图中包含的出度总数,B(i)为二部图中组件ai的出度个数;
[0028] 3)根据节点迁移图向用户推荐能与其所选服务链接的其他服务,其他服务按照hub值从高到低的顺序排序,即优先推荐与其能链接的hub值比较大的服务组件。
[0029] 所述步骤3a)中通过信息增益算法约减服务组件集的方法为:
[0030] 1)根据服务组合数据集,离线计算服务系统中有这个服务组件的熵H(C);
[0031] 2)根据服务组合数据集,离线计算服务系统中没有这个服务组件的熵H(C|s);
[0032] 3)计算熵H(C)和熵H(C|s)两者差值即为此服务组件的分类增益值;
[0033]
[0034] 其中,P(ci|s)代表服务s属于兴趣类别ci的概率,P(ci)代表兴趣类别ci在所有兴趣类别中所占服务数的比例, 代表兴趣类别ci中不包含服务s的概率;
[0035] 4)将用户已选择的服务组件集根据增益值排序,前n个即为约减后的服务组件集。
[0036] 所述步骤3b)中用贝叶斯分类器确定用户兴趣的方法为:
[0037] 1)根据服务组合数据集,离线计算服务系统中各个服务组件属于不同用户兴趣类别的概率 其中,scj代表服务组件,SC代表用户访问的组件序列(sc1,sc2,...,scn),ci代表不同用户兴趣的类别,(c1,c2,...,ci)表示兴趣类别变量C,n(ci)代表兴趣类别ci在整个类别组件库中所占服务个数,p(scj|ci)代表在兴趣类别ci中组件scj出现的次数;
[0038] 2)根据概率P(ci|scj)利用朴素贝叶斯分类器计算约减后的服务组件集SC(sc1,sc2,...,scn)属于各类兴趣的概率:
[0039] P(ci|sc1,sc2,…,scn)∝P(sc1,sc2,...,scn|ci)P(ci),
[0040]
[0041] 其中,P(ci)代表兴趣类别ci在整个兴趣类别组件库中占的比例;
[0042] 3)选择概率最大的类别作为用户的兴趣:
[0043] 所述步骤3c)中根据用户兴趣推荐服务组合的方法为:
[0044] 1)选择服务组合数据集中和用户兴趣相符的服务组合;
[0045] 2)使用n-gram算法计算服务组合和用户已选择的约减后的服务组件集之间的距离;
[0046] 3)根据距离的大小推荐和用户兴趣最相似的服务组合,求服务组合Sl和Sp的相似度的公式如下:Sim(Sl,Sp)=GN(Sl)+GN(Sp)-2×|GN(Sl)∩GN(Sp)|;
[0047] 其中,GN(Sl)表示服务组合Sl的服务组件个数,GN(Sp)表示服务组合Sp的服务组件个数,GN(Sl)∩GN(Sp)代表两个服务组合中相同的组件个数。
[0048] 本发明包括offline训练和online推荐,其中,offline训练又包括两个部分:(1)对用户服务数据集的训练得出各服务组件的hub值;(2)对服务组合数据集的训练,通过信息增益算法得出服务组件的分类增益值,通过条件概率得出每个服务组件的兴趣类别概率;Online推荐包含两个部分:(1)是通过用户调用服务的行为推荐出能和当下服务链接并且hub值较大的服务组件,(2)是记录用户调用的服务集合,通过对服务集合的类别判断得出用户当下的服务组合兴趣,然后推荐出和用户兴趣相符的服务组合,其具体步骤如下:
[0049] 步骤1,将爬虫抓取的服务访问数据处理成用户-服务的矩阵形式,将非活跃用户的数据剔除,将活跃用户的服务调用数据写入到文本userInvocationDataSet.txt中;
[0050] 步骤2,将用户服务数据集中的前n项作为种子服务集合,然后将能与种子服务相链接的服务一起加入到扩充服务集合中,分解扩充服务集合成为二部图,然后训练矩阵hub和矩阵authority得到节点迁移图;
[0051] 步骤3,根据二部图和节点迁移图,通过公式 计算每个节点的hub值,然后根据hub值对服务组件进行排序,并写入文件hubvalueSort.txt中;
[0052] 步骤4,在服务组合模板库中,将单一的、未完整的组合从数据集中剔除,将访问次数超过万次访问且评分大于等于3分的服务组合写入到文本serviceProcessClass.txt中;
[0053] 步骤5,训练数据集serviceProcessClass.txt,通过信息增益算法得到每个服务组件的增益值;
[0054] 步骤6,将该服务组件作为key、增益值作为value,以servicenode:IGvalue形式放入一个字典serviceNodeIg.txt中;
[0055] 步骤7,训练数据集serviceProcessClass.txt,将各组件属于各类别的概率统计出来放入字典servicenodeprobability.txt中,其中,服务组件作为key,类别概率值作为value;
[0056] 步骤8,用户点击或者调用一个服务组件;
[0057] 步骤9,从文件hubvalueSort.txt中检索和此服务能链接的服务组件,挑选前k项推荐给用户;
[0058] 步骤10,用户从推荐列表中调用一个服务组件时,系统继续推荐能与所选服务组件相链接的服务组件;
[0059] 步骤11-14,重复上述过程,在用户点击推荐列表中的服务组件后,系统继续给用户推荐单个列表,用户也可根据兴趣自己随机调用其他服务组件;
[0060] 步骤15,系统记录用户调用的服务组件集,包括自己随机选择的服务组件和推荐列表中选择的服务组,将其放入到一个列表serviceInvocationSet[]中;
[0061] 步骤16,以列表serviceInvocationSet[]内的服务作为键值key,查找字典serviceNodeIg.txt中,设定阈值,大于阈值的返回,将分类效果不好的服务组件剔除掉;
[0062] 步骤17,将列表serviveInvacationSet[]中分类效果不好的服务组件剔除掉后,生成一个新的列表servicetoClass[];
[0063] 步骤18,将列表servicetoClass[ ]中的服务组件作为键值,在字典servicenodeprobability.txt中查询每个服务组件的value即为每个服务组件所属类别的概率值;
[0064] 步骤19,将上一步得到的服务组件所属类别的概率值相乘,得到该用户属于各个兴趣类别的概率值;
[0065] 步骤20,将各类概率值从高到低排列,一般是将概率最高的那个类别视为用户当下的兴趣,也可以根据用户的要求,选出两个兴趣类;
[0066] 步骤21,将服务组合数据集中的属于用户兴趣的列表选出来,放入到一个临时列表中tempServiceProcessList[]中;
[0067] 步骤22,将临时列表tempServiceProcessList[]中的服务组合和用户已选择的服务组件集做相似度计算,将相似度最大的服务组合推荐给用户,用户就能得到与其兴趣最相似的服务组合列表;
[0068] 步骤1-7属于离线训练,步骤1-3属于离线训练用户服务数据集,步骤4-7是离线训练服务组合数据集;步骤8-22属于在线推荐,步骤8-14属于链接模型训练以及预测的阶段,步骤15-22属于数据组合推荐阶段。
[0069] 本发明的有益效果:链接预测算法能够为用户推荐和调用相匹配的服务,缓解了用户在组建服务时出现服务不匹配的问题;带信息增益的朴素贝叶斯算法能为用户提供满足用户兴趣的服务组合,不仅缩减了用户创建服务所需开销,还能让模板库中组合得到复用,对轻量级服务组合的发展具有重要推动作用。附图说明
[0070] 为了更清楚地说明本发明实施例现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0071] 图1为本发明的流程图
[0072] 图2为本发明服务组件的二部图转换过程。
[0073] 图3为本发明系统框架图。

具体实施方式

[0074] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0075] 如图1所示,一种基于链接预测和分类算法的服务组合推荐方法,其特点在于:包括数据集整理、链接模型训练与预测、服务组合推荐,具体步骤如下:
[0076] 步骤一:数据集整理。
[0077] 数据集整理是将非活跃用户的服务访问数据和服务组合模板库中的半成品数据视为噪音数据,将需要的数据转化为两个数据集,包括用户服务数据集和服务组合数据集。
[0078] 1a)整理用户服务数据集。
[0079] 将抓取的服务访问信息转换为用户-服务矩阵,然后将用户-服务矩阵中那些不活跃用户的数据清洗掉,将活跃用户数据放入到文本中作为实验使用的数据集,即将收集到的用户访问数据集通过sql数据库技术整理成用户-服务矩阵,通过readlines函数并将其按行读入一个line,通过长度函数len(line)来判断用户是否是活跃用户(访问记录大于5的用户可以看作活跃用户),将活跃用户的访问记录写入文本userInvocationDataSet.txt中。所述整理用户服务数据集的具体过程如下:
[0080] 1)将爬虫抓取的服务访问数据集放入到mysql数据库;
[0081] 2)将mysql数据库中的服务访问数据集通过sql技术转换成用户-服务矩阵形式,即user1:service1->service2->…形式,其中,服务service1、service2...按用户选择时间的先后顺序排序,->表示前后服务之间具有直接链接关系;
[0082] 3)将数据集中数据按行读到一个临时列表中,对每行用户选择的服务数进行长度判断,将那些大于阈值的行读入文本userInvocationDataSet.txt中,在服务领域内,阈值选取默认为5。
[0083] 1b)整理服务组合数据集。
[0084] 删除服务组合模板库中未完成的服务组合和功能缺失的服务组合(即删除那些长度少于3的无效服务组合),删除评分低于2分的服务组合,将数据写入文本serviceProcessClass.txt中。
[0085] 所述的整理服务组合数据集的具体过程如下:
[0086] 1)将服务组合模板库(网上可以直接下载)中的服务组合按类别排序;
[0087] 2)剔除服务组件少于3的服务组合和评分低于2的服务组合,将优秀的服务组合读入到serviceProcessClass.txt中。
[0088] 步骤二:链接模型训练与预测。
[0089] 2a)通过用户服务数据集中的服务链接关系扩充服务组件集合。
[0090] 从步骤1a)得到的用户服务数据集中选中用户的前n项服务作为种子服务集合,然后将与种子服务集合能直接链接的其他服务组件也放到一起组成一个扩充服务集合。
[0091] 所述的通过用户服务数据集中服务链接关系扩充服务组件集合过程如下:
[0092] 1)在用户服务数据集中找到用户的前n项服务(默认值一般为4)作为种子服务集合,此集合为服务组件的根集合。
[0093] 2)在种子服务集合的基础上,通过查找用户服务数据集,找到与种子服务集合有直接链接关系的服务组件并将其纳入集合中,形成扩充服务组件集合。
[0094] 2b)将扩充服务组件集合分解成二部图。即将扩充服务组件集合划分为二个子集合,一个是出度子集合hub,一个是入度子集合authority,然后分别训练hub矩阵和authority矩阵。
[0095] 所述的扩充服务组件集合分解成二部图的过程如下:
[0096] 1)将扩展服务组件集合中的服务组件转换为二个子集合hub和authority;
[0097] 2)如果一个服务组件有出度,将此组件加入出度子集合,此集合定义为hub子集合;如果一个服务组件有入度,将此组件加入到入度子集合,此集合定义为authority子集合。当一个服务组件既有出链也有入链的时候,将此服务组件同时归入上述两个集合中。
[0098] 在传统的链接预测hits算法中,一个组件的入度也叫权威度,越多代表服务质量和服务功能越好。一个组件的出度叫丰富度,出度越多代表能组成越丰富的场景应用。对于轻量级业务组合来说,出度是比较重要的,它保证了推荐出的组件有着更丰富的可能,从而避免推荐出的组件在后面的推荐中找不到用户本来意图的场景。
[0099] 二部图的生成过程如图2所示,扩充服务组件集合由9个服务组件构成,以节点SC4为例,有出链指向节点SC8和SC9,所以SC4节点要放入hub集合,但节点SC2也指向SC4节点,所以节点SC4也要放入authority集合。节点的出链和入链保留,作为二部图的边。
[0100] 2c)根据二部图计算每个服务的hub值,利用hub值给用户推荐能与其链接的服务。
[0101] 根据二部图中的链接关系生成每个服务组件的hub值(即服务的出度),当用户调用单个服务时,给用户推荐能与其链接(连通)的服务,按照hub值从高到低的顺序排序,即优先推荐与其能链接的hub值比较大的服务组件。
[0102] 所述利用hub值给用户推荐能与其链接的服务的方法为:
[0103] 1)得到服务的hub值的过程如下:根据二部图的链接关系,通过多次迭代生成hub集合的节点转移图,即hub集合的连通图。
[0104] 节点转移图的生成过程如图2所示,在二部图的hub集合中,SC1,SC2,SC3都跟authority集合的SC4有边相连,经过迭代后,在节点转移图中,认为SC1,SC2,SC3相互直接连通。SC5,SC6跟authority集合的SC7有边相连,经过迭代后,在节点转移图中,认为SC5和SC6相互直接连通。多次迭代的意义在于若两个节点不直接相连,但是可以通过若干个中间节点连通,那么多次迭代后,在节点迁移图中可以看作是这两个节点直接连通,两个节点间分别建立起一个出链和入链。此外由于hub集合中的每个节点跟其自身都是连通的,因此在节点转移图中,hub集合中的每个节点包含一条指向自身的边。
[0105] 2)根据二部图和节点迁移图,可以计算出hub子集中每个节点ai的权值rai,rai即为节点的hub值,计算公式为:
[0106]
[0107] 其中,A为二部图中hub子集合的节点数,这个因子对于该子集合中的所有节点都是一样的,是个归一化因子,保证权值得分在0到1之间。Aj为组件ai所在节点迁移图的节点数,节点数越多,则组件ai的hub值越大。Oj为组件ai所在节点迁移图中包含的出度总数,出度越多,组件ai的hub值越小。B(i)为二部图中组件ai的出度个数,出度越多,此组件的hub值就越大。
[0108] 3)根据节点迁移图,向用户推荐能与其所选服务链接(连通)的其他服务,其他服务按照hub值从高到低的顺序排序,即优先推荐与其能链接的hub值比较大的服务组件。
[0109] 步骤三:服务组合推荐
[0110] 3a)确定用户已选择的服务组件集,通过信息增益算法约减服务组件集。用户已选择的服务组件集由两部分组成:一部分是用户根据自主兴趣随机选择的服务,一部分是根据2c)推荐选择的服务。然后通过信息增益算法可以得出各个服务的分类增益值IG(s),将服务组件集进行增益值排序,将前n个视为有效服务组件集合,此外还可统计出各个服务属于不同用户兴趣类别的概率P(ci|s)。
[0111] 所述的通过信息增益算法约减服务组件集的具体过程如下:
[0112] 1)根据服务组合数据集,离线计算服务系统中有这个服务组件的熵H(C);
[0113] 2)根据服务组合数据集,离线计算服务系统中没有这个服务组件的熵H(C|s);
[0114] 3)计算熵H(C)和熵H(C|s)两者差值即为此服务组件的分类增益值;
[0115]
[0116] 其中,P(ci|s)代表服务s属于兴趣类别ci的概率,由服务s中属于兴趣ci的服务个数除以服务s的总个数。P(ci)代表兴趣类别ci在所有兴趣类别中所占服务数的比例,由兴趣类别ci的服务个数除以所有兴趣类别的总服务个数。 代表兴趣类别ci中不包含服务s的概率,由兴趣类别ci中不包含s的服务个数除以兴趣类别ci的总服务个数。
[0117] 4)将用户已选择的服务组件集根据增益值排序,前n个即为约减后的服务组件集。
[0118] 3b)根据约减后的服务组件集调用朴素贝叶斯分类器确定用户的兴趣。根据朴素贝叶斯分类器计算出该服务组件集合属于各类别的概率,概率最高的类别即为用户当前的兴趣。
[0119] 所述的用贝叶斯分类器确定用户兴趣的具体过程如下:
[0120] 1)根据服务组合数据集,离线计算服务系统中各个服务组件属于不同用户兴趣类别的概率P(ci|scj),其中scj代表服务组件(实际上服务组件就是用户访问集合中增益值较大的服务),SC代表用户访问的组件序列(sc1,sc2,...,scn),ci代表不同用户兴趣的类别,(c1,c2,...,ci)表示兴趣类别变量C,n(ci)代表兴趣ci在整个类别组件库中所占服务个数,p(scj|ci)代表在兴趣类别ci中组件scj出现的次数。
[0121]
[0122] 2)根据概率P(ci|sc),利用朴素贝叶斯分类器去计算约减后的服务组件集SC(sc1,sc2,...,scn)属于各类兴趣的概率;
[0123] P(ci|sc1,sc2,…,scn)∝P(sc1,sc2,...,scn|ci)P(ci)
[0124]
[0125] 其中P(ci)代表兴趣ci在整个兴趣类别组件库中占的比例。
[0126] 3)选择概率最大的类别作为用户的兴趣。
[0127]
[0128] 3c)根据3a)中确定的用户已选择的服务组件集和3b)中确定的用户兴趣,向用户推荐相似的服务组合。
[0129] 将服务组合数据集中和用户兴趣相符的服务组合提取出来,利用n-gram距离计算这些服务组合与用户已选择的服务组件集之间的相似度,然后按照相似度由高到低的排序推荐给用户。
[0130] 所述的根据用户兴趣推荐服务组合具体过程如下:
[0131] 1)选择服务组合数据集中和用户兴趣相符的服务组合;
[0132] 2)使用n-gram算法计算服务组合和用户已选择的约减后的服务组件集之间的距离;
[0133] 3)根据距离的大小推荐和用户兴趣最相似的服务组合,距离越小越相似,求Sl和Sp的相似度的公式如下:
[0134] Sim(Sl,Sp)=GN(Sl)+GN(Sp)-2×|GN(Sl)∩GN(Sp)|
[0135] 其中GN(Sl)表示服务组合Sl的服务组件个数,GN(Sp)表示服务组合Sp的服务组件个数,GN(Sl)∩GN(Sp)代表两个服务组合中相同的组件个数。
[0136] 如图3所示,本发明的框架图分为两个部分:offline训练和online推荐,其中,offline训练又包括两个部分:(1)对用户服务数据集的训练得出各服务组件的hub值;(2)对服务组合数据集的训练,通过信息增益算法得出服务组件的分类增益值,通过条件概率得出每个服务组件的类别概率。Online推荐包含两个部分:(1)是通过用户调用服务的行为推荐出能和当下服务链接并且hub值较大的服务组件,(2)是记录用户调用的服务集合,通过对服务集合的类别判断得出用户当下的服务组合兴趣,然后推荐出和用户兴趣相符的服务组合。从图3中可以看到,其中步骤1-7属于离线训练,步骤8-22属于在线推荐。
[0137] 步骤1-3属于离线训练用户服务数据集,步骤4-7是离线训练服务组合数据集。
[0138] 步骤1,将爬虫抓取的服务访问数据处理成用户-服务的矩阵形式,将非活跃用户的数据剔除,将活跃用户的服务调用数据写入到userInvocationDataSet.txt文本中。
[0139] 步骤2,将用户服务数据集中的前n项作为种子服务集合,然后将能与种子服务相链接的服务一起加入到扩充服务集合中,分解扩充服务集合成为二部图,然后训练矩阵hub和矩阵authority得到节点迁移图;
[0140] 步骤3,根据二部图和节点迁移图,通过公式 计算每个节点的hub值,然后根据hub值对服务组件进行排序,并写入文件hubvalueSort.txt中;
[0141] 步骤4,在服务组合模板库中,将单一的、未完整的组合从数据集中剔除,将访问次数超过万次访问且评分大于等于3分的服务组合写入到serviceProcessClass.txt文本中。
[0142] 步骤5,训练serviceProcessClass.txt数据集,通过信息增益算法得到每个服务组件的增益值。
[0143] 步骤6,将该服务组件作为key,增益值作为value,以servicenode:IGvalue形式放入一个字典serviceNodeIg.txt当中。
[0144] 步骤7,训练serviceProcessClass.txt数据集,将各组件属于各类别的概率统计出来放入字典servicenodeprobability.txt中,其中服务组件作为key,类别概率值作为value。
[0145] 架构图3中步骤8-14属于链接模型训练以及预测的阶段,步骤15-22属于数据组合推荐阶段。
[0146] 步骤8,用户点击或者调用一个服务组件。
[0147] 步骤9,从hubvalueSort.txt中检索和此服务能链接的服务组件,挑选前k项推荐给用户。
[0148] 步骤10,用户从推荐列表中调用一个服务组件时,系统继续推荐能与所选服务组件相链接的服务组件。
[0149] 步骤11-14,重复上述过程,在用户点击推荐列表中的服务组件后,系统继续给用户推荐单个列表,当然用户也可以根据兴趣自己随机调用其他服务组件。
[0150] 步骤15,系统记录用户调用的服务组件集,包括自己随机选择的服务组件和推荐列表中选择的服务组,将其放入到一个列表serviceInvocationSet[]中。
[0151] 步骤16,以列表serviceInvocationSet[ ]内的服务作为键值key,查找serviceNodeIg.txt文件,设定阈值,大于阈值的返回,目的是将分类效果不好的服务组件剔除掉。
[0152] 步骤17,将列表serviveInvacationSet[]中分类效果不好的服务组件剔除掉后,生成一个新的列表servicetoClass[]。
[0153] 步骤18,将列表servicetoClass[ ]中的服务组件作为键值,在servicenodeprobability.txt文件中查询每个服务组件的value即为每个服务组件所属类别的概率值。
[0154] 步骤19,将上一步得到的服务组件所属类别的概率值相乘,即得到该用户属于各个兴趣类别的概率值。
[0155] 步骤20,将各类概率值从高到低排列,一般是将概率最高的那个类别视为用户当下的兴趣,当然也可以根据用户的要求,选出两个兴趣类。
[0156] 步骤21,将服务组合数据集中的属于用户兴趣的列表选出来,放入到一个临时列表中tempServiceProcessList[]中。
[0157] 步骤22,将tempServiceProcessList[]中的服务组合和用户已选择的服务组件集做相似度计算,将相似度最大的服务组合推荐给用户,这样用户就能得到与其兴趣最相似的服务组合列表。
[0158] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈