weidagang2046的专栏

物格而后知致
随笔 - 8, 文章 - 409, 评论 - 101, 引用 - 0
数据加载中……

Similarity Flooding

算法大致思路:
        把要匹配的模型转换为带标记的有向图(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),分别是 源点,边名,目的点。

δ2.JPG
      相似度传播图:首先定义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。一般情况下,迭代如下进行:

未命名4.JPG

δ3.JPG
      上面的计算进行迭代,直到 ó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)
未命名1.JPG  n是找到的匹配数,m是理想的匹配数,c是用户作出修正的数目。

from: http://www.cnblogs.com/anf/archive/2006/08/15/477700.html

posted on 2006-11-17 18:25 weidagang2046 阅读(1321) 评论(2)  编辑  收藏 所属分类: AlgorithmSearch Engine

评论

# re: Similarity Flooding [未登录]  回复  更多评论   

你那个传播系数 是怎么弄出来的?
2011-02-02 00:48 | yy

# re: Similarity Flooding [未登录]  回复  更多评论   

值为 1/n,n为相应的边的数目。
这个是怎么解释?为什么有的是1 有的是2
这点不明白
2011-02-02 00:50 | yy

只有注册用户登录后才能发表评论。


网站导航: