算法大致思路: 把要匹配的模型转换为带标记的有向图(directed labeled graphs。由节点和弧组成的图,允许对象用自身的属性及其和其他对象的关系来定义,类似于ER图)。这些图要用来做迭代的不动点计算,计算结果将告诉我们一张图里的哪些节点和第二张图的节点相似。 为了计算相似度,我们利用了这样一个直觉:两个不同的节点是相似的,当它们邻接元素是相似的。换句话说,两个元素相似性的一部分传播给了它们各自的邻居,这种传播方式类似于IP广播,这也是SF这个名字的由来。我们把算法的结果叫做一个 mapping,然后根据匹配目标,选择特定的过滤器来过滤出一个原始结果的子集。我们希望能够人工对结果进行修正,需要修正的成员数目就反映了算法的准确性。概述: 假设有2个schema,S1和S2。我们要为S1里每一个元素在S2中找到匹配的元素。 过程如下: 1. G1 = SQL2Graph(S1); G2 = SQL2Graph(S2); 把schema变成图,图采用了Open Information Model (OIM)规格,图中node采用矩形和卵形,矩形是文字描述,卵形是标识符 2. initialMap = StringMatch(G1, G2); 用字符串匹配做为初始匹配,主要是比较通常的前缀和后缀,这样的结果通常是不准确的 3. product = SFJoin(G1, G2, initialMap); 用SF算法生成结果。假设两个不同的节点是相似的,则它们邻接元素的相似度增加。经过一系列的迭代,这种相似度会传遍整个图 4. result = SelectThreshold(product); 结果筛选SF算法 图中的每条边,用一个三元组表示(s,p,o),分别是 源点,边名,目的点。 相似度传播图:首先定义pairwise connectivity graph(PCG) : ((x; y); p; (x'; y')) 属于 PCG(A;B)<==>(x; p; x') € A and (y; p; y') € B。 关键是p要相同,也就是边的名字一样。式子从右向左推导,就可以A、B从两个模型建立起它们的PCG。图中的每个节点,都是A和B中的元素构成的2元组,叫做map pairs。 induced propagation graph。从PCG推导而来,加上了反向的边,边上注明了[传播系数],值为 1/n,n为相应的边的数目。 不动点计算: 设ó(x; y) > 0 代表了节点x € A 和 y € B 的相似度,是在整个 A X B的范围上定义的。我们把 ó 叫做 mapping。相似度的计算就是基于ó-values的迭代计算。设 ói 代表了第 i 次迭代后的结果,ó0 是初始相似度(可以用字符串相似度的办法的得出,在我们的例子里,没有 ó0 ,即让 ó0 =1)。 每次迭代中,ó-values 都会根据其邻居paris的 ó-values 乘以[传播系数] 来增加。例如,在第一次迭代 ó1(a1; b1) = ó0(a1; b1) + ó0(a; b) * 0.5 = 1.5。类似的,ó1(a, b) = ó0(a, b) + ó0(a1; b1) * 1.0 + ó0(a2, b1) *1.0 = 3.0。接下来,所有 ó 值进行正规化,比如除以当前迭代的 ó的最大值,保证所有 ó 都不大于1。所以在正规化以后,ó1(a; b) = 1.0, ó1(a1, b1) = 1.5/3.0 = 0.5。一般情况下,迭代如下进行:
上面的计算进行迭代,直到 ón 和 ón-1之间的差别小于一个阈值,如果计算没有聚合,我们就在迭代超过一定次数后停止。上图3的第三副图,就是5次迭代后的结果。表3时一些计算方法,后面的实验表明,C比较好。A叫做 sparce,B叫做 excepted,C叫做verbose过滤 迭代出的结果是一种[多匹配],可能包含有用的匹配子集。 三个步骤: 1。用程序定义的[限制条件]进行过滤。 2。用双向图中的匹配上下文技术进行过滤 3。比较各种技术的有效性(满足用户需求的能力) 限制:主要有两种,一个是[类型]限制,比如只考虑[列]的匹配(匹配双方都是列)。第二个是 cardinality 限制,即模式S1中的所有元素都要在S2中有一个映射。stable marriage问题:n女和n男配对,不存在这样的两对 (x; y)和(x0; y0),其中x喜欢 y0 胜过 y,而且 y0 喜欢 x 胜过 x0。具有stable marriage的匹配结果的total satisfaction可能会比不具有stable marriage的匹配结果还低!匹配质量的评估 基本的评估思想,就是 用户对匹配结果做的修改越少,匹配质量就越高(修改结果包括去掉错误的pair,加上正确的pair) n是找到的匹配数,m是理想的匹配数,c是用户作出修正的数目。from: http://www.cnblogs.com/anf/archive/2006/08/15/477700.html
posted on 2006-11-17 18:25 weidagang2046 阅读(1341) 评论(2) 编辑 收藏 所属分类: Algorithm 、Search Engine
Powered by: BlogJava Copyright © weidagang2046