1.一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述方法包括以下步骤:第一步、对所有需要特征表示的Mashup服务数据进行预处理;
第二步、基于预处理后的Mashup服务数据,进行功能名词提取操作;
第三步、对于每条Mashup服务的功能名词集合FS,利用主题模型进行Mashup特征向量的表示,过程如下:通过以Mashup服务信息为语料库构建LDA模型,得到每条Mashup服务信息的主题分布,并以此进行Mashup服务的特征向量的表示,其中,LDA模型将Mashpup文档集中每篇文档的主题以概率分布的形式给出,文本中主题的概率分布通过转换处理,化简为空间向量,向量的数值受到Mashup服务中心思想的影响,越接近中心思想的主题其概率越高;
第四步、对于所有参与聚类的Mashup特征向量,进行密度信息的计算,密度信息包括局部密度、向量间距离和较高密度最近距离;
第五步、基于第五步计算的密度信息,从所有Mashup特征向量中,筛选出聚类中心的候选点;
第六步、对第五步所得的聚类中心候选点,进一步筛选出最为合适的K个初始聚类中心,进行K-means聚类。
2.如权利要求1所述的一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述第一步的过程如下:步骤(1.1)遍历每条Mashup服务信息,针对性的提取出服务名称、服务描述、Web API组合信息、类别信息以及标签信息进行整理,进行步骤(1.2);
步骤(1.2)如果遇到缺失服务描述或描述内容过于简短的情况,则直接将该服务剔除,进行步骤(1.3);
步骤(1.3)如果遇到缺失服务名称的情况,则将设置特定的递增序列号作为默认的服务名称,进行步骤(1.4);
步骤(1.4)对于每条服务的描述内容,将具有特殊语义的符号进行转义,例如将“$”改写为“dollar”,同时剔除“▲”、“#”这样不包含任何语义信息的字符,以便于在后一阶段提升功能词汇检索的运行效率,进行步骤(1.5);
步骤(1.5)检查服务描述中的单词完整性,若有字母缺失的情况,先尽可能进行补全复原,而对于实在无法补全的单词,则将其剔除,进行步骤(1.6);
步骤(1.6)根据每条Mashup服务的Web API组合属性,获取相应的Web API 服务信息,进而利用这些Web API的标签对相应的Mashup服务标签进行扩充,使得扩充后的Mashup服务标签更能全面体现服务的功能特点,进行步骤(1.7);
步骤(1.7)判断Mashup服务信息是否遍历完成,若否,则返回步骤(1.1),否则,结束。
3.如权利要求1或2所述的一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述的第二步的过程如下:步骤(2.1)遍历Mashup服务数据,对每条服务描述内容进行词性标注,进行步骤(2.2);
步骤(2.2)基于步骤(2.1)的词性标注结果,过滤掉副词、形容词、量词这些没有实际语义的停用词,进行步骤(2.3);
步骤(2.3)在剩余的名词中进行词形还原,去重后放入临时名词集合中,进行步骤(2.4);
步骤(2.4)检查临时名词集合中是否掺杂了类似Mashup服务名称这样无功能语义的名词成分,若有,则剔除,而保留下来的其他名词则作为最终的功能名词集合FS,否则,将临时名词集合直接作为功能名词集合FS,进行步骤(2.5);
步骤(2.5)判断Mashup服务是否遍历完成,若否,则返回步骤(2.1),否则,结束。
4.如权利要求1或2所述的一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述的第三步的过程如下:步骤(3.1)遍历各Mashup服务信息,包括对应的功能名词集合FS,给定包含k个主题的主题集合T,Set(FS)为存放所有功能名词集合FS的集合,对当前FS对应的k个主题的概率向量θf随机赋值,其中,θf为
步骤(3.2)遍历主题集合T,对每个主题t生成所有单词的概率向量Φt随机赋值,Φt为
步骤(3.3)遍历集合Set(FS),其中,FSn为Set(FS)中第n个集合,进行步骤(3.4);
步骤(3.4)遍历集合FSn中的单词,其中,wp为FSn中第p个单词,进行步骤(3.5);
步骤(3.5)遍历主题集合T中的主题,其中,tq为T中第q个主题,进行步骤(3.6);
步骤(3.6)对于当前单词wp,当前主题tq,计算当前功能名词集合FSn中的单词wp属于主题tq的概率Pq(wp|FSn),其计算公式为:Pq(wp|FSn)=P(wp|tq)*P(tq|FSn),进行步骤(3.7);
步骤(3.7)选取Pq(wp|FSn)值最大的主题tq作为单词wp的主题,判断集合T是否遍历完成,若否,进行步骤(3.6),否则,进行步骤(3.8);
步骤(3.8),判断集合FSn中的单词是否遍历完毕,若否,进行步骤(3.5),否则,进行步骤(3.9);
步骤(3.9)判断集合Set(FS)是否遍历完成,若否,则返回步骤(3.4),否则,进行步骤(3.10);
步骤(3.10)设定常量N,重复步骤(3.3)至步骤(3.7)N次,N为经验值,根据机器性能与文档数量决定,得到收敛后的概率向量θ和Φ,其中,θ是每个FS的主题概率向量θf的集合,Φ是每个主题t生成所有单词的概率向量Φt的集合,进行步骤(3.11);
步骤(3.11)遍历每条Mashup服务信息,包括对应的功能名词集合FS以及对应的主题概率向量θf,进行步骤(3.12);
步骤(3.12)初始化Mashup语义特征向量DVecy,进行步骤(3.13);
步骤(3.13)将概率向量θ各维度的值赋值给对应的DVecy,进行步骤(3.14)步骤(3.14)判断Mashup服务信息是否遍历完毕,若否,进行步骤(3.13),否则,结束。
5.如权利要求1或2所述的一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述第四步的过程如下:步骤(4.1)遍历每个Mashup特征向量,计算当前向量的局部密度ρy,计算公式如下所示:其中,DVecy表示Mashup特征向量,而DVecy的局部密度ρy就是由离其最近的k个特征向量DVecz的余弦相似度cos(DVecy,DVecz)累加而成,这样的计算方式不仅避免了人工设定截断距离所带来的干扰问题,并且可以让每个向量获得较为合理的局部密度值,进行步骤(4.2);
步骤(4.2)计算当前向量的向量间距离dyz,计算公式如下所示:dyz=1-cos(DVecy,DVecz),进行步骤(4.3);
步骤(4.3)基于属性ρy与属性dyz,定义当前向量的较高密度最近距离δy,定义公式如下:其中,定义式中y表示当前向量,z表示其他向
量,min函数表示选取最小值,max函数表示选取最大值,进行步骤(4.4);
步骤(4.4)判断Mashup特征向量是否遍历完成,若否,则返回步骤(4.1),否则,结束。
6.如权利要求1或2所述的一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述第五步的过程如下:步骤(5.1)计算限定值bound,其计算公式如下所示:
bound=(max(δy)+min(δy))/2,其中,max(δy)表示δy的最大值,而min(δy)表示δy的最小值,进行步骤(5.2);
步骤(5.2)将δy值低于bound的Mashup特征向量提取出来,并将它们的密度信息对应放入集合S,进行步骤(5.3);
步骤(5.3)计算步长单元au,并设置初始值为0,其中,au主要用于确定聚类中心候选点的δy值范围,进行步骤(5.4);
步骤(5.4)遍历集合S,取出δy,进行步骤(5.5);
步骤(5.5)遍历集合S,取出δz,其中,δz与δy不相等,进行步骤(5.6);
步骤(5.6)对au进行累加计算,计算公式如下:
au=au+|δy-δz|,其中,|δy-δz|表示取δz与δy之差的绝对值,记录当前循环次数count,进行步骤(5.7);
步骤(5.7)判断集合S是否遍历完成,若否,则返回步骤(5.5),否则,进行步骤(5.8);
步骤(5.8)判断集合S是否遍历完成,若否,则返回步骤(4.4),否则,进行步骤(5.9);
步骤(5.9)设au=au/count,进行步骤(5.10);
步骤(5.10)设置判定半径r,并赋默认值为bound,其中判定半径主要用于进一步确定聚类中心候选点的范围,进行步骤(5.11);
步骤(5.11)针对所有Mashup特征向量,判断在连续的bound/au个区域中,向量δy属性的数量是否保持递增,并将初始遍历区域设为[l1=0,l2=au],进行步骤(5.12);
步骤(5.12)若δy属性的数量递增,则将l1与l2的值分别累加一个步长au,进行更新,否则,进行步骤(5.13);
步骤(5.13)将判定半径r设为l1的值,进行步骤(5.14);
步骤(5.14)从所有Mashup特征向量中,筛选出半径r内包含其它向量,并且δy值大于r的向量作为聚类中心候选点集合。
7.如权利要求1或2所述的一种围绕主题建模的改进型K-means服务聚类方法,其特征在于,所述第六步的过程如下:步骤(6.1)在聚类中心候选点集合中,筛选出ρy与δy乘积最高的向量,并将其在半径r内包含的向量个数m统计出来,其中半径r即为第六步计算出的判定半径,进行步骤(6.2);
步骤(6.2)遍历聚类中心候选点集合,计算当前候选点的波动值SDy,计算公式如下所示:其中,U(y)表示距离y最近的m个向量,γz表示ρy与δy的乘积,avgz则表示这m个向量γz的均值,进行步骤(6.3);
步骤(6.3)判断候选点集合是否遍历完成,若否,则返回步骤(6.2),否则,进行步骤(6.4);
步骤(6.4)对候选点集合中的每个向量,进行加权评估计算,计算公式如下所示:其中,a为介于0与1之间
的权值,默认为0.5,进行步骤(6.5);
步骤(6.5)对步骤步骤(6.4)计算所得的score进行降序排序,选取前K个向量作为K-means算法的输入,进行K-means聚类。