一种基于服务组合历史的服务分类和推荐方法

文档序号:6427247阅读:135来源:国知局
专利名称:一种基于服务组合历史的服务分类和推荐方法
技术领域
本发明属于服务计算技术领域,特别是涉及一种基于二部图及其投影的服务分类和推荐方法。
背景技术
面向服务的计算(Service-Oriented Computing, S0C)是针对分布式系统的新型计算模式,为解决分布异构环境中跨组织敏捷应用集成问题带来了诸多便利,已成为软件领域最热门的话题之一。SOC倡导以服务及其组合为基础构造应用的开发模式,导致软件系统的主要形态、生产方式、运行方式和使用方式都发生了巨大变化,软件系统正处在一个由软件服务实体组成的开放协同的软件环境中。可以想象,未来的软件系统都可以由网络上分布的各种服务动态组合而成,我们将生活在“无网不在、无服务不在”的网络化软件世界里。基于服务的软件开发必将成为业界开发软件采用的主要方式。随着软件体系结构研究的深入,人们逐渐意识到软件结构是决定软件质量的重要因素。一些研究者将软件系统抽象成网络结构(软件网络),即将软件元素(数据对象、 方法、模块、类、构件、子系统等)视为节点,元素之间的关系作为连接各节点的无向(有向) 边,采取软件工程和复杂网络相关理论相结合的研究方法,以分析软件结构特征为着眼点,以理解软件的结构特性,为软件开发和维护提供支持为目标,从表征、分析、度量和应用四个方面来对面向对象软件静态结构进行分析,取得了一些成果,这些研究成果对指导面向对象(Object-Oriented,00)软件的开发具有一定的指导意义。如今面向服务软件 (Service-Oriented Software, SOS)已经日益成为主流,我们有必要研究SOS的结构,挖掘其结构中蕴含的知识,更好地指导SOS的开发。服务发现和服务组合吸引了国内外众多学者的关注,成为SOC领域中的关键问题。但是目前的服务缺少分类信息,给服务发现、检索以及服务资源的管理带来不便。如果采用手工的方式对服务分类,当服务数量大时显然是不可取的,因此如何实现服务的自动分类构成SOC的挑战。与此同时,服务组合中服务的可组合关系往往是根据服务间的输入输出来进行判断的,这一原则过于严格。那么除了输入输出匹配外,是否存在一种新的服务匹配方法,挖掘服务间的潜在可组合关系。

发明内容
本发明主要是解决现有技术所存在的目前的服务缺少分类信息,给服务发现、检索以及服务资源的管理带来不便等的技术问题;提供了一种可以实现服务的自动分类,为服务添加分类信息,从而给服务发现、检索、以及服务资源的管理提供便利的一种基于服务组合历史的服务分类和推荐方法。本发明还有一目的是解决现有技术所存在的服务组合中服务的可组合关系往往是根据服务间的输入输出来进行判断的,这一原则过于严格等的技术问题;提供了一种重用历史开发经验,为软件开发者提供可组合的服务,从而为面向服务的软件开发提供支持,同时,利用服务组合(SOS)的历史信息,从结构角度(二部图及其投影)入手,挖掘结构中蕴含的知识,最终实现服务分类和和服务推荐,方法利用的信息少,并且简便易操作的一种基于服务组合历史的服务分类和推荐方法。 本发明的上述技术问题主要是通过下述技术方案得以解决的
一种基于服务组合历史的服务分类和推荐方法,其特征在于,包括服务分类步骤以及服务推荐步骤,具体方法如下 所述的服务分类步骤包括
步骤1.1,收集SOS的元信息数据,包括S0S的名称、SOS描述信息、SOS使用的服务集合、标识SOS的标签、SOS加入的时间、SOS的开发者、SOS的地址,并将收集SOS的元信息数据进行数据错误处理,这些处理后的数据存于本地数据库;
步骤1. 2,解析步骤1. 1获得的数据,分析SOS和服务之间的构成关系,并将这种构成关系用二部图表示,所述二部图包含两类节点,包括代表SOS的节点和代表服务的节点;
步骤1. 3,将步骤1. 2中得到的二部图在SOS维度进行投影,得到相应的一维投影图一SOS相似步骤1. 4,利用聚类算法或社区发现算法对步骤1. 3中的SOS相似图中的节点进行聚类,将SOS节点划分成若干类并检查每一类中各SOS后为各类指定类别名;
步骤1. 5,在步骤1. 4得到的SOS分类结果的基础上,根据步骤1. 2中SOS和服务间二部图,计算每一个服务在各类中参与的SOS数量,然后将其分到SOS数量最大的那个类中, 完成服务分类;
所述的服务推荐步骤如下包括
步骤2. 1,将步骤1. 2中得到的二部图在服务维度进行投影,得到相应的一维投影图即服务组合图,所述服务组合图的节点代表服务;边代表这条边两端节点表示的服务间的可组合关系;边上的权值表示这种可组合关系的强度,该权值可以通过这条边两端节点代表的服务在SOS中的共现关系来度量;
步骤2. 2,根据步骤1.2中得到的SOS和服务的二部图分析SOS和服务间的使用模式,即SOS使用几个服务,服务被几个SOS使用,并分析这些数字的分布, 从而确定大部分SOS使用服务数的一个较小范围[足幻,确定范围[足钔的方法为若有#个303,将这#个SOS按其使用的服务数从小到大排序,取排在前面的
「JV>cm%l个S0S,其中m%力大于等于go 小于100%的百分值,设排在第「JV5ci I%1位的
SOS使用的服务数为认那么就设置[Α,Β]为[1,奶;
步骤2. 3,将使用频率高的前i 个服务作为核心服务; 步骤2. 4,选择执行以下步骤
步骤2. 41,若用户还没选择任何服务,则为其推荐步骤2. 3中的核心服务; 步骤2. 42,若用户已经选择了一个服务,则根据步骤2. 1中服务组合图为其推荐与该服务相连的,并且它们间权值排在topi的服务α是一个用户输入的参数,若A大于该服务的度则A为该服务的度,否则A不变。A可以取大于0的任意整数。但是一般A值越大, 推荐算法在推荐服务的时候所需时间越长;
步骤2. 43,若用户已选择了 2项(包括2项)以上的服务首先求这些服务的所有两两组合;然后针对每一种组合,在服务组合图中求以这一组合中两个服务为起止点,且包含其它服务(所选择服务中除这一组合中两个服务外的服务)的所有路径;最后分别求每条路径的边权和,并按路径的边权和对所有路径降序排列,将topi路径推荐给用户(一般推荐的都是路径上节点数在5以内的路径)。在上述的一种基于服务组合历史的服务分类和推荐方法,所述步骤1. 2中,所述代表SOS的节点和代表服务的节点均存在边,表示SOS和服务之间的构成关系,S卩如果一个 SOS由3个服务构成,则代表这个SOS的节点分别和代表服务的3个节点间存在边,但是同类的节点间不存在边,即代表SOS的节点间和代表服务的节点间不存在边。在上述的一种基于服务组合历史的服务分类和推荐方法,所述步骤1. 3中,SOS相似图的节点代表SOS软件;网络的边表示其两端SOS间存在相似性关系,即SOS间存在相似性则有边,没有任何相似性则无边;边上的权值,表示这两个SOS间的相似度,该权值可以通过这两个SOS之间元信息进行度量,包括描述信息的相似性、共用的服务、共用的标签、 共同的开发者。因此,本发明具有如下优点1.可以实现服务的自动分类,为服务添加分类信息, 从而给服务发现、检索、以及服务资源的管理提供便利;2.重用历史开发经验,为软件开发者提供可组合的服务,从而为面向服务的软件开发提供支持,同时,利用服务组合(SOS)的历史信息,从结构角度(二部图及其投影)入手,挖掘结构中蕴含的知识,最终实现服务分类和和服务推荐,方法利用的信息少,并且简便易操作。


图1 mashup和API服务二部图及其投影图示意图; 图2为本实施例中最终分类后的分类1结果举例;
图3为本实施例中最终分类后的分类2结果举例。
具体实施例方式下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。实施例
本实施例是基于Programmableffeb, Programmableffeb是著名的mashup禾口开放API月艮务目录,到2011年2月止已罗列了 5,000多个mashup和3,000多个API服务,并提供了 mashup和API服务的一些注册信息,包括它们的名字、URL、提供者、标签等。mashup是由 API服务组合得到的S0S,API是服务,因此符合本发明对数据的要求。为了便于实施,本发明以ftOgrammabIeWeb上的数据为载体,提供了实施例。本实施例包括包括服务分类步骤以及服务推荐步骤,具体方法如下 1、服务分类步骤
mashup是由API服务通过组合构成的,可以看成一个大粒度的服务。为了实现服务 (mashup、API)的自动分类
步骤3. 1,使用网爬工具将ProgrammableWeb上从2005年(建站时)到2011年1月12 日(实例工作开展时)所有mashup应用的名称、描述信息、API和标签信息爬了下来,存储在本地数据库中。ProgrammableWeb上的数据都是由用户提交的,存在一定的随意性,数据存在一些错误(1)有些mashup存在重复注册现象,一些mashup虽然它们名称不一样,但是它们的其它信息都一样。对于这些mashup在数据集中只保存一份。(2)有些mashup仅提供了名称,但是其它的注册信息缺失。这些mashup将不作为实验数据。同时,用于标识 mashup的标签也存在不一致,同一种含义的标签有多种不同的表现形式,如“api”、“Api” 和“APIs”都表示API,但是形式不同,有些标签甚至拼写错误。使用Suffix Stripping Algorithm对标签进行预处理,并转化成同一词性,尽量消除存在的不一致性。最终,数据集包含5,115个mashup、750个API和1,489个标签。步骤3. 2,解析步骤3. 1获得的数据,分析mashup和API服务之间的构成关系,并将这种构成关系用二部图(2-mode graph)表示。该二部图包含两类节点,即代表mahsup的节点和代表API服务的节点。这两类节点间存在边,表示mashup使用了该API服务(见图 1)。步骤3. 3,将步骤3. 2中得到的二部图在mashup维度进行投影,得到相应的一维投影图——mashup相似图(见图1)。mashup相似图中的节点代表mashup ;网络的边表示其两端mashup间存在相似性关系,即mashup间存在相似性则有边,没有任何相似性则无边;边上的权值,表示这两个mashup间的相似度。本例中mashup之间的相似度由两部分构成,由共用API产生的相似度和由共用标签产生的相似度,是这两个部分的加权和。这两个部分的相似度通过Jacard相似度系数(Jacard similarity coefficient)计算,即由API (标签)产生的相似度在数值上等于由API (标签)的交集的秩与API (标签)并集的秩的比值。步骤3. 4,修改Newman M E J提出的快速算法,使其可以处理加权图,然后用于对 mashup相似图进行聚类,得到17个社区。然后将这些社区中个体数少的几个社区去掉,最终得到5个类别。通过对这5个分类的手工抽样检查可知分类1中的mashup主要与手机移动通信有关的;分类2中的mashup主要跟在线办公相关;分类3中主要一些与出行相关的mashup应用;分类4中主要是一些与地图相关的mashup应用;分类5中主要是一些与社交网络密切相关的mashup应用。分类1和分类2的结果见图2和图3所示,其它分类结果因规模太大,显示不清而将其忽略。步骤3. 5,在步骤3. 4得到的mashup分类结果的基础上,根据步骤3. 2中mashup 和API服务间二部图,计算每一个API服务在各类中参与的mashup的数量,然后将其分到 mashup数量最大的那个类中,从而实现API服务的分类。2、服务推荐
为了为mashup开发者推荐服务,本发明需要完成以下几个步骤 步骤4. 1,将步骤3. 2中得到的二部图在API维度进行投影,得到相应的一维投影图——API服务组合图(见图1)。API服务组合图的节点代表API服务;节点间的边表示这两个服务间的可组合关系;边上的权值表示这种可组合关系的强度。本例中API服务间的边的权值计算如下若这两个API都在同一个mashup中出现,那么我们就用这个mashup中 API服务数的倒数作为这两个API服务在这个mashup中的相似度的分量,然后将所有这样的共现关系累加就可以得到这两个API之间连接关系的强度。步骤4. 2,根据步骤3. 2中得到的mashup和API服务的二部图分析mashup和API 服务间的使用模式,分析这些使用模式可以为我们推荐API服务和构建Mashup应用提供指导。通过分析可以发现,大部分mashup应用仅使用了较少的API服务(80. 1%的mashup应用的仅使用了 1个和2个API服务),只有1. 1%的mashup应用使用了超过10个的API服务(因此将大部分mashup使用API服务数的一个较小范围[足釗定为[1,10],在本实施例中,确定[足钔范围时,取·。),平均每个mashup应用仅使用了 13. 8个API服务。 这说明大部分mashup应用仅由少量的API服务组合而成。步骤4. 3,大部分的API服务仅参与了较少的maShup(50. 7%的API服务仅参与了 1个和2个mashup),只有17. 9%的API服务参与了大于10个的mashup,平均每个API服务仅参与了 9. 5maShup。这说明大部分API服务仅参与了少量的mashup应用。可以将参与 mashup最多的10个API服务称为核心API服务,因为它们成为很多mashup应用的构成单元。步骤4. 3,选择执行以下步骤
步骤4. 31,若用户还没选择任何服务,则为其推荐核心API服务,S卩Google Maps、 FlickrλYouTubeλTwitterλAmazon eCommerce、Facebook、eBay、Microsoft Virtual Earth、 Last, fm、Google Search ;
步骤4. 32,若用户已经选择了一个API服务,则根据步骤4. 1中API服务组合图为其推荐与该APi服务相连的,并且它们间权值排在topi的服务α是一个用户输入的参数, 若左大于该服务的度则A为该服务的度,否则A不变)。如以“23”为预查询的API服务,则返回的 top-5 个 API 月艮务是Flickr、del. icio. us、Google Picasa、Google Maps 禾口 Riya ; 步骤4. 33,若用户已经选择了多个(彡2)服务,求从这些点中任选2个点的所有组合, 针对每一个组合,求以这两个点为起止点,并且包含其它服务的路径中,路径权值和最大且步长在i 以内(包括们的top-左个服务进行推荐。如以“23”和“Riya”为查询API服务, 返回的3步内的的所有路径中top-2的是[23,Flickr, Riya]和[23,Google Picasa, Riya]。本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
权利要求
1.一种基于服务组合历史的服务分类和推荐方法,其特征在于,包括服务分类步骤以及服务推荐步骤,具体方法如下所述的服务分类步骤包括步骤1.1,收集SOS的元信息数据,包括S0S的名称、SOS描述信息、SOS使用的服务集合、标识SOS的标签、SOS加入的时间、SOS的开发者、SOS的地址,并将收集SOS的元信息数据进行数据错误处理,这些处理后的数据存于本地数据库;步骤1. 2,解析步骤1. 1获得的数据,分析SOS和服务之间的构成关系,并将这种构成关系用二部图表示,所述二部图包含两类节点,包括代表SOS的节点和代表服务的节点;步骤1. 3,将步骤1. 2中得到的二部图在SOS维度进行投影,得到相应的一维投影图一SOS相似图;步骤1. 4,利用聚类算法或社区发现算法对步骤1. 3中的SOS相似图中的节点进行聚类,将SOS节点划分成若干类并检查每一类中各SOS后为各类指定类别名;步骤1. 5,在步骤1. 4得到的SOS分类结果的基础上,根据步骤1. 2中SOS和服务间二部图,计算每一个服务在各类中参与的SOS数量,然后将其分到SOS数量最大的那个类中, 完成服务分类;所述的服务推荐步骤如下包括步骤2. 1,将步骤1. 2中得到的二部图在服务维度进行投影,得到相应的一维投影图即服务组合图,所述服务组合图的节点代表服务;边代表这条边两端节点表示的服务间的可组合关系;边上的权值表示这种可组合关系的强度,该权值可以通过这条边两端节点代表的服务在SOS中的共现关系来度量;步骤2. 2,根据步骤1. 2中得到的SOS和服务的二部图分析SOS和服务间的使用模式,即SOS使用几个服务,服务被几个SOS使用,并分析这些数字的分布, 从而确定大部分SOS使用服务数的一个较小范围[4,幻,确定范围[足钔的方法为若有#个303,将这#个SOS按其使用的服务数从小到大排序,取排在前面的个S0S,其中m%力大于等于;go 小于100%的百分值,设排在第pVxm%l位的SOS使用的服务数为认那么就设置[Α,Β]为[1,奶;步骤2. 3,将使用频率高的前i 个服务作为核心服务; 步骤2. 4,选择执行以下步骤步骤2. 41,若用户还没选择任何服务,则为其推荐步骤2. 3中的核心服务; 步骤2. 42,若用户已经选择了一个服务,则根据步骤2. 1中服务组合图为其推荐与该服务相连的,并且它们间权值排在topi的服务,其中j是一个用户输入的参数,若A大于该服务的度则A为该服务的度,否则A不变j取大于0的任意整数,A值越大,推荐算法在推荐服务的时候所需时间越长;步骤2. 43,若用户已选择了大于等于2项以上的服务首先求这些服务的所有两两组合;然后针对每一种组合,在服务组合图中求以这一组合中两个服务为起止点,且包含其它服务(所选择服务中除这一组合中两个服务外的服务)的所有路径;最后分别求每条路径的边权和,并按路径的边权和对所有路径降序排列,将topi路径推荐给用户。
2.根据权利要求1所述的一种基于服务组合历史的服务分类和推荐方法,其特征在于,所述步骤1. 2中,所述代表SOS的节点和代表服务的节点均存在边,表示SOS和服务之间的构成关系,即如果一个SOS由3个服务构成,则代表这个SOS的节点分别和代表服务的 3个节点间存在边,但是同类的节点间不存在边,即代表SOS的节点间和代表服务的节点间不存在边。
3.根据权利要求1所述的一种基于服务组合历史的服务分类和推荐方法,其特征在于,所述步骤1. 3中,SOS相似图的节点代表SOS软件;网络的边表示其两端SOS间存在相似性关系,即SOS间存在相似性则有边,没有任何相似性则无边;边上的权值,表示这两个SOS 间的相似度,该权值可以通过这两个SOS之间元信息进行度量,包括描述信息的相似性、共用的服务、共用的标签、共同的开发者。
全文摘要
本发明属于服务计算技术领域,涉及一种基于二部图及其投影的服务分类和推荐方法,包括服务分类步骤以及服务推荐步骤,服务分类步骤包括收集面向服务软件(SOS)的信息并用二部图抽象SOS和服务间的构成关系;然后将二部图在SOS维度进行投影,得到SOS相似图;对SOS相似图聚类得到SOS的分类;服务推荐步骤包括将二部图在服务维度进行投影,得到服务组合图并根据SOS和服务的二部图分析SOS和服务间的使用模式;将使用频率高的若干服务作为核心服务;根据不同的应用场景推荐相应的服务。优点如下实现了服务的自动分类,为服务添加分类信息,从而给服务发现、检索、以及服务资源的管理提供便利。
文档编号G06F9/44GK102331929SQ20111017505
公开日2012年1月25日 申请日期2011年6月27日 优先权日2011年6月27日
发明者李兵, 潘伟丰, 邵波 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1