综合相似度

2024-10-11

综合相似度(共7篇)

综合相似度 篇1

摘要:针对在本体间异构系统知识集成问题上, 对本体映射中概念相似度计算存在的一些不足之处, 提出了一种改进的方法。先分别计算基于实例的概念相似度、基于概念名的相似度和基于属性的相似度, 然后进行加权合并形成新的综合相似度计算方法, 最后进行简单验证进而根据本体和本体中概念的特点, 设计了一种改进的相似度的计算方法。改善了相似度计算中存在的片面性和不完善性问题, 提高了本体映射的查全率和查准率。

关键词:异构,本体,映射,概念相似度

在当代知识集成的研究中, 无论是应用在普通知识系统中的本体, 还是应用于语义Web中的本体, 由于其表示形式和内在逻辑结构的多样性, 本体的数量也越来越多, 并且单个本体不能充分完成目标任务。因此, 必须联合多个本体来完成任务。由于本体的构造一直没有一个统一的规范和标准, 所以, 在同一个领域内会存在多个本体。这些本体的概念分类可能不同, 概念间的关系也可能不同, 并且相同的概念可能用不同的术语来表示。也就是说, 这些本体之间存在冲突, 它们是不匹配的, 是异构的。异构的本体之间不能进行互操作。要想达到信息交流的目的就必须在本体之间架起语义映射的桥梁。因此, 解决本体异构最有效的方法就是本体间进行映射。

本体映射的目的就是找到本体中概念之间的对应关系, 并制定出相应的映射规则。最初, 这些映射过程都是由人手工完成的。但随着语义Web的发展, 在Web上用本体表示的信息越来越多, 仅仅由人来完成这些工作已经力不从心, 因而迫切需要发展一些方法, 来自动地或半自动地完成这种映射过程, 以节省大量的人力劳动。当前有不少研究者致力于本体概念相似度的研究, 取得了一些成果, 但是还存在不少问题, 概括起来主要有如下两个: (1) 概念相似度的计算量大; (2) 概念相似度计算的片面性和计算方法的不完善。单纯从某一方面来计算概念相似度是片面的和不完善的, 概念相似度的计算应该充分考虑本体和概念的特点, 综合各个方面来进行计算。针对概念相似度计算中存在的问题, 提出了一种改进的计算方法, 先分别计算基于实例的概念相似度、基于概念名的相似度和基于属性的相似度, 然后进行加权合并形成新的综合相似度计算方法, 最后进行简单验证进而根据本体和本体中概念的特点, 设计了一种改进的相似度的计算方法。

1 本体映射及其过程

本体映射通过定义条件规则、函数、逻辑以及表与关系的集合来实现不同本体间的映射, 是完成本体集成的重要一步工作, 或者说, 本体映射是不同的本体在概念层语义相关联。源本体的实例根据语义关联的关系转换为目的本体。Ehrig给出了一个形式化的本体映射函数:

map:O1→O2;

如果sim (e1, e2) >s, map (e1) →e2, 其中e1和e2分别是两个本体中的实体, sim (e1, e2) 是这个实体的相似度, s是相似度阀值。

本体映射是指在两个本体中存在语义级的概念关联, 通过语义的联系, 实现将源本体的实体 (概念、实例、属性等) 映射到目标本体实体上的过程。本体的映射类型有概念-概念、属性-概念、属性-属性、情境和约束等。本体映射就是指给定两个本体A和B, 对于A 上的每一个实体, 设法在B上找到与其有相同或相近语义的实体, 这些实体包括本体中的类、属性以及类的实例。一个完整的映射框架应该包括整个映射过程:映射的发现、表达和执行。一个本体映射的过程, 如图1所示。

2 相似度及相似度计算

本体一般可理解为概念、属性和关系的集合。属性即概念的属性, 关系即概念间的关系, 因此, 本体映射主要是集中在概念间的相似度计算及相应的映射。在映射过程中, 本体映射的核心内容是计算两个概念间的相似度, 并求出本体中概念的相似矩阵。当其相似度大于某个阈值时就认为这两个概念间存在一定的映射关系 (这里只着重考虑1∶1的映射关系) 。

先定义相似度:Sim:w1×w2×O1×O2→[0, 1], 相似值在0和1之间。Sim (A, B) 表示A和B之间的相似度。w1和w2是两个本体所基于的术语集, O1和O2是需要映射的两个本体。

Sim (e, f) =1表示e和f是两个完全相同的概念;

Sim (e, f) =0表示e和f是两个完全不同的概念。相似度综合公式:

undefined, 其中undefined

wk为每种度量方法的权植。

3 改进的综合概念相似度计算方法

把概念相似度分成基于实例的概念相似度、基于概念名的概念相似度和基于属性的概念相似度。先分别计算相似度, 然后把基于实例的概念相似度、概念名的相似度和属性的相似度进行合并生成最终的综合概念相似度。

(1) 首先设实例相似度为Sims (a, b) , 利用概念具体实例对概念相似度进行计算。

一个概念的实例也是它祖先概念的实例。对于一个实例, 利用Jaccard系数来计算相似度。该系数的计算公式为:

undefined

根据本体中概念a和概念b的具体实例来计算undefined和undefined。其中P (a, b) 表示一个实例在某本体中即属于概念a, 又属于概念b的可能性。undefined表示一个实例在某本体中属于概念a, 但不属于概念b的可能性。undefined表示一个实例在某本体中不属于概念a但属于概念b的可能性。

undefined

其中H指实例个数, U指实例集合, H (Uundefined) 表示在U1中即属于a又属于b的实例个数。以P (a, b) 为例, 先对本体a中概念A的实例进行样本训练, U1是本体a的实例集合, 根据概念A把U1分成实例集Uundefined和实例集undefined, 由实例数据可计算可得undefined, 同理本体b中概念B的实例进行样本训练, U2是本体b的实例集合, 根据概念B把U2分成实例集Uundefined和实例集undefined, 由数据可以得到, undefined。然后把本体a和本体b位置调换。先对本体b中概念B的实例进行样本训练, 同样可以得到, undefined, 等值, 最后可以利用公式3-5算出以上的公式。

(2) 基于概念名计算概念相似度:

本体中的概念是分层的。本体也可以看成一棵概念树, 树中每个结点代表一个概念。所以, 概念间的关系也具有树的一些性质。树中有子结点、父结点和兄弟结点等一些特有概念, 所以, 概念树中也存在子概念、父概念和兄弟概念。这里按照 [Tversky1977]和集合论给出语义相似值的一般性计算公式作为两个本体间概念相似度计算的方法, 令计算所得的相似度记为Simr (a, b) :

undefined

这里的A、B分别是概念节点a, b描述元素的集合, 对于不同的匹配标准, a, b的描述元素是不同的;|A∩B|是共有描述元素的个数, 或者称共有描述元素集合的势;|A/B|也同集合论中的意义;depth () 函数计算概念节点在概念树中的深度。α (a, b) 系数是反映两个概念在各自本体层次中的位置, 以及本体描述的详细程度不同对语义上相似性评价产生的不对称的影响。这个公式符合上述的语义相似Simtree (a, b) 所具有的性质, 而且与信息论中的相似性定义相一致。

(3) 计算基于属性的概念相似度:

在本体中, 每个属性也是一个概念, 两个属性间的相似度记为Sima (a, b) , 属性的语义评价是对两个概念的属性集合进行评价, 因为属性表达为<属性名, 属性值的约束>这样一个二元组, 令a的属性集合的势为m, b的为n, 因此有公式 (5, 7) 的变形。

undefined

其中undefined, 即近似计算a, b 集合中相同语义属性的个数, 为了防止出现a, b的属性集合的势减去ao1∩bo2的差为负数, 有:

f (m, |ao1∩bo2|) =m-|ao1∩bo2|, m>|ao1∩bo2| (9)

(4) 最后综合概念相似度的计算:

Sim (a, b) =

wsSims (a, b) +wrSimr (a, b) +waSima (a, b) (10)

其中ws+wr+wa=1。

4 总结与展望

本体映射是本体融合领域的核心, 是一个非常复杂的过程, 在这个过程中, 包括本体与数据库, 本体与XML文档, 本体与网页上数据等的映射关系。在这里只列出来两个本体间的映射作为研究方法的探讨, 并详细阐述了异构本体映射的过程, 文中使用的是将多种相似度进行综合以体现实体在各个层次上的相似度的方法实现了本体的映射, 对于各种特征权值的确定可由本体专家根据各种特征在本体中出现的频率定义。提出的相似度计算方法有两个优点:一是根据本体语义树的特点和相似度计算的启发规则以及数据挖掘的思想, 合理设置侯选映射集, 降低了计算量;二是根据本体和概念的特点, 对概念相似度计算方法的改进。

参考文献

[1]Guus Schreiber, 史忠植.知识工程和知识管理[M].机械工业出版社, 2003.

[2]王志军, 郭学俊.基于本体的XML语义集成研究[J].计算机技术与发展, 2006 (8) .

[3]李玉华, 刘涛.基于混合本体方法的集成算法研究[J].计算机工程与科学, 2007, (07) 8 (9) :687-693.

[4]H Mihabi, Ana Simonet.Towards a Declarative Approachfor Reusing Domain Ontologies[J].Information Systems, 1998, 23 (6) :365-381.

[5]聂朝晖, 王英林.相似本体间属性映射方法的研究[J].计算机仿真, 2006 (9) .

[6]曹泽文, 钱杰, 张维明, 等.一种改进的本体映射方法[J].科学技术与工程, 2006 (19) .

[7]郑丽萍, 李光耀, 梁永全, 等.本体中概念相似度的计算[J].计算机工程与应用, 2006 (30) .

[8]阮志斌, 倪益华.基于本体面向制造企业的知识集成平台构建[J].精密制造与自化, 2006 (1) .

综合相似度 篇2

在一个以WEB为中心的时代,面向服务架构(SOA)的发展越来越迅速。WEB服务可以说是一种在网络环境下的应用程序,具备良好的互操作能力,在电子商务等领域扮演着越来越重要的角色。现今的网络是以服务为中心的,各服务商提供各种各样的服务构成了现在的互联网。随着WEB服务的数量巨增,从众多的服务中发现与用户的需求相匹配的服务成为一个关键的问题。现在网络上的服务发现是以UDDI注册中心为基础的,通过对服务的注册信息(如服务的名称、分类、公司名称等)进行基于关键字的精确匹配。WEB服务主要是基于WSDL(Web Service Description Language)作为WEB服务描述语言来描述的。由于WSDL缺少对WEB服务功能的描述,使得现有的服务注册与发现机制仅支持对服务语法层面的操作,大大影响了服务发现的精度。人们提出查询请求时,往往对于相同概念有着不同的描述,这一种人类与生而来的认识和思维上的不同,带来了相同概念,不同描述间的不可匹配现象。这时,迫切地需要一种能够自动、快速和准确的服务发现机制的出现。在语义WEB提出后,在信息检索等方面取得了一定的成就,解决了在信息检索等由于概念描述问题造成的查全率的低下。而语义WEB服务的提出,则又使得WEB服务发现的研究进入了一个全新的阶段。借助本体等技术,准确刻画服务的功能及属性,并通过语义推理等技术准确地完成服务匹配,从而提高了服务发现的效果。W3C组织提出了一种基于OWL的语义WEB服务描述语言OWL-S,它可以为服务的发布和请求者提供统一的语义基础,使得请求者可以发现满足需要的服务。这对于之后的服务组合来说,也有着重要的意义。

综合考虑各种因素,本文提出了一种新的综合相似度计算方法,加入了对共享信息增益,以及结点权值的考虑。并提出一种匹配框架,改变了对服务的输入的处理。这主要是由于服务的输入对用户来说是透明的,使得用户提出服务请求时,会有某一服务的输入由于用户的未知没有给出,但实际上用户可以提供该输入,以至于服务不被发现的情况,引起很多不必要的查全率的降低。改变将服务的输入和服务的输出同样作为过滤服务的方法,将服务的输入作为一种服务满意度计算依据,对发现到的服务进行排序。最后给出了实验结果,验证了该框架及算法的可行性。

1 相关定义

1.1 OWL-S

OWL-S是由OWL Services Coalition研究组提出的基于OWL的语义WEB服务本体。OWL-S包含一整套本体提供了WEB服务的词汇表,能够根据服务的输入、输出、前提以及结果进行推理,OWL-S描述的服务使得WEB服务具备机器可理解性和易用性,从而让机器能自动地、动态地对WEB服务发现、执行、组合和互操作。

在OWL-S中,服务描述的基本信息主要包括三种本体:Service Profile,描述服务做什么;Service Model,描述服务如何工作;Service Grounding,描述如何访问服务。

1.2 定义

定义1 WEB服务可以定义为一个三元组:

S={Basic,Function,Qos}

其中:

(1)Basic表示服务的基本信息,包括服务的名称以及服务描述信息两个部分,形式化描述如下:

Basic={name,description}

(2)Function表示服务的功能信息,包含服务的输入、输出信息两个部分,服务的In和out分别为两个输入集合和输出的集合:

Function={in,out}In={in1,in2,…,ini}out={out2,out2,…,outj}

(3)Qo S表示服务的质量信息,用于在发现服务后对服务的可用性或满足用户请求的程度进行评测,将发现到的服务进行过滤或排序。用于评价服务的参数,包括服务的稳定性、可访问性、价格、花费、访问时间等:

Qos={price,time,stabillty,…}

1.3 本体概念相似度

由于在服务发现的过程中进行服务的功能匹配时,要对服务的输入、输出进行接口匹配,此时的匹配与否的判断,主要源自于对相似度计算。本体树中概念的相似度的计算主要是依据本体中概念间的距离。除了距离之外,概念在本体树中的深度,结点的密度,共享信息等都对相似度的计算有着一定的影响。为了提出更为准确的相似度计算方法,在本体中进行的服务概念相似度计算依据的准则如下:

a)深度:在本体树中,两个概念的共同祖先结点的深度越大,两个概念的相似度越大。如(Emergency Station,Healty Resort)的最短距离与(Region,Disease)的最短距离均为3,但显然,在客观世界中,前者的相似度是大于后者的。

b)共享信息增益:本体中两个概念间,共享信息越多,越相似。这里,共享信息的判断,主要依据概念的属性计算。

c)语义距离:两个概念间的语义距离越大,则它们间的相似度就越小。

d)赋予父概念比子概念更大的权值。如用户欲查找全国天气预报的服务,以查找不同省份的天气情况。但系统内仅有能提供某省天气预报及全球所有国家各省天气预报的两种服务。这时,显然返回全球所有国家各省天气预报服务则更有可能包含用户的要求。

e)服务发现过程中,不仅要考虑包含关系,还要考虑以及服务概念具有的属性,以及其它关系的影响。如,同样兄弟结点的概念(Emergency Phy Sician,Hospital Physican)与(Physician,Patient),后者在本体中的关系有disjoint With关系,一个person为physician,就不可能为patient,此时,两个概念如因为语义距离短被发现,则会影响服务发现的精度。

2 综合相似度计算函数

在服务的匹配过程中,判断两个服务是否匹配的依据主要是对服务的输入、输出分别进行配对,得到最后的相似度最大的配对。在这个过程中,对输入、输出间的概念间的相似度计算的准确度大大地影响了匹配的结果。文献[5]中提出,相似度函数应该依据以下准则:

a)当概念间的语义距离为0时,相似度为1。即当两个概念相同时,相似度为1。

b)相似度函数随语义距离的增加而减小。即语义距离大的概念间的相似度小于语义距离小的概念间的相似度。

c)相似度函数的输出必须保证在[0,1]内。既不能出现大于1的值,也不能出现小于0的值。

提出一种改进的相似度计算函数,在概念间的相似度计算中综合考虑本体树中概念间的概念语义距离,以及共享信息等进行概念相似度计算。改变以往的服务相似度计算中单独考虑语义距离及共享信息的方式。使两种方式相互影响,相互制约。以往综合考虑两者相似度计算时,往往是采用加权并相加取和的方式,这种方式的缺点是,即使两个概念间没有任何共享信息,若两个有较短的语义距离,也有可能被认为是相似的概念,反之亦然。这种由于缺少了服务间相似度计算的两种方法的相互制约而引起的相似度的计算不准确,大大影响服务发现的精度。所以,这里综合考虑服务中概念的共享信息增益,以及概念的属性,概念间的关系。提出一种综合了语义距离和信息共享的服务输入输出相似度计算方法,并使得两种方法相互制约,其中任一种相似度方法计算出的相似度为0时,最后计算出的总的相似度都为0。首先给出通过语义距离计算服务概念间SD相似度的方法,这里SD相似度指概念间的语义距离相似度:

在计算服务间概念的SD相似度时依据的准则如下:

a)当服务请求(in,out)中的概念等价于服务(in,out)中的概念时,则相对应的两个概念间的SD相似度为1。

b)当两个服务概念的语义距离小于阈值,服务请求in中的概念是服务in中的概念的子概念或服务out中的概念是服务请求out中的概念的子概念,用式(2)计算。

c)当两个服务概念的语义距离小于阈值,服务请求out中的概念是服务out中的概念的子概念时,服务in中的概念是服务请求in中的概念的子概念时,用式(3)计算。

d)当两个服务概念的语义距离小于阈值,服务中的概念与服务请求中的概念,没有直接的包含关系,但在本体中都找得到,有共同的祖先节点时,采用式(4)计算。

e)当两个服务概念的语义距离大于阈值时,认为相似度是为0,即两个概念是不相似的。

在上式中,distance的计算采用文献[5]中给出的GCSM计算方法,式中LCA(s,r)为s,r间的共同最深父结点:

下面给出概念间共享信息相似度(SC),通过计算两个概念a,b间的属性集合的重合度得到这两个概念间的SC相似度,从下式中可以看出若两个概念的没有属性重合时,两者间的SC相似度必然为0。即若两个概念若没有共同属性,可以视为是不相似的。给出下式:

给出综合的服务概念相似度计算方法,为了使SD相似度和SC相似度相互约束,即当语义距离为0时或没有共享的信息,其中任一条件满足时,均认为概念间是不相似的。给出下式:

在实际的相似计算过程中,由于采用了一个基于wordnet的综合本体。所有的概念在本体树中都可以发现,本体中概念间的SD相似度为0的服务数量会比较小,而没有共享信息的概念较多,而且,提出的SC相似度方法与SD相似度计算方法相比更为容易计算。所以,在下文中的输入、输出的相似度计算中,采用上文中给出的综合相似度计算方法,并先通过服务间的信息共享计算相似度,若两概念共享信息相似度为0则不计算SD相似度,并认为两个概念不相似。最后,通过实验进行评价该综合的相似度算法的效果。

3 基于过滤及排序的匹配算法

提出一种改进的匹配策略,将服务发现的过程分为过滤和排序两个阶段。在整个匹配算法的过程中,针对服务的不同要素的特点,分别采用更为适合的相似度计算方法。在过滤过程中,使用服务请求方给出的服务名称,描述信息以及OUTPUT作为服务发现过程中的过滤条件。在排序过程中,使用用户给出的INPUT和服务的Qo S作为排序的依据。当用户提供了输入时,计算服务INPUT的满足度和服务Qo S的满足度,将服务两个满意度的合成排序。当用户没有提供输入时,将服务按照质量的可满足度高低排序,最后输出满足阈值的服务。

对于服务请求,要查找到相应的服务,主要对服务IOPE进行匹配。对服务的IOPE的匹配主要是基于服务概念的相似度计算。文献[1]中指出,本体概念间的匹配分为以下几个类型:

a)exact matching:两个元素在词典中是相同的。

b)Approximate matching:由某种相似度计算算法判定是否相似。如:Password和passwd是区配的,当且仅当使用编辑距离的方法。并且,两者的编辑距离小于一定的值。

c)使用一定的进行分割的时候,license-Free和Free for license可以是区配的,当使用物定的token segmentation consinesimilarity function between{licence,fee}and{fee,for,license}is used with TF/IDF weight。

d)Semantic matching:此时,若两个元素的语义含义是可交换的或者是满足一定条件的也可以认为是匹配的。如cost和fee是同义词,在wordnet中,则这两个词是语义匹配的。

由于服务中各要素又各有其特点,为了优化服务发现的效果,提出了一种较有针对性的相似度计算策略。下面分别针对服务的各要素,详细给出采用的相似度计算策略。

3.1 名称及描述信息过滤

在服务发现过程中,由于往往服务的名称包含缩写的情况。首先对服务的名称进行处理,利用特征词提取技术,取出名称及文本信息中所包含的概念。并当某概念在本体树中找不到时,采用了基于编辑距离的匹配,也是作为一种容错的机制,可以避免由于请求方出现拼写上的错误而引发的准确率的降低。依据词汇库,根据词汇概念距离将名称补全。然后,对名称和描述信息中包含的单词进行处理,去除停用词,去除时态信息等。由于服务的名称和描述信息可能包含的词汇数目较多,这里采用基于IR的相似度计算方法。采用推理技术,利用本体中概念中的包含关系,对词汇进行扩充,这里采用文献[4]给出的基于扩展的jacquard相似度计算方法,计算名称和描述信息的相似度。

3.2 输出信息过滤

在服务的输入输出的匹配过程中,服务的输入和输出都分别为两个集合,要找到服务与请求最终的综合相似度最大的服务,采用文献[6]中给出的基于二分图的匹配。在服务的输出的相似度计算中,采用广度优先搜索,如果两个概念间存在disjoint With关系,则搜索终止,两个概念的相似度为0。由于对输出描述的差异,可能比较大,而且输出在服务发现过程中又占据着较为重要的地位,为了尽可能地增加服务发现中输出所占的比重,这里采用上文给出的SIM综合相似度计算方法。

3.3 基于质量和输入的服务排序

基于Qo S和输入的匹配主要是为了对服务进行排序进行的,在这个过程中不过滤服务。仅将合成后的总的满意度作为一种排序的标准使用。这里服务输入间的相似度计算采用上文给出的综合相似度计算方法。服务输入的满足度计算依据:

为了在大量功能相似的服务中选择最佳服务,采用了对服务Qo S的匹配。Qo S主要包括响应时间、服务价格、服务稳定性、信誉度等参数。服务Qo S的满意度的各个参数的计算这里全部采用文献[5]给出的如下的方式,以时间为例:

对各个Qo S值取算术平均值,得到Qo S相似度。将服务的输入满足度和服务的Qo S满意度加权合成,将合成后的结果用于排序,最后给出满足阈值的服务序列。

4 实验对比

在这里,采用OWLS-TC 2.2测试集对实验结果进行对比测试,将采用给出的分类匹配策略及综合相似度计算的服务发现与OWL-S MX提出的采用nearest-neighbor相似度方法的基于IR的matchmaker算法进行对比。

实验的主要目的是针对现有的服务概念相似度计算中漏查和错查的问题,即文献[7]中给出的服务发现中会出现false positive和false negatives情况,改进服务发现的效果,在提高服务发现的查全率的前提下,力求不减小服务发现的查准率。依据服务的查全率/查准率对实验的结果进行评价。实验结果对比如图2所示。

由图2可以看出,使用提出的基于过滤与排序的匹配算法以及综合的相似度计算方法,在查全率/查准率方面与基于Paolucci提出的匹配算法使用nearest-neighbor方法进行相似度计算相比有了一定的改善。达到了预期的效果,验证了本文提出的综合的相似度计算方法及改进的匹配过程的可行性。

5 结论及展望

在服务发现过程中的概念相似度计算中,充分考虑了各种因素以及服务的特点。实验结果显示,通过该匹配框架以及相似度计算方法,改进了其他方法的不足,得到了较好的结果。以后将研究当发现不到适合的服务时,如何根据现有的服务,组合出合适的服务。并在服务发现中,利用服务质量本体,使得服务质量的计算也能处理模糊的语义,并根据Qo S的各个参数的不同影响,设定权重,减小由于注册服务的服务提供商对服务质量的描述的不同所引起的效率低下。

摘要:服务发现的主要过程就是对服务请求和己注册服务间IOPE进行匹配。提出一种新的服务发现框架,以及改进的综合相似度算法。综合考虑语义距离,本体树中概念的深度、密度,以及信息共享来计算服务的相似度。将服务发现过程分为过滤和排序两阶段,并对服务的各参数分别采用更适合的相似度计算方法。将用户给出的服务输入用于最后的排序阶段,以减少由于用户给出信息不准确带来的偏差。在SME2评测环境以及测试集进行评价后,与其他算法相比,查全率/查准率有一定的改进。

关键词:服务发现,匹配算法,相似度计算,OWL-S

参考文献

[1]Seog-Chan OhHyunyoung KilDongwon LeeKumara,S.R.T.WSBen:Aweb service discovery and composite bechemn[C].

[2]Paolucci M,Kawamura T,Payne T R,et al.Semantic Matching ofWeb Services Capabilities[C].Proceedings of the 1st International Se-mantic Web Service,Las Vegas,Nevada,USA:[s.n.],2003.

[3]David Martin,Massimo Paolucci,Sheila Mcllraith,et al.Bringing Se-mantics to Web Services[C].SWSWPC 2004.LNCS 3387:26-42.

[4]Matthias Klusch,Benedikt Fires Katia Sycara.Automated Semantic WebService Discovery with OWLS-MX[C].AAMAS 2006 May 8-12,2006,Hakodate,Hoddaido,japan,ACM.

[5]张钋.基于语义的网络服务匹配机制的研究与实现[D].北京:清华大学,2005.

[6]邓水光,尹建伟,李莹,等.基于二分图匹配的语义WEB服务发现方法[J].计算机学报,2008,31(8).

[7]Matthias Klusch,Benedikt Fries.Hybrid OWL-S Service Retrievalwith OWLS–MX:Benefits and Pitfalls[C].First International JointWorkshop on Service Matchmaking and Resource Retrieual in the Se-mantic Web.

[8]Joyce El Haddad,Maude Manouvrier,Guillermo Ramirez,et al.QoS-driven Selection of Web Services for Transactional Composition[C].2008 IEEE DOI 10.1109/ICWS.2008.116.

词语相似度计算方法分析 篇3

词语相似度计算研究的是用什么样的方法来计算或比较两个词语的相似性。词语相似度计算在自然语言处理、智能检索、文本聚类、文本分类、自动应答、词义排歧和机器翻译等领域都有广泛的应用,它是一个基础研究课题,正在为越来越多的研究人员所关注。笔者对词语相似度计算的应用背景、研究成果进行了归纳和总结,包括每种策略的基本思想、依赖的工具和主要的方法等,以供自然语言处理、智能检索、文本聚类、文本分类、数据挖掘、信息提取、自动应答、词义排歧和机器翻译等领域的研究人员参考和应用。词语相似度计算的应用主要有以下几点:

(1)在基于实例的机器翻译中,词语相似度主要用于衡量文本中词语的可替换程度。

(2)在信息检索中,相似度更多的是反映文本与用户查询在意义上的符合程度。

(3)在多文档文摘系统中,相似度可以反映出局部主题信息的拟合程度。

(4)在自动应答系统领域,相似度的计算主要体现在计算用户问句和领域文本内容的相似度上。

(5)在文本分类研究中,相似度可以反映文本与给定的分类体系中某类别的相关程度。

(6)相似度计算是文本聚类的基础,通过相似度计算,把文档集合按照文档间的相似度大小分成更小的文本簇。

1 基于语料库的词语相似度计算方法

基于统计方法计算词语相似度通常是利用词语的相关性来计算词语的相似度。其理论假设凡是语义相近的词,它们的上下文也应该相似。因此统计的方法对于两个词的相似度算建立在计算它们的相关词向量相似度基础上。首先要选择一组特征词,然后计算这一组特征词与每一个词的相关性(一般用这组词在实际的大规模语料中在该词的上下文中出现的频率来度量),于是,对于每一个词都可以得到一个相关性的特征词向量,然后计算这些向量之间的相似度,一般用向量夹角余弦的计算结果作为这两个词的相似度。

Lee利用相关熵,Brown采用平均互信息来计算词语之间的相似度。李涓子(1999)利用这种思想来实现语义的自动排歧;鲁松(2001)研究了如何利用词语的相关性来计算词语的相似度。PBrownetc采用平均互信息来计算词语之间的相似度。基于统计的定量分析方法能够对词汇间的语义相似性进行比较精确和有效的度量。基于大规模语料库进行的获取受制于所采用的语料库,难以避免数据稀疏问题,由于汉语的一词多义现象,统计的方法得到的结果中含有的噪声是相当大的,常常会出现明显的错误。

2 基于本体库的词语相似度计算方法

2.1 常用本体库

关于Ontology的定义有许多,目前获得较多认同的是R.Studer的解释:“Ontology是对概念体系的明确的、形式化的、可共享的规范说明”。在最简单的情况下,本体只描述概念的分类层次结构;在复杂的情况下,本体可以在概念分类层次的基础上,加入一组合适的关系、公理、规则来表示概念间的其它关系,约束概念的内涵解释。

Word Net是一个联机英语词汇检索系统,由Prince-ton大学研制。它作为语言学本体库同时又是一部语义词典,在自然语言处理研究方面应用很广。它采用语义网络作为其词汇本体的基本表示形式。在Word Net中,网络节点由字形(Wordform)标识,分为名词、动词、形容词、副词和功能词等5种。节点之间的关系分为同义关系(Synonymy)、反义关系(Antonymy)、继承关系(Hypony-my)、部分/整体关系(Meronymy)、形态关系(Morpholog-icalrelation)等。Word Net提供了很好的概念层次结构。

知网是一个以汉语和英语词语所代表的概念为描述对象、以揭示概念与概念之间以及概念所具有属性之间的关系为基本内容的常识库和知识库。其中包含丰富的词汇语义知识和本体知识,这些关系都隐含在知网的知识词典和义原的特征文件中。知网中有以下两个主要的概念:

(1)义项。它是对词汇语义的一种描述,每一个词可以表达为几个义项。义项是用一种知识表示语言来描述的,这种知识表示语言所用的词汇叫做义原。

(2)义原。它是用于描述一个概念的最小意义单位,从所有词汇中提炼出的可以用来描述其他词汇的不可再分的基本元素。

与一般的语义词典(如同义词、词林或Word Net)不同,知网并不是简单地将所有的概念归结到一个树状的概念层次体系中,而是试图用一系列的义原来对每一个概念进行描述。

知网的汉语知识库中每个词汇由一个四元组表示:

DEF部分是表示词与义原的关系,也是词汇描述中最重要的部分,可以简单地认为词是由义原通过某种关系构成的。

2.2 相似度计算方法分析

根据本体知识来计算。主要是基于按照概念间结构层次关系组织的语义词典方法,根据概念之间的关系来计算词语的相似度。这类方法通常依赖于比较完备的大型语义词典,一般词典都是将所有的词组织在一棵或几棵树状的层次结构中,在一棵树型图中,任何两个节点之间有且只有一条路径,这条路径的长度就可以作为这两个概念的语义距离的一种度量。

传统基于本体的概念之间相似度计算模型主要有基于距离的语义相似度计算模型、基内容的语义相似度计算模型和基于属性的语义相似度计算模型3种。

刘群等人利用知网作为语义词典计算汉语词汇的相似度;Rada等人和Lee等人通过计算在Word Net中词节点之间上下位关系构成的最短路径来计算词语之间的相似度。许多学者考虑到其他因素对语义距离的影响,如Resnik根据两个词的公共祖先节点的最大信息量来衡量两个词的语义相似度;Agirre等人在计算词语的语义相似度时,除了节点间的路径长度外,还考虑到概念层次树的深度和区域密度的影响。张瑞霞等人提出了一种基于知识图的汉语词汇相似度计算方法,该方法以知识图为知识表示方法,在构造词图的基础上对词汇概念中的义原进行分类,通过计算不同类型义的相似度得到概念的相似度。

3 比较与总结

这两种方法各有特点。基于世界知识的方法简单有效,无需用语料库进行训练,也比较直观,易于理解,但这种方法得到的结果受人的主观意识影响较大,有时并不能准确反映客观事实。另外,这种方法比较准确地反映了词语之间语义方面的相似性和差异,而对于词语之间的句法和语用特点考虑得比较少。基于语料库的方法比较客观,综合反映了词语在句法、语义、语用等方面的相似性和差异。但是,这种方法比较依赖于训练所用的语料库,计算量大,计算方法复杂,另外,受资料稀疏和资料噪声的干扰较大。

参考文献

[1]秦春秀,赵捧未,刘怀亮.词语相似度计算研究[J].信息系统.2007.

[2]余超.基于知网的词汇语义计算研究及应用[D].辽宁:沈阳航空工业学院.2007.

[3]刘紫玉,黄磊.基于领域本体模型的概念语义相似度计算研究[J].计算机技术与发展.2010.

[4]http://wordnet.princeton.edu/.

[5]http://www.keenage.com/.

[6]孙海霞,钱庆,成颖.基于本体的语义相似度计算方法研究综述[J].知识组织与知识管理.2010.

[7]刘群,李素建.基于《知网》的词汇语义相似度计算[J].计算语言学及中文信息处理.2002.

综合相似度 篇4

1)答疑是学生进行系统学习的有益补充,同时也是学生巩固知识的重要途径,无论学习的形式如何变化,答疑对于学习活动来说是必要且不可或缺的,在网络坏境下,及时、有效地获得解答是学生远程学习的基本需求。

2)通过对学生所提问题的记录分析,可以统计出学生普遍存在的知识薄弱环节,为教师进一步改进教学方法提供参考,成为辅助教学的有效工具。

3)在网络环境下的智能答疑系统采用了友好自然的自然语言接口,学生可以轻松自如地提问,及时解决学习过程中遇到的难题,使远程教学真正起到用户良师的作用,对于远程教学方式在我国的进一步普及,具有不可估量的重大意义。

4)将功能良好的智能答疑系统应用于国家大力发展的远程教学支撑平台中,具有很大的社会价值。

5)为自然语言理解以及信息检索技术的应用发展提供了一个方向,可以推动该技术领域的发展。

如何让计算机理解用户提出的自然语言描述的问题,检索到目标问题,并自动的返回答案,这是智能答疑系统的关键。本文讨论怎样根据用户问题去匹配目标问题的思想及其算法,这也是智能答疑系统的最终目的。

1 问题关键词匹配度计算

一个问题中含有一个或多个关键词,但是每个关键词在句子中的地位是不一样的,有的起决定性的作用。该类关键词就是要重点考虑的关键词,它与问题的匹配度为1。如:“编译原理是什么?”,含有关键词“编译原理”、“编译”,在这个问题中学生要问的是“编译原理是什么”,因而“编译原理”是要重点考虑的关键词。但是“编译”也属于《编译原理》这门课程的专业词,匹配时也可以考虑,因为这将有利于问题答案的检索。如果学生问的“编译是什么?”,若FAQ中没有该匹配对,不能检索到相同的问题则检索近似的问题。

例如:编译原理是什么?

起决定性作用的关键词,它与该问题的匹配度为1,不起决定性的关键词与问题的匹配度为0.5。

采用这种策略,可以实现简单的语义分析。

例如:“编译原理是什么?”与“什么是编译原理?”是同一个问题。如果用户输入的是这两个问题,则检索到的都是同一个问题。

如果问的是“编译是什么?”(假设FAQ中没有该问题与“编译”的匹配度为1的匹配对),则检索到近似的“编译原理是什么?”,然后返回其答案。这样系统用一个近似的问题及其答案来回答学生所问问题,从所返回的答案中学生能有所启发。

2 基于问题关键词匹配度的相似度计算

系统根据用户所问问题去检索相应的问题及其答案,即根据用户问题去匹配目标问题。匹配到的目标问题是否与用户问题对应,相似程度有多大?这将涉及到相似度问题。

句子相似度计算在自然语言处理中有着广泛的应用,例如,在基于实例的机器翻译中的源语言检索,面向常问问题集的自动问答系统中的问句检索等领域。在不同的具体应用中,相似度的含义也有所不同。例如,在基于实例的机器翻译中,相似度主要用于衡量文本中词语的可以相互替换使用而不改变文本的句法语义结构的程度;在信息检索中,相似度更多的是反映文本与用户查询在意义上的符合程度。

目前常见的两种句子相似度的计算方法:(1)基于词向量空间模型的TF-IDF相似度计算方法;(2)基于语义词典的相似度计算方法。

本文在这两种相似度计算方法的基础上提出了一种新的相似度计算——基于问题关键词匹配度的相似度计算:

当用户问题中的关键词与目标问题的匹配度为1且句子类别一致时,则认为目标问题与用户问题完全相似,相似度为1。

当用户问题中的关键词与目标问题的匹配度为0.5且句子类别一致时,则认为目标问题与用户问题近似相似,相似度为0.5。

当用户问题中的关键词与目标问题的匹配度为1或0.5但句子类别不一致时,则认为目标问题与用户问题低相似,相似度为0.25。

利用这种相似度计算方法,相似度在系统实现中不用单独计算,它的计算隐含在问题匹配中。

在实际的系统实现中,一般只要考虑前两种。这种方法是一种非常有效的相似度计算方法,在实际的系统中能大大提高系统的效率,减少了传统的相似度计算的复杂统计及计算。

3 问题匹配算法

利用本文中提出的相似度计算来完成问题的匹配——用户问题与目标问题的匹配。

利用FAQ库进行用户问题解答的基本计算流程如下图所示:

3.1算法程序代码

while(rsl1.next())//判断CutWord表是否为空即是否切到了关键词;AND判断是否遍历完;(技巧:只要能进入循环就不是空即切到了关键词;于是随即就可以进行遍历)

4 结束语

本文阐述了智能答疑系统的作用,介绍了一种基于问题关键词匹配度的相似度计算,然后利用该思想来完成问题匹配,并给出了问题匹配算法的流程图以及程序代码。

摘要:答疑是教学中不可或缺的环节,传统面对面的答疑浪费时间和精力,因而开发高效、准确、智能化的自动答疑系统是必要的。系统返回答案的准确性在一定程度取决于问题匹配的相似度。该文介绍了智能答疑系统中传统的相似度计算,然后在传统的相似度计算的基础上提出了一种新的相似度计算方法——基于问题关键词匹配度的相似度计算,同时给出了该思想在系统中的实现算法。

关键词:智能答疑系统,相似度,匹配度

参考文献

[1]侯丽敏.基于网络的智能答疑系统的研究与实现[D].河南:河南大学,2005.

Java错误堆栈相似度计算 篇5

在服务器端运行的java程序会产生java错误报告,在这些错误报告中包含了大量的java错误堆栈。程序的维护人员会根据这些java错误堆栈对程序进行修改。为了提高解决问题的效率,人们希望能够自动地对错误堆栈进行分类,根据错误堆栈的类别,采取相应的方法解决问题。在这个过程中,会比较错误堆栈之间的相似度。

Jav的错误堆栈是由一系列的字符串组成,因此在比较Jav错误堆栈之间相似度的时候,往往会用到字符串相似度比较算法。现在字符串相似度方法有很多,比如最长公共子串算法(Longest Common Subsequence缩写为LCS)[1],它是根据两个字符串之间最长的公共子串的长度来计算字符串之间的相似度,此算法的算法复杂度为,其中m,n,是两个字符串之间的长度。LeveinshteinDistance也被称作编辑距离[2],它是根据由一个字符串变成另外一个字符串所需要的操作数来衡量字符串之间的相似度,这些操作包括插入、删除、更改字符。该算法的算法复杂度也是,其中m,n,是两个字符串之间的长度。汉明距离(Hamming Distance )[3]也是一种计算字符串相似度的算法。该算法是根据两个相同长度字符串之间对应位置的不同字符的个数来计算字符串之间的相似度。此算法的算法复杂度是,其中m是字符串的长度,但是该算法只适用于两个相同长度字符串之间相似度的比较。这些字符串相似度比较算法广泛地应用于和字符串相关的领域中,但是这些算法并不是针对Java错误堆栈而设计的,java错误堆栈有其自身的特点,以上的字符串相似度比较算法不能很好地衡量错误堆栈之间的相似度。

图1是Java错误堆栈的一个例子,一个java错误堆栈里面包含了很多的字符串,在这里我们称每一行字符串为error trace。在错误堆栈分类的过程中,其实比较的是error trace之间的相似度。在比较error trace相似度的过程中,如果使用最长公共子串算法或者Levenshtein Distance, 那么这只能比较它们最大的公共部分,并不有很好地说服性,另外在java程序中,如果使用的包的名字或者类的名字更改的话,这会对算法的效果产生很大的影响,并且这些算法的算法复杂度过高,随着error trace的长度的增加,算法的效率会下降很多,所以这些算法并不能很好地适用java error trace的相似度比较。因此我们提出了一种新的java错误堆栈相似度比较的算法。

2方法说明

在我们的算法中,我们首先对Hamming Distance进行了改良,使其适用于不同长度字符串之间的相计算。我们称新的算法是Length Adapted Hamming Distance (简称LA Hamming Distance或者LAHD)。

2.1 LAHD

LAHD算法的核心思想是把两个长度不同的字符串中的长度较长的字符串进行修改,把多余的部分删除掉,然后利用Ham.ming Distance计算剩余的字符串之间的相似度,然后再加上删除部分的长度,这样就计算出了两个长度不同的字符串之间的相似度。

在图2中详细地描述了LAHD算法的过程。我们用A,B代表两个字符串,其中A的长度要大于B,我们用C代表字符串A除去比字符串B长的那一部分后的子串。那么在图2的例子中,A代表的是org.hibernate.persister.entity, B代表的是org.apache.struts.ac.ion, C代表的是rg.hibernate.persister. .那么字符串A和B之间的LAHD距离为:

其中代表的是字符串B和字符串C之间的Hamming Distance. 代表的是字符串A和字符串B的长度。在图二的例子中是M与N的和,是用P表示。那么A与B之间的相似度:

2.2三段法

Java错误堆栈中包含了很多的error trace,文章上文中提到的算法在计算error trace相似度的时候把error trace当成一个整体而我们设计的算法并不是这样的,一个error trace中包含了包的名字、类的名字以及函数的名字,根据error trace的特点,我们设计出了我们的算法,我们称之为三段法。

在图3中详细说明了我们算法的基本原理。首先我们根据errotrac的特点,把errotrac进行划分,分为三部分:包名、类名、函数名。然后分别计算这三部分的相似度,每一部分用不同的算法来计算,其中包名之间的相似度是使用Length Adapted Ham.ming Distance (简称为LA Hamming Distance)来计算的,因为在整个java error trace中包的名字最长,如果使用其它的两种方法会使算法的效率下降很多。类名和函数名都是使用最长公共子串算法来计算的(原因我们会在实验中说明)。最后对这三部分的相似度进行加权求和(关于各个部分的权值是根据实验得来的,我们会在试验中说明)。这样就可以计算出相似度。

3实验结果

首先,我们在错误堆栈中提取了100条数据,然后请熟悉堆栈分类的人对这些数据进分类,然后我们利用K-means[4]算法对这些算法进行聚类,在聚类的过程中我们要计算不同类别之间的距离,我们在这个过程中使用了三种方法来衡量这些类别之间的距离,这三中方法是Single-Linkage[5],Complete-Linkage[6], Average-Linkage[6]。最后机器分类的结果与人工分类的结果进行比较,得到机器分类的准确率

我们通过实验,得到了在包名,类名以及函数名的权值分别取0.35,0.40,0.25的情况下,准确率的值最高。

表一中列出了在不同聚类算法的情况下,我们的算法和其它算法的准确率的信息。通过上表可以看出,我们算法的准确率要明显高于Hamming以及levenshtein距离。而且我们的算法和LCS算法的准确率的差距并不大。这也是我们使用LCS算法而不使用Levenshtein Distance来计算类名以及函数名相似度的原因。

通过实验,我们得出Levenshtein Distance, Hamming Distance, LCS以及我们算法所花费的时间分别为38.5464ms,0.1661ms,21.5883ms,7.5089ms。可以看出,我们的算法要比Levenshtein Distance以及LCS要高很多。但是要比Hamming Distance要低。

旅游本体的概念相似度算法改进 篇6

语义相似度是用来衡量文档或术语的语义内容或涵义间的相似程度的概念[1],目前相似度计算已广泛应用于本体学习与合并、语义标注、知识管理中的信息抽取及自然语言理解等相关领域。与依赖关键词的检索相比,基于语义的检索能大幅度提高信息检索的查准率和查全率[2]。而概念的相似度计算决定了语义匹配的精确度,是语义检索的基础,因此提高概念相似度计算的精确度成为本体应用的关键。

目前,国内外学者已经对概念相似度计算进行了广泛的探索和研究,提出了很多计算相似度的方法。根据所使用的数据源及数据源的使用方式,相似度算法大致可分为基于路径的方法、基于特征的方法、基于信息内容IC(Information Content)的方法。基于路径的方法把概念相似性度量建立在本体中分割两个概念的语义连接数目上[3,4]。基于特征的方法根据本体概念描述模型中相同和不同的概念属性来估计概念间的相似度[6]。基于信息内容的相似性度量方法把概念信息量与本体知识相结合[7,8,9]。传统的信息内容求解方法是基于统计方法,统计给定语料库中的概念出现的次数,求得其出现的概率,从而得到信息内容值。但是基于统计的方法会受语料库内容的影响,工作量较大。

本文结合Word Net词典本身结构,综合考虑概念在分类树中的子节点信息、深度信息、公共父节点信息,提出了一个新的基于信息内容的概念语义相似度算法,这种基于Word Net本身结构的求解方法不需要其他语料库的参与,简单易行。同时本文利用Word Net词典,构建了旅游领域本体,通过实例证明该算法有效地提高了概念间语义相似度计算的准确度。

1 信息内容

1.1 信息内容算法概述

用数学语言去描述Word Net中的概念的信息内容参数,P(c)表示遇到概念c的实例的概率。根据信息理论中的定义,信息内容表示为-log P(c),即IC(c)=-log P(c),含义是一个概念的出现的概率越大,则该概念的自信息量就越小。其中,c是指某一具体概念,IC(c)指概念c的信息内容值。在Resnik的实验中,求解P(c)的方法是统计布朗语料库中名词出现的频率,计算方法可以形式化表示为:

其中,count(w)表示单词w在语料库中的个数,N表示语料库中的名词个数。

由式(1)可以看出,对于不同的语料库,则有可能得到不同的IC(c)。这是因为语料库中的概念是有限的。不同的语料库概念的数量也不同,出现的频率也不一定相同。由此可见,基于语料库进行词频统计有着不足之处。

Seco的IC计算模型是基于Word Net自身分类树结构来求解[10]。Seco发现子节点越多的概念所包含的信息量越少,而那些叶子节点的信息量最大。Seco的计算模型形式化表示为:

其中,hypo(c)返回值为概念的所有子节点数,max_node是一个常量,表示存在于分类树的所有概念的数目。

然而,该模型只考虑了概念的子节点数。如果在本体树中两个概念的子节点个数相同,则IC值相同。为此,Zhou在此算法基础上加入了概念深度因素[11]:

其中,depth(c)是概念深度,max_depth是本体树的最大深度。虽然上述算法较之Seco算法有所改进,但该模型仍无法区分概念子节点数相同、深度相同时的IC值。

1.2 信息内容算法改进

通常我们用Sim(A,B)来表示概念A和B间的相似度。概念信息内容的精确与否直接影响到概念间相似度的比较。经过分析,本文认为影响概念信息内容及概念间相似度的因素有:

(1)被比较概念在本体树中的深度。根据Resnik[7]和Seco[10]理论,概念深度越小,说明出现频率越高,则该概念越抽象,所涵盖的信息内容也就越少。反之,底层概念更为具体,所继承的信息内容也越多,概念间所共享的上层信息概率越大,因此底层概念间的语义相似度一般大于高层概念间的相似度。如IC(水果)

(2)被比较概念在本体树中所在簇的密度(簇:在语义树中,从根节点分出的树枝[12])。簇中概念节点越多,密度越大,说明对该簇根节点概念的细化程度越大,所对应的子节点所代表的概念也就更为具体,信息内容也就越大,所共享信息的概率也就越大,因此相似度越高。如第2节的图1中Activity簇的细化程度比Accommodation簇高,IC(Relaxation)>IC(Hotel)。

(3)被比较概念在本体树中相隔的路径长度。在密度及路径类型相同的情况下,概念间路径长度越长,相似度越小。如图1中Sim(Luxury Hotel,Hotel)>Sim(Luxury Hotel,Accommodation)。

(4)被比较概念最近祖先节点LCS(Least Common Subsumer)的信息内容。在密度、深度及路径长度相同的情况下,被比较概念最近祖先节点的信息内容越大,概念的信息内容也就越大。如第2节的图1中,IC(Sports)>IC(Rural Area),则IC(Climbing)>IC(Countryside)。

基于以上分析,提出了基于信息内容特征参数求解的新模型,如式(4)所示:

其中,Cnode_max是概念C所在簇的概念节点总个数,Tnode_max是本体树所有概念节点的个数,AIC是概念C最近公共祖先节点的IC值,Hnode是概念C最近祖先节点拥有的与C深度相同的子节点个数,hypo(c)是概念C的所有子节点,depth(c)是概念C的深度,Tdepth_max是本体树的最大深度。

上述算式中的分母把信息内容值约束在[0,1]之间,本体树中顶层概念节点信息内容值为0,底层概念节点信息内容值为1,如此规律递增。概念节点越向上,说明概念出现的频率越高,所包含的信息内容越少,反之亦然。同样,概念节点所包含的子节点越多,则出现的频率越高,涵盖的信息内容也少。在深度、密度、子节点数都相同的情况下,如果父节点的信息内容值越大,则子节点的信息内容值也越大。

2 实例与仿真

2.1 实例

在研究与旅游有关的知识体系时,我们利用Word Net把有关的本体分成了Activity、Way、Accommodation和Destination四大类。图1为利用Protégé4.1创建的本体库片段。

2.2 实验仿真

为了验证旅游本体库的合理性,以及检验本文算法的实用性和有效性,我们使用MyEclipse 6.5、JDK 1.6.0等开发工具实现了本文中的算法。同时用基于路径的方法(Wu&Palmer[1])、基于特征的方法(David&Montserrat[6])、基于信息内容的方法(Resnik[7]、Jiang&Conrath[9]、Lin[8])对图1中部分本体概念进行了相似度求解并与人工打分进行了比较,结果见表1、表2。其中,基于信息内容的方法分别使用了Seco[10]、Zhou[11]及本文模型进行了结果对比。

本文采用皮尔森相关系数作为评价本文相似度计算公式的标准,如式(5)所示:

其中,xi表示相似度计算公式计算出来第i对概念的相似度值;yi表示由专家判定的第i对概念的相似度值;分别表示它们的平均值;σx和σy分别表示它们的方差。

不同相似度算法和不同信息内容算法对相同概念进行相似度求解的结果。其中,方法1为基于路径算法,方法2为基于特征算法,方法3-方法5为信息内容算法。所对应的具体算法名称详见表3。

从表2中的数据可以看出:本文的算法计算结果比较精确,更为接近人类专家的判断结果。

同时,为了更进一步验证本文算法的本体适用性,将该算法应用于文献[12]的基因本体中,对基因本体的部分概念节点进行了相似度求解,并把该结果与文献[13]中的算法结果进行对比,结果如表4所示。

3 结语

本文给出了概念的信息内容参数模型,该参数可以广泛应用到基于信息内容相似度算法当中。相对比其他模型,该模型不仅考虑了概念的子节点的个数,而且将概念所处于树中最近公共祖先节点、簇中同深度的节点数等纳入模型当中,使得概念的IC值更为精确。通过与其他相似度算法进行比较,结果表明本文算法求得与人工判别得到的相似度值的相关系数更高,同时把该算法用于基因本体,更进一步证明本文中新的IC模型的本体适用性。

摘要:传统的基于信息内容的概念相似度算法在计算信息内容值时过于依赖语料库,给出一个新的只通过WordNet结构计算概念语义相似度的信息内容模型。该模型以WordNet的is-a关系为基础,不仅考虑了概念所包含的子节点个数和所处深度,而且将该概念所处的簇及父节点的信息内容值引入到模型中,使得概念的信息内容值更为精确。实验结果显示将该模型应用到领域本体的概念相似度计算中,可以明显提高现有相似度算法的性能。

程序相似度判定算法研究与实现 篇7

当前的大学教育中学生作业抄袭现象比较普遍,尤其是程序设计类课程,作业是以电子文档方式存储的,学生可以直接将互联网上或其他同学的作业拷贝过来,作一些简单修改就直接交给老师,抄袭容易[1,2,3]。国外很多教育机构针对程序设计课程的源代码抄袭现象进行的调查显示,高达85.4% 的学生承认抄袭过别人的编程作业[4,5]。教师在大量的程序作业中人工判别抄袭将是一项繁重的工作,也无法确保考核的正确性和客观性。因此,检测程序代码的相似度具有重要的现实意义,可以帮助教师检查学生中的抄袭现象,还可以辅助实现作业批改或者试卷评阅的自动化[6,7]。

程序代码相似度检测早在20世纪70年代初就有学者对此进行了研究。1976年,Purdue大学的Ottenstein[8]首次提出了基于属性计数法度量相似度算法———An Algorithmic Approach to the Detection and Prevention of Plagiarism。Ottenstein首次使用Halstead程序度量方法进行程序相似度识 别,其开发的 某系统可 直接统计M.Halstead[9]提出的衡量程序 长度的4个基本软 件科学参数:n1,n2,N1,N2。Ottenstein认为两个程序具有相同的4个属性值的可能性是非常小的。这4个程序的参数,构成一个向量vi,设另一程序4个参数构成向量vj,则可通过计算这两个向量的夹角余弦作为其相似度。1992年,Komondoor和Horwitz提出使用 切片技术 进行检测[10],把语句完全相同的代码中间夹杂的不相关语句放到该部分代码的前面或后面,如此就会使两段相似的代码连成一体,形成一个更大规模的相似代码,进而能够识别出程序中的非连续完全相似代码。1996年,Verco和Wise[11]指出,对于仅仅使用属性计数法的检测算法,增加向量位数并不能改善错误率。改进属性计数法的措施就是加入程序的结构信息,结合结构 度量(structure metrics)来检测相似度。

本文在已有研究的基础上,基于属性度量与最长公共子序列算法,将属性度量的结构无关性与最长公共子序列算法的结构依赖性有机结合,巧妙避开了两个算法原有的缺点,取长补短,从而得到源代码较为可信的综合相似值。

1相似度判定算法分析

1.1最长公共子序列算法

最长公共子序列[12](Longest Common Subsequence,LCS)算法用于计算两个给定字符串分别删除零个或多个字符后得到的长度最长的相同字符序列。该算法的核心思想为动态规划[13],以LCS(A,B)表示A,B的最长公共子序列,其动态转移方程如下:

设LCS(Ai,Bj)表示长度为i、j的两字符串的最长公共子序列长度,ai、bj表示字符串中下标为i与j的字符,将动态转移方程改写成易于编程的数学表达式描述如下:

1.2相似代码分类

2001年,Edward L.Jones对程序相似代 码之间的 更改手段重新总结,在不影响程序结果的前提下,将相似代码分为10类情况[14],如表1所示。

这10种情况相对简单的解决策略如下:

(1)对于逐字拷贝产生的代码,由于源代码未作改动,或只有细微改动,对两部分代码使用最长公共子序列算法(以下简称LCS算法),将可以准确得出两代码的相似程度。

(2)对于更改注释语句后形成的代码,由于注释语句与程序功能无任何关联,只具有说明功能,去掉注释对程序的实际运行无任何影响。因此,将需要比对的两段程序去掉注释,即可得到类似于逐字拷贝产生的相似代码,对其使用LCS算法即可得出相似程度。

(3)更改空白区域与更改注释信息的行为类似,只需对源代码进行空格缩进处理,进而使用LCS算法得出相似程度。

(4)重新命名标识符后的源程序,经过编译后与修改之前的源程序产生同 样的可执 行程序,只对可读 性有影响,因此可以对用户自定义变量进行统一替换后使用LCS算法。

(5)通常数据类 型的修改 都会影响 到程序的 执行结果,但也有部分数据类型之间存在隐式转换,绝大多数情况下对此类数据类型的修改将不影响运行结果。因此,将所有可以隐式转换的数据类型统一替换成指定的数据类型后使用LCS算法。

(6)对于更改各类语句、语句块顺序的做法,可以通过Halstead属性统计的方法来计算相似程序,该方法只统计属性的数目而不讨论其出现的位置,因而得出的结果也不受语句顺序的影响。

(7)若用户增加无用语句与变量,则需使用程序切片技术处理,在此不作深入研究。

(8)若用户使用等价语句重新书写源程序,则单从对字符数据处理已无法解决,需对程序进行语法分析处理。若用户对整个源程序 重写,即使通过 语法分析 得出其相似,也很难将其归为抄袭,因为即使正常的代码书写,若逻辑过程一致,则其最终代码与等价重写代码也相似。

学生作业中最常见的相似代码类型为表1中的前8种,本文所研究算法将对后两种情况不予考虑,认可其中的改动部分为不相似。

由前面所述应对策略可以看出,Halstead程序度量法可有效识别出代码语句块顺序错乱的相似代码。而LCS算法则可有效识别出对于代码语句块顺序未发生改变的相似代码,若将两者优点结合,则可较为准确地识别出上述几类相似情况。

1.3解决相似的办法

目前,相似代码的检测所针对的对象主要分为两种:一种是源代码文件,另一种是将源代码进行某种形式的转换,将其转换成 某种内部 信息形式,例如:目标文件 (.obj),然后运用检测方法分别进行比较。已有的识别方法主要分为以下3类:基于String、基于Token和基于ParseTree[15]。

(1)String:源程序以字符串为单位划分,最典型的就是按照行来划分,将这些String相互比较来发现重复的字符串序列。

(2)Token:由词法分析程序将源文件转换成Token,查找相似的Token流。

(3)Parse-Tree:基于源程序文件或者目标文件,建立完整的语法树,搜索树中相似的子树。

三类识别方法特性如表2所示。

本文将Halstead与LCS结合,且算法实现用于编程教学,代码量不会过大,在教学过程中,偶尔也会穿插其它编程语言。因此,使用基于String的处理方式更加合理、更易于实施。

2算法改进

基于对代码相似判定算法进行的一系列研究,以及对各种编程风格进行分析,得出下列要素:

(1)不以行为单位对源码进行分解。在用户编码风格出现差异时,若行内语句过多,行内语句间并无任何内部关联。此种情况下,以行为单 位将可能 导致某种 极端情况,即所有语句都写在同一行上,此时,算法将退化为对整个程序进行相似分 析操作,达不到预 期的分块 目的。因而,本文算法采取以语句为单位对源码进行处理,各编程语言普遍以“;”为语句结束标志,算法将以分号对源码进行分割处理,此举有效避免了上述的极端情况。

(2)只度量属性个数。Halstead程序度量计算法在统计整个源程序文件时,获得的度量属性频度较高,而在采取基于字符串的子句分割处理条件下,度量属性的频度取值往往较低,通常为1。为简化子句的相似度计算,提高程序运行效率,算法将只对度量属性的种类进行考量。对于频度不为1的度量属性,在本算法的处理方法下亦可得到体现。

(3)对单条语 句使用LCS算法度量 其结构相 似度。Halstead程序度量法无法识别程序结构,但可以识别语句顺序发生改动的源码,LCS对程序相似长度进行统计,达到对结构的度量,但对于语句顺序发生变化的源码,LCS计算的相似长度将大为降低。

(4)抄袭程度计 算。由于在预 处理过程 中去掉了 注释、头文件信息,对用户变量进行统一替换,使得源程序丢失过多信息,导致判定算法对修改了此类信息的源码与未修改此类信息的源码进行同等处理。然而,对代码未作修改与稍作修改,这两种做法代表的抄袭心态有巨大差别。虽然都为抄袭,前者的行为更为恶劣。

综合以上结论,改进的算 法实现具 有以下特 性与功能:1对输入源码进行空格紧缩处理;2将源码中的头文件信息、注释信息按照指定格式及顺序移动到冗余信息链表上,供后续处理;3将获取的用户自定义变量及数据类型进行记录后再对其统一替换;4采用基于字符串的子句分割处理,以分号作为分割条件;5对度量属性种类进行权值计算,以方便比较;6各语句片段权值逐一比较,找出最匹配的相似语句;7对权值相似语句排序,计算排序后的最长公共子序列长度,得出单句语句的相似程度;8对所有相似语句进行数据统计,得出最终代码相似度;9对于相似度过高的代码,将继续对其冗余信息采用类似手段考核。

改进的算法能够综合解决相似种类及解释:1逐字拷贝:由于此类程序不论在整体上、局部上以及待度量属性上都未作修改,算法能够有效识别出,而最终得出的相似度必然接近100%;2更改注释语句:由于算法将注释信息添加到冗余队列,在对程序考核之后,若程序主体相似过高,则对注释信息亦会考量,进而得出代码注释部分的相似程度,其结果与程序相似结果独立;3更改空白区域:对于空白区域,算法不对其个数进行统计从而加以区分,多个连续空格将视为一个。因而,用户对空白区域的添加或删除将不对相似程度产生影响;4重新命名标识符:程序主体相似过高时,对标识符列表进行考量,结果与程序相似独立;5更改数据类型:若程序主体相似过高,将对数据类型列表进行考量,结果与程序相似独立;6更改代码块顺序:由于算法采用局部逐一比对,更改代码块顺序将对结果无影响;7改变表达式中的操作符和操作数顺序:Halstead属性只对表达式中的操作符种类统计数量,改变操作符顺序对此无影响;8改变代码块中语句的顺序:原理同6;9增加语句和变量:算法未进行相关的程序切片处理,该做法将降低程序的相似程度;10用等价语句替换原有语句:算法未涉及源程序的语法分析,该做法将降低程序的相似程度。

3改进后的算法流程

在对源码进行比较前,源程序将经过预处理,剔除源码中无用信息并将此信息附加到冗余信息列表中,将源码分解成符合处理要求的形式。

单条语句的权值由操作符与关键字构成,每个操作符与关键字都具有唯一权值,所有操作符与关键字进行逻辑或操作即可得出该条语句的最终权值。

预处理流程中使用的操作符权值计算索引如表3所示。

预处理流程如图1所示。

语句以分号或大括号作为分割符,分割后的语句块作为本算法的基本处理单元。关键字被记录在指定数组中,计算模块获得待计算字符串后,设置初始权值为1,将待计算字符串逐一与数组中关键字比较,同时权值进行左移1位运算,即等效的权值乘以2,找到匹配字符后返回权值,若无匹配,返回 -1表示该字符串非关键字。待判定源码与目标源码预处理结束后,程序将对两份源码的每条语句操作符权值与关键字权值逐一比较,计算出待判定源码与目标源码的关键字权值与操作符权值的最佳匹配。对于匹配值较高的源码,将语句中包含的自定义变量进行统一替换,对替换后的语句执行最长公共子序列算法,计算出公共子序列长度,然后将其值与待定源码和目标源码中长度较长的语句长度计算比值,最终获得待定源码与目标源码间的每条相似语句,程序根据代码量计算相似度,并根据用户需要,将详细结果以指定形式反馈给用户进行人工分析。流程如图2所示。

4算法实现

4.1程序相似度判定实现

4.1.1操作符权值计算

程序依据各类一元操作符的权值,与最终权值进行逻辑与,以获得单条语句的整体权值,代码如下:

4.1.2关键字权值计算

根据单词在关键字表中的位置,得出其相应的二进制位值,与最终结果进行或操作进行置位。

4.1.3权值比较

对权值采取二进制位个数统计,得出相同部分二进制位为1的个数,另取出两个权值中二进制数中1的个数较多的权值,将两数相除后作为权值的相似程度。关键字相似采用与此相同的方法,结果与操作数独立,参考优先级大于操作符相似。

4.1.4最长公共子序列长度计算

对权值相似度达到阈值的语句排序后,采用下列最长公共子序列长度算法计算两语句间的相似程度。

4.2程序相似度判定结果

算法首先以分号或大括号作为分隔符,将语句分割为基本处理单元,然后以多种方式对待测源码与目标源码进行相似度考量,如:目标原始代码考量,剔除无用信息后的考量,统一替换变量后的考量,统一替换可以隐式转换的数据类型等,最终得出 各类相似 值的集合。若用户有 需求,则将详细列表予以展示供人工检阅。在待测代码中,系统逐一对相似代码语句予以不同的颜色显示,并标明其具体的语句相似值,相似值极高的代码采用红色字体显示(如图3中编号为0、1、2、3、4、7的待测代码),相似值极低的代码采用绿色显示(如图3中编号为6的待测代码),对于中等相似予以黄色字体显示(如图3中编号为5的待测代码),其中的“NO”为待测代码的语句编号,“DesNO”为目标代码的语句编号,总体相似程度为各语句相似度的平均值。待测代码与目标代码的相似判定结果值如图3所示。

5结语

算法基于已有的属性度量与最长公共子序列算法,将属性度量的结构无关性与最长公共子序列算法的结构依赖性有机结合,得到程序源代码较为可信的综合相似值。实验结果表明,改进后的算法可以有效降低程序源代码的评测难度,提高评测结果的准确性,得到较为科学的总体相似度值,从而增强评测人员对抄袭现象的监测力度,据此对抄袭者给予警告。

摘要:有效检测程序设计类课程作业抄袭现象具有重要的现实意义。传统的代码相似度检测方法主要利用代码属性或结构信息判定代码之间的相似性。基于已有的属性度量与最长公共子序列算法,提出一种代码相似度检测算法,算法将属性度量的结构无关性与最长公共子序列算法的结构依赖性有机结合。实验结果表明,该算法可以有效降低程序源代码的评测难度,得到较为可信的综合相似度值,增强了评测人员对抄袭现象的监测力度。

上一篇:筛查与管理下一篇:语文说课说什么