该论文建立了一个概率模型,对关系、实体、类之间的概率进行建模,不需要任何参数即可完成实体对齐任务。其中,一部分公式借鉴了《Some entities are more equal than others: statistical methods to consolidate Linked Data》,但效果更出色,并且可以应用在大规模数据上。由于对这方面工作不了解,不清这项工作是否是state-of-art
论文链接
另外这篇在2011年的论文貌似非常牛批,微软Research还进行了采访,挂在其官网主页中,包括课件,代码以及相关成果等,我在看完论文理解完后才看见这个还真是不幸…早点看课件可能会理解的更快一些。
文章目录
-
-
- 思路
- 预备概念
-
- 本体
- 等价(Equivalence)
- 关系的函数
- 关系的函数性函数(functionality)
- 模型建立
-
- 实体对齐
- 等价关系
- 对于等价关系的处理以及对实体对齐模型求解的补充
-
- 特例
- 对称性
- 等价类
-
- 对子类计算补充子关系或等价实体的考虑
- 实现
-
- 迭代过程
-
- 算法收敛性
- 复杂度优化
-
- 对子关系概率公式计算的优化
- 设定最下概率阈值
- top-k选择
- 代码
- 字符串等价的计算
-
- 论文实现
- 参数声明
- 实验
-
-
- $\theta$的调整
- 可供选择的设计方式
-
- 优点与不足
-
- 优点
- 不足
- 其他
-
- 对全局函数性函数定义的其他选择
-
- 握手
- 对换变量
- 局部函数求算术平均
- 局部函数求调和平均
- 全-局部函数性
- 公式推导
-
- 基础
- 假设
- 推导 $\operatorname{Pr}_{1}\left(x \equiv x^{\prime}\right)$
- 例子
-
- $fun(r)$
- $fun(r)
-
思路
从直觉上,以下几点是成立的:
- 两个实例如果有多个相同的属性对,那么这两个可能是一个实体
- 某些具体的属性(谓语)或值(宾语)能够帮助消歧(无论是对齐还是区分)
预备概念
本体
对于一个本体 O O O,如果说 ? x , r , y ? ∈ O \langle x, r, y\rangle \in O ?x,r,y?∈O ,那么就写为 r ( x , y ) r(x,y) r(x,y),并称其 x x x, y y y是 r r r的变量(argument),或者说是 r r r的一个pair
,关系 r r r 的逆的存在,且为 r ( x , y ) ? r ? 1 ( y , x ) r(x, y) \Leftrightarrow r^{-1}(y, x) r(x,y)?r?1(y,x),当且仅当对所有 x , y x,y x,y均成立
另外,如果关系 r r r是 s s s的子关系,那么可得 ? x , y : r ( x , y ) ? s ( x , y ) \forall x, y : r(x, y) \Rightarrow s(x, y) ?x,y:r(x,y)?s(x,y)
即 r ( x , y ) ? ? x , r , y ? ∈ O r(x,y) \Leftrightarrow \langle x, r, y\rangle \in O r(x,y)??x,r,y?∈O
等价(Equivalence)
对于等价元素,如Londres和London等价,我们用 Londres ? ≡ L o n d o n \operatorname{Londres} \equiv London Londres≡London.表示,等价元素可以推及本体、关系、类
该篇论文做出一个假设:在同一个本体中,不存在等价元素,等价元素只能在不同的本体中出现。
关系的函数
对于函数,可以存在多对一,但不会存在一对多甚至多对多,因此我们对上述的关系函数进行如下:
如果 r r r是关系函数,并且 r ( x , y ) r(x,y) r(x,y)在一个本体中且 r ( x , y ′ ) r(x,y^{\prime}) r(x,y′)在另外一个本体中,那么 y ≡ y ′ y \equiv y^{\prime} y≡y′
关系的函数性函数(functionality)
函数虽然可以作为实体对其时候的一个判断依据,但太过绝对(strict),不能直接使用,原因有2:
- 本体中存在许多的错误,单纯用函数容错性很低(以上述为例,如果在一个本体中 r ( x , y ) r(x,y) r(x,y)是错误的,也会被错认为正确的)
- 及时本体中的一些实体不存在函数,仍然有一些本体是等价的可以对齐的,如关系 r r r是一对多的情况(例子:一个人可以有多个邮箱)
因此,我们提出对一个关系的函数性的度量函数 f u n fun fun,它的值域是0-1,用于衡量一个关系作为函数是否严谨的程度。
在后面的概率计算中,其实可以将其看做一个对概率加权的权重值
对于实体 x 、 r x、r x、r,我们定义局部关系函数性(local functionality)为:
f u n ( r , x ) = 1 # y : r ( x , y ) fun(r, x)=\frac{1}{\# y : r(x, y)} fun(r,x)=#y:r(x,y)1?
其中, # y : r ( x , y ) \# y : r(x, y) #y:r(x,y)表示的是 ∣ { y ∣ r ( x , y ) } ∣ |\{y | r(x,y)\}| ∣{
y∣r(x,y)}∣,即对于给定的 r r r, x x x而言,能构成三元组的 y y y的个数。
直觉上,对于一个主语 x x x,它在关系 r r r中对应的宾语 y y y的数量越多,其函数性越低,如果 y y y只有一个,那么其函数性达到最大值1,函数性是根据函数的定义来言的,函数必须是多对一或者一对一,如果 r r r是函数,那么上式即为1,否则将(即一对多或者多对多)小于1
如,一个人 x 1 x_1 x1?只有一个出生日期,那么其 f u n ( b i r t h d a y , x 1 ) = 1 fun(birthday,x_1)=1 fun(birthday,x1?)=1,一个人 x 2 x_2 x2?有三个邮箱,那么 f u n ( m a i l , x 2 ) = 1 / 2 fun(mail,x_2)=1/2 fun(mail,x2?)=1/2
我们不仅需要衡量对于一对实体x和r的函数性,还要在全局范围内对一个关系 r r r 做出评价,因此论文中定义了全局函数性(global functionality):
f u n ( r ) = # x : ? y : r ( x , y ) # x , y : r ( x , y ) f u n(r)=\frac{\# x : \exists y : r(x, y)}{\# x, y : r(x, y)} fun(r)=#x,y:r(x,y)#x:?y:r(x,y)?
直觉上,因为半函数与 r ( x , y ) r(x,y) r(x,y)程反比,与 r ( x , ? ) r(x ,-) r(x,?)成正比,所以对于所有的三元组 < x , r , y > <x,r,y> <x,r,y>,一对多的情况越多,关系 r r r 的全局函数性越小。可以以性别和邮箱分别举例,性别关系的函数性在无错的情况下绝对为1,而邮箱关系的函数性则在一个人有多个邮箱的情况下小于1
该全局函数性的定义通过参考了文首所给的论文中的一些公式而来
模型建立
实体对齐
根据以上直觉和半函数的定义,对实体对齐的一个形式化描述为:
? r , y , y ′ : r ( x , y ) ∧ r ( x ′ , y ′ ) ∧ y ≡ y ′ ∧ f u n ? 1 ( r ) is high ? x ≡ x ′ \begin{aligned} \exists r, y, y^{\prime} & : r(x, y) \wedge r\left(x^{\prime}, y^{\prime}\right) \wedge y \equiv y^{\prime} \wedge f u n^{-1}(r) \text { is high } \\ & \Longrightarrow x \equiv x^{\prime} \end{aligned} ?r,y,y′?:r(x,y)∧r(x′,y′)∧y≡y′∧fun?1(r) is high ?x≡x′?
转化为概率公式即为:
Pr ? 1 ( x ≡ x ′ ) : = 1 ? ∏ r ( x , y ) r ( x ′ , y ′ ) ( 1 ? f u n ? 1 ( r ) × Pr ? ( y ≡ y ′ ) ) \operatorname{Pr}_{1}\left(x \equiv x^{\prime}\right) :=1-\prod_{r(x, y) \atop r\left(x^{\prime}, y^{\prime}\right)}\left(1-f u n^{-1}(r) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right) Pr1?(x≡x′):=1?r(x′,y′)r(x,y)?∏?(1?fun?1(r)×Pr(y≡y′))
直觉上,两个 y y y 等价的概率越高,且关系 r r r 的函数性越高,则两个 x x x 等价的概率越高;函数性越低,则越对其等价的概率没有影响
我们不光要对实体对齐进行形式化描述,还要对非对齐的情况进行描述:
? r , y : r ( x , y ) ∧ ( ? y ′ : r ( x ′ , y ′ ) ? y ≠ y ′ ) ∧ f u n ( r ) is high ? x ≠ x \begin{aligned} \exists r, y & : r(x, y) \wedge\left(\forall y^{\prime} : r\left(x^{\prime}, y^{\prime}\right) \Rightarrow y \neq y^{\prime}\right) \wedge f u n(r) \text { is high } \\ & \Longrightarrow x \neq x \end{aligned} ?r,y?:r(x,y)∧(?y′:r(x′,y′)?y??=y′)∧fun(r) is high ?x??=x?
相应的概率公式(转换为对齐的概率表示)为:
Pr ? 2 ( x ≡ x ′ ) : = ∏ r ( x , y ) ( 1 ? fun ? ( r ) ∏ r ( x ′ , y ′ ) ( 1 ? Pr ? ( y ≡ y ′ ) ) ) \operatorname{Pr}_{2}\left(x \equiv x^{\prime}\right) :=\prod_{r(x, y)}\left(1-\operatorname{fun}(r) \prod_{r\left(x^{\prime}, y^{\prime}\right)}\left(1-\operatorname{Pr}\left(y \equiv y^{\prime}\right)\right)\right) Pr2?(x≡x′):=r(x,y)∏????1?fun(r)r(x′,y′)∏?(1?Pr(y≡y′))???
同样,从直觉上,关系 r r r 的函数性越高,两个 y y y 等价的概率越高,两个 x x x 等价的概率越高。
通过上述两个表示,最终实体对齐的概率 Pr ? ( x ≡ x ′ ) \operatorname{Pr}\left(x \equiv x^{\prime}\right) Pr(x≡x′)表示为:
Pr ? ( x ≡ x ′ ) : = Pr ? 1 ( x ≡ x ′ ) × Pr ? 2 ( x ≡ x ′ ) \operatorname{Pr}\left(x \equiv x^{\prime}\right) :=\operatorname{Pr}_{1}\left(x \equiv x^{\prime}\right) \times \operatorname{Pr}_{2}\left(x \equiv x^{\prime}\right) Pr(x≡x′):=Pr1?(x≡x′)×Pr2?(x≡x′)
等价关系
对于关系,我们有两个目标:
- 找出等价关系
- 找出子关系
我们发现,上述两种情况,我们均可以写为 r ? r ′ r \subseteq r^{\prime} r?r′
因此,我们需要建模的是 Pr ? ( r ? r ′ ) \operatorname{Pr}\left(r \subseteq r^{\prime}\right) Pr(r?r′),直觉上可以直接用下面的公式进行建模:
Pr ? ( r ? r ′ ) : = # x , y : r ( x , y ) ∧ r ′ ( x , y ) # x , y : r ( x , y ) \operatorname{Pr}\left(r \subseteq r^{\prime}\right) :=\frac{\# x, y : r(x, y) \wedge r^{\prime}(x, y)}{\# x, y : r(x, y)} Pr(r?r′):=#x,y:r(x,y)#x,y:r(x,y)∧r′(x,y)?
该公式是一个直观上的公式,对应于本体中的情况,则应该是:
Pr ? ( r ? r ′ ) : = # x , y : r ( x , y ) ∧ r ′ ( x ′ , y ′ ) # x , y : r ( x , y ) \operatorname{Pr}\left(r \subseteq r^{\prime}\right) :=\frac{\# x, y : r(x, y) \wedge r^{\prime}(x^{\prime}, y^{\prime})}{\# x, y : r(x, y)} Pr(r?r′):=#x,y:r(x,y)#x,y:r(x,y)∧r′(x′,y′)?
由于实体对齐的过程是逐步进行的,上述公式需要更加严谨,考虑到已经被标为等价的实体,也因此,其分子应该被替换为:
# x , y : r ( x , y ) ∧ ( ? x ′ , y ′ : x ≡ x ′ ∧ y ≡ y ′ ∧ r ′ ( x ′ , y ′ ) ) \# x, y : r(x, y) \wedge\left(\exists x^{\prime}, y^{\prime} : x \equiv x^{\prime} \wedge y \equiv y^{\prime} \wedge r^{\prime}\left(x^{\prime}, y^{\prime}\right)\right) #x,y:r(x,y)∧(?x′,y′:x≡x′∧y≡y′∧r′(x′,y′))
通过之前得到的对等价实体建模的概率公式,我们可以经过化简后得到其概率公式的分子式:
∑ r ( x , y ) ( 1 ? ∏ r ′ ( x ′ , y ′ ) ( 1 ? ( Pr ? ( x ≡ x ′ ) × Pr ? ( y ≡ y ′ ) ) ) ) \sum_{r(x, y)}\left(1-\prod_{r^{\prime}\left(x^{\prime}, y^{\prime}\right)}\left(1-\left(\operatorname{Pr}\left(x \equiv x^{\prime}\right) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right)\right)\right) r(x,y)∑????1?r′(x′,y′)∏?(1?(Pr(x≡x′)×Pr(y≡y′)))???
直觉上,在所有关系 r r r 对应的三元组 < x ′ , r ′ , y ′ > <x^{\prime},r^{\prime},y^{\prime}> <x′,r′,y′> 和 r r r 对应的三元组 < x ′ , r ′ , y ′ > <x^{\prime},r^{\prime},y^{\prime}> <x′,r′,y′> ,两个 x x x 等价的概率越高,且两个 y y y 等价的概率越高,对应的两个关系 r r r 之间等价或为子关系的概率越高。
对于分母,通过所有 x ′ , y ′ x^{\prime},y^{\prime} x′,y′对的数量进行归一化:
∑ r ( x , y ) ( 1 ? ∏ x ′ , y ′ ( 1 ? ( Pr ? ( x ≡ x ′ ) × Pr ? ( y ≡ y ′ ) ) ) ) \sum_{r(x, y)}\left(1-\prod_{x^{\prime}, y^{\prime}}\left(1-\left(\operatorname{Pr}\left(x \equiv x^{\prime}\right) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right)\right)\right) r(x,y)∑????1?x′,y′∏?(1?(Pr(x≡x′)×Pr(y≡y′)))???
如果?’,?’不是因为?’而存在,而是普遍很多,那么这种子关系成立的感觉就会更”廉价”,表现为分母更大,概率更低。
至此,我们得到了总的公式:
Pr ? ( r ? r ′ ) : = ∑ r ( x , y ) ( 1 ? ∏ r ′ ( x ′ , y ′ ) ( 1 ? ( Pr ? ( x ≡ x ′ ) × Pr ? ( y ≡ y ′ ) ) ) ) ∑ r ( x , y ) ( 1 ? ∏ x ′ , y ′ ( 1 ? P ( x ≡ x ′ ) × Pr ? ( y ≡ y ′ ) ) ) \operatorname{Pr}\left(r \subseteq r^{\prime}\right) :=\frac{\sum_{r(x, y)}\left(1-\prod_{r^{\prime}\left(x^{\prime}, y^{\prime}\right)}\left(1-\left(\operatorname{Pr}\left(x \equiv x^{\prime}\right) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right)\right)\right)}{\sum_{r(x, y)}\left(1-\prod_{x^{\prime}, y^{\prime}}\left(1-P\left(x \equiv x^{\prime}\right) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right)\right)} Pr(r?r′):=∑r(x,y)?(1?∏x′,y′?(1?P(x≡x′)×Pr(y≡y′)))∑r(x,y)?(1?∏r′(x′,y′)?(1?(Pr(x≡x′)×Pr(y≡y′))))?
对于等价关系的处理以及对实体对齐模型求解的补充
如果两个关系已经被视为等价,那么 Pr ? ( r ? r ) : = 1 \operatorname{Pr}(r \subseteq r) :=1 Pr(r?r):=1
在实体对齐计算时候,其计算涉及的关系不一定等价,因此我们要对其乘上权重因子,即考虑在两个关系等价或为子关系条件下后实体一致的概率,即
Pr ? ( x ≡ x ′ ) : 1 ? ∏ r ( x , y ) r ′ ( x ′ , y ′ ) ( 1 ? Pr ? ( r ′ ? r ) × f u n ? 1 ( r ) × Pr ? ( y ≡ y ′ ) ) × ( 1 ? Pr ? ( r ? r ′ ) × f u n ? 1 ( r ′ ) × Pr ? ( y ≡ y ′ ) ) \operatorname{Pr}\left(x \equiv x^{\prime}\right) : 1-\prod_{r(x, y) r^{\prime}(x^{\prime}, y^{\prime})}\left(1-\operatorname{Pr}\left(r^{\prime} \subseteq r\right) \times f u n^{-1}(r) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right) \\ \times\left(1-\operatorname{Pr}\left(r \subseteq r^{\prime}\right) \times f u n^{-1}\left(r^{\prime}\right) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right) Pr(x≡x′):1?r(x,y)r′(x′,y′)∏?(1?Pr(r′?r)×fun?1(r)×Pr(y≡y′))×(1?Pr(r?r′)×fun?1(r′)×Pr(y≡y′))
这是真正被考虑的因素
如果考虑实体不对齐情况下的概率,综合建模后,其公式表示为:
( 1 ? ∏ r ( x , y ) , r ′ ( x ′ , y ′ ) ( 1 ? P ( r ′ ? r ) × f u n ? 1 ( r ) × Pr ? ( y ≡ y ′ ) ) × ( 1 ? Pr ? ( r ? r ′ ) × f u n ? 1 ( r ′ ) × Pr ? ( y ≡ y ′ ) ) ) × ∏ r ( x , y ) , r ′ ( 1 ? f u n ( r ) × Pr ? ( r ′ ? r ) × ∏ r ′ ( x ′ , y ′ ) ( 1 ? Pr ? ( x ≡ x ′ ) ) ) × ( 1 ? f u n ( r ′ ) × Pr ? ( r ? r ′ ) × ∏ r ′ ( x ′ , y ′ ) ( 1 ? Pr ? ( x ≡ x ′ ) ) ) \left(1-\prod_{r(x, y),r^{\prime}(x^{\prime}, y^{\prime})}\left(1-P\left(r^{\prime} \subseteq r\right) \times f u n^{-1}(r) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right) \times\left(1-\operatorname{Pr}\left(r \subseteq r^{\prime}\right) \times f u n^{-1}\left(r^{\prime}\right) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right)\right)\\ \times \prod_{r(x, y),r^{\prime}}\left(1-f u n(r) \times \operatorname{Pr}\left(r^{\prime} \subseteq r\right) \times \prod_{r^{\prime}\left(x^{\prime}, y^{\prime}\right)}\left(1-\operatorname{Pr}\left(x \equiv x^{\prime}\right)\right)\right)\\ \times\left(1-f u n\left(r^{\prime}\right) \times \operatorname{Pr}\left(r \subseteq r^{\prime}\right) \times \prod_{r^{\prime}\left(x^{\prime}, y^{\prime}\right)}\left(1-\operatorname{Pr}\left(x \equiv x^{\prime}\right)\right)\right) ???1?r(x,y),r′(x′,y′)∏?(1?P(r′?r)×fun?1(r)×Pr(y≡y′))×(1?Pr(r?r′)×fun?1(r′)×Pr(y≡y′))???×r(x,y),r′∏????1?fun(r)×Pr(r′?r)×r′(x′,y′)∏?(1?Pr(x≡x′))???×???1?fun(r′)×Pr(r?r′)×r′(x′,y′)∏?(1?Pr(x≡x′))???
另外怀疑该式的最后两个因子中 Pr ? ( x ≡ x ′ ) \operatorname{Pr}\left(x \equiv x^{\prime}\right) Pr(x≡x′)应该为 Pr ? ( y ≡ y ′ ) \operatorname{Pr}\left(y \equiv y^{\prime}\right) Pr(y≡y′),原论文中应该错了。
这个公式在正式实验中没有被考虑,因为实体不对齐下的概率仅作为辅助元素,而非关键元素。
特例
我们的计算的过程是,对第一个本体中的每一个实例,计算其和第二个本体中的每一个实例按上述方式的概率得分,得到最大得分。因此上述概率式存在一个情况,即不存在 x ′ , y ′ x^{\prime},y^{\prime} x′,y′使成立 r ′ ( x ′ , y ′ ) r^{\prime}(x^{\prime},y^{\prime}) r′(x′,y′),这种情况下我们令 ∏ r ′ ( x ′ , y ′ ) ( 1 ? Pr ? ( y ≡ y ′ ) ) : = 1 \prod_{r^{\prime}\left(x^{\prime}, y^{\prime}\right)}\left(1-\operatorname{Pr}\left(y \equiv y^{\prime}\right)\right):=1 r′(x′,y′)∏?(1?Pr(y≡y′)):=1
直觉上,如果一个实体包含了一个关系但另一个实体没有包含这种关系,我们就降低 Pr ? ( x ≡ x ′ ) \operatorname{Pr}\left(x \equiv x^{\prime}\right) Pr(x≡x′)的值,因为这两个实例看起来并不相等。
对称性
直观来看,上述公式表示是不对称的,因为我们只考虑了 fun ? ( r ) × Pr ? ( r ′ ? r ) \operatorname{fun}(r) \times \operatorname{Pr}\left(r^{\prime} \subseteq r\right) fun(r)×Pr(r′?r) 和 f u n ( r ′ ) × Pr ? ( r ? r ′ ) f u n\left(r^{\prime}\right) \times \operatorname{Pr}\left(r \subseteq r^{\prime}\right) fun(r′)×Pr(r?r′)
但并不是这样,因为考虑 Pr ? ( r ? r ′ ) \operatorname{Pr}\left(r \subseteq r^{\prime}\right) Pr(r?r′),当该值很大时候,其实可以得到 f u n ? 1 ( r ′ ) < f u n ? 1 ( r ) f u n^{-1}(r^{\prime})<f u n^{-1}\left(r\right) fun?1(r′)<fun?1(r)、 f u n ( r ′ ) < f u n ( r ) f u n^{}(r^{\prime})<f u n^{}\left(r\right) fun(r′)<fun(r)
且对于每一个?’的每个实体某些时候也表现为?的实体
原文这样解释,我的理解是,这种推导可以让剩下的情况被覆盖掉
等价类
一个类会对应一个实体集,但等价类的发现并不很好发现,因为存在类和子类的关系,在一个本体中,一个这样的类可能因为子类的关系对应更小的实体集(细粒度,fine-grained),因此,我们不去判断等价类,而是直接判断 c c c是否是 c ′ c^{\prime} c′的子类,即 Pr ? ( c ? c ′ ) \operatorname{Pr}\left(c \subseteq c^{\prime}\right) Pr(c?c′),公式为:
Pr ? ( c ? c ′ ) = # c ∩ c ′ # c \operatorname{Pr}\left(c \subseteq c^{\prime}\right)=\frac{\# c \cap c^{\prime}}{\# c} Pr(c?c′)=#c#c∩c′?
上式的分子我们用它的期望求解:
E ( # c ∩ c ′ ) = ∑ x : t y p e ( x , c ) ( 1 ? ∏ y : t y p e ( y , c ′ ) ( 1 ? P ( x ≡ y ) ) ) \mathbb{E}\left(\# c \cap c^{\prime}\right)=\sum_{x : t y p e(x, c)}\left(1-\prod_{y : t y p e(y, c')}(1-P(x \equiv y))\right) E(#c∩c′)=x:type(x,c)∑????1?y:type(y,c′)∏?(1?P(x≡y))???
最后的概率公式为:
Pr ? ( c ? c ′ ) = ∑ x : t y p e ( x , c ) ( 1 ? ∏ y : t y p e ( y , c ′ ) ( 1 ? P ( x ≡ y ) ) ) # x : type ? ( x , c ) \operatorname{Pr}\left(c \subseteq c^{\prime}\right)=\frac{\sum_{x : t y p e(x, c)}\left(1-\prod_{y : t y p e(y, c')}(1-P(x \equiv y))\right)}{\# x : \operatorname{type}(x, c)} Pr(c?c′)=#x:type(x,c)∑x:type(x,c)?(1?∏y:type(y,c′)?(1?P(x≡y)))?
对子类计算补充子关系或等价实体的考虑
论文中提到,按照子关系中概率补充等价实体的考虑,子类计算也可以作为等价实体计算的补充,但经过测试,该效果并不好,原因可能是因为不同实体中的粒度不同,重叠程度不同等。
因此,对子类的计算只在计算完等价实体后进行。
目前理解这是一个互相计算,互为补充的过程的循环迭代过程
实现
迭代过程
根据之前的声明,计算遵循以下规则:
- 计算只在不同本体中进行,同一本体不存在等价实体
- 等价关系的计算是迭代的,根据半函数的定义,在两个实体等价后,半函数的值会增加,会导致等价关系的值改变
因此,计算过程由等价实体和等价关系两个计算之间迭代进行,直到收敛,并在最后计算等价类。
为了促进计算过程,一开始需要对 Pr ? ( r ? r ′ ) \operatorname{Pr}\left(r \subseteq r^{\prime}\right) Pr(r?r′)进行初值的设置,实验中发现取0.1是个不错的选择。
注意这只在第一轮计算的时候采用,第二轮无论值大小,都只采用计算的值,不进行更改
算法收敛性
论文中提到这种迭代过程并没有严格的证明其能收敛,但实验中总是能够收敛(当等价实体不在变化后判断其为收敛),另外,在迭代过程中加入阻尼因子也能够保证上述迭代过程的收敛
在后面的实验中,大约经过4次迭代就可以收敛。
复杂度优化
原本的时间复杂度是 O ( n 2 m ) O(n^2m) O(n2m),其中 n n n 是实体数,m是实例中的平均语句(statement,三元组)数(约为20左右),这将会导致以周为单位的计算,基于此,对该算法进行了如下的优化:
对子关系概率公式计算的优化
X = {
x}
Y = {
y}
R = {
r}
for x in X: //每个实体for r in R: //每个关系if r(x,-) existed: //关系存在//找到关系下存在的yfind Y` = {
y| r(x,y) existed } by r,x // 根据y找到等价概率不为0的y`find Y`` = {
y`| Pr(y,y`) > 0} by Y` //根据y`找到存在的关系r`和x`find <R`,X`> = {
r`,x`| r`(x`,y`) existed} by Y`` // 至此,对于选择出了所有的 r,r',更新Pr(x==x`)update Pr(x==x`) by r,r`,x,y,x`,y`
上述算法将复杂度降低到 O ( n m 2 e ) O(nm^2e) O(nm2e),其中 e e e 是平均每个实例的等价实例数
设定最下概率阈值
在之前的伪代码中,筛选等价概率大于0时候的 y ′ y' y′,为了剪枝减少计算量,设定阈值,计算等价概率大于 θ \theta θ的 y ′ y' y′
论文中提到,这大大的缩减了计算量。(可能因为对于大数据集,大部分实体之间相似度都很低,仅有少量会有较高的相似度)
top-k选择
对于每次计算,仅选取最大概率的等式进行下一次计算,这个操作将计算量减少了一个数量级。
论文在之后提到,可以将选择最大更改为选择top-k,这样做可以帮助提高准确率。
这里不是很清楚具体的流程。
todo
代码
- Java实现,使用了几个工具包
- 由于过程是IO约束的,因此使用了一个读速率高的固态硬盘,将计算时长从天级别降到小时级别
- 并行算法设计可以有,但没必要
字符串等价的计算
- 维度相同的数值相等的概率可以是他们比例差的函数
- 字符串相等的概率可以与编辑距离成反比
- 其余标识符(社会安全号码等),概率可以是对常见拼写错误具有鲁棒性的函数,这种函数可以从已有的计算标识符拼写错误的函数中得到提示。
- 通常,不同文字相等的概率为0
- 考虑单位换算
上述这些考量可以按一定程度附加到之前的概率计算中,从而为特定的本地进行特定的转换
论文实现
论文实现非常简单,先去掉所有单位和维度信息,随后如果是标识符,那么相等的概率为1,否则为0。
即使是这样,该算法依然表现出了高识别概率,也就是说,如果实现了上面这些特定函数,识别性能可能会进一步的提升。
参数声明
只有两个方面:
- 初始第一轮计算的概率值 θ \theta θ,实验证明这不怎么影响结果。
- 相似字符串计算函数,实验证明这也不怎么影响结果。
通过这两点,论文得出了该算法不需要通过数据集调整参数,对任何数据集都将有良好效果的结论,这比传统的启发式算法强了很多很多很多。
实验
实验结果非常优良
θ \theta θ的调整
结果证明在第一轮中, θ \theta θ只对实体等价的概率有影响,不会影响到子关系概率的计算,因为最后所有的概率相等,与子关系概率的计算独立。todo
可供选择的设计方式
- 在每一轮不仅考虑最高概率得分的,同时还考虑其他得分的,这会导致复杂度增高,但可能会具备从局部最优调整到全局最优的可能。
- 实验证明,之前对等价关系的负样本的考虑对实验结果是有帮助的,但正样本的影响的关键性的
优点与不足
优点
- 没有使用任何参数
- 一次性对齐所有要素
- 算法性质优良,基本适合任意两个本体之间的计算,并能取得较好结果
不足
- 目前不能处理结构相异(structural heterogeneity)的本体
- 同理,如果两个本体之间粒度差异太大,也不能得到很好的处理
- 同理,如果将相同的文本一个处理为实体,另一个处理为字符串(?不是很懂),也不能得到很好的处理
其他
对全局函数性函数定义的其他选择
握手
用三元组的数量除以三元组对的数量
f u n ( r ) = # x , y : r ( x , y ) # x , y , y ′ : r ( x , y ) ∧ r ( x , y ′ ) f u n(r)=\frac{\# x, y : r(x, y)}{\# x, y, y^{\prime} : r(x, y) \wedge r\left(x, y^{\prime}\right)} fun(r)=#x,y,y′:r(x,y)∧r(x,y′)#x,y:r(x,y)?
方法很差,当一对多的多数量很大时,分母会成阶乘级增长
对换变量
用符合第一个变量的关系的三元组除以符合第二个变量的关系的三元组
fun ? ( r ) = # x # y ? y : r ( x , y ) ? x : r ( x , y ) \operatorname{fun}(r)=\frac{\# x}{\# y} \frac{\exists y : r(x, y)}{\exists x : r(x, y)} fun(r)=#y#x??x:r(x,y)?y:r(x,y)?
并不好(treacherous),如果所有的人都喜欢所有的菜,喜欢菜的关系函数性应该很低,但用该式计算出来会为1
局部函数求算术平均
f u n ( r ) = avg ? f u n ( r , x ) x = avg ? x ( 1 # y : r ( x , y ) ) = 1 # x ? y : r ( x , y ) ∑ x 1 # y : r ( x , y ) \begin{aligned} f u n(r) &=\underset{x}{\operatorname{avg} f u n(r, x)}=\underset{x}{\operatorname{avg}}\left(\frac{1}{\# y : r(x, y)}\right) \\ &=\frac{1}{\# x} \exists y : r(x, y) \sum_{x} \frac{1}{\# y : r(x, y)} \end{aligned} fun(r)?=xavgfun(r,x)?=xavg?(#y:r(x,y)1?)=#x1??y:r(x,y)x∑?#y:r(x,y)1??
局部平均是比率,因此对局部函数性求平均不是很合适
局部函数求调和平均
f u n ( r ) = HM ? f u n ( r , x ) = HM ? x ( 1 # y : r ( x , y ) ) = # x ∑ x # y : r ( x , y ) = # x ? y : r ( x , y ) # x , y : r ( x , y ) \begin{aligned} f u n(r) &=\operatorname{HM} f u n(r, x)=\operatorname{HM}_{x}\left(\frac{1}{\# y : r(x, y)}\right) \\ &=\frac{\# x}{\sum_{x} \# y : r(x, y)}=\frac{\# x \quad \exists y : r(x, y)}{\# x, y : r(x, y)} \end{aligned} fun(r)?=HMfun(r,x)=HMx?(#y:r(x,y)1?)=∑x?#y:r(x,y)#x?=#x,y:r(x,y)#x?y:r(x,y)??
全-局部函数性
对所有的三元组算一个局部平均,这个求解结果和调和平均相同。
f u n ( r ) = # x ? y : r ( x , y ) # x , y : r ( x , y ) f u n(r)=\frac{\# x \quad \exists y : r(x, y)}{\# x, y : r(x, y)} fun(r)=#x,y:r(x,y)#x?y:r(x,y)?
公式推导
基础
Pr ? ( A ∧ B ) = Pr ? ( A ) × Pr ? ( B ) Pr ? ( A ∨ B ) = 1 ? ( 1 ? Pr ? ( A ) ) ( 1 ? Pr ? ( B ) ) Pr ? ( ? x : φ ( x ) ) = ∏ x Pr ? ( φ ( x ) ) Pr ? ( ? x : φ ( x ) ) = 1 ? ∏ x ( 1 ? Pr ? ( φ ( x ) ) ) E ( # x : φ ( x ) ) = ∑ x Pr ? ( φ ( x ) ) \begin{aligned} \operatorname{Pr}(A \wedge B) &=\operatorname{Pr}(A) \times \operatorname{Pr}(B) \\ \operatorname{Pr}(A \vee B) &=1-(1-\operatorname{Pr}(A))(1-\operatorname{Pr}(B)) \\ \operatorname{Pr}(\forall x : \varphi(x)) &=\prod_{x} \operatorname{Pr}(\varphi(x)) \\ \operatorname{Pr}(\exists x : \varphi(x)) &=1-\prod_{x}(1-\operatorname{Pr}(\varphi(x))) \\ \mathbb{E}(\# x : \varphi(x)) &=\sum_{x} \operatorname{Pr}(\varphi(x)) \end{aligned} Pr(A∧B)Pr(A∨B)Pr(?x:φ(x))Pr(?x:φ(x))E(#x:φ(x))?=Pr(A)×Pr(B)=1?(1?Pr(A))(1?Pr(B))=x∏?Pr(φ(x))=1?x∏?(1?Pr(φ(x)))=x∑?Pr(φ(x))?
假设
- φ ? ψ \varphi \Rightarrow \psi φ?ψ可以得出 Pr ? ( ψ ) : = Pr ? ( φ ) \operatorname{Pr}(\psi) :=\operatorname{Pr}(\varphi) Pr(ψ):=Pr(φ)
- 关系、实体、类之间假设其独立
- f u n fun fun函数可以将其看做对关系 r r r 是函数的概率函数
- 字符串等价函数可以将其看做是对两个字符串等价的概率函数
- r ( x , y ) r(x,y) r(x,y)形式的是一个清晰的非概率的事实,不将其引入概率公式中。
推导 Pr ? 1 ( x ≡ x ′ ) \operatorname{Pr}_{1}\left(x \equiv x^{\prime}\right) Pr1?(x≡x′)
该公式
? r , y , y ′ : r ( x , y ) ∧ r ( x ′ , y ′ ) ∧ y ≡ y ′ ∧ f u n ? 1 ( r ) is high ? x ≡ x ′ \begin{aligned} \exists r, y, y^{\prime} & : r(x, y) \wedge r\left(x^{\prime}, y^{\prime}\right) \wedge y \equiv y^{\prime} \wedge f u n^{-1}(r) \text { is high } \\ & \Longrightarrow x \equiv x^{\prime} \end{aligned} ?r,y,y′?:r(x,y)∧r(x′,y′)∧y≡y′∧fun?1(r) is high ?x≡x′?
基于假设5,可以转换为:
? r , y , y ′ , r ( x , y ) , r ( x ′ , y ′ ) : y ≡ y ′ ∧ f u n ? 1 ( r ) is high ? x ≡ x ′ \begin{aligned} \exists r, y, y^{\prime} ,r(x, y) , r\left(x^{\prime}, y^{\prime}\right)& : y \equiv y^{\prime} \wedge f u n^{-1}(r) \text { is high } \\ & \Longrightarrow x \equiv x^{\prime} \end{aligned} ?r,y,y′,r(x,y),r(x′,y′)?:y≡y′∧fun?1(r) is high ?x≡x′?
因此套用定理4即可得出:
Pr ? 1 ( x ≡ x ′ ) : = 1 ? ∏ r ( x , y ) r ( x ′ , y ′ ) ( 1 ? f u n ? 1 ( r ) × Pr ? ( y ≡ y ′ ) ) \operatorname{Pr}_{1}\left(x \equiv x^{\prime}\right) :=1-\prod_{r(x, y) \atop r\left(x^{\prime}, y^{\prime}\right)}\left(1-f u n^{-1}(r) \times \operatorname{Pr}\left(y \equiv y^{\prime}\right)\right) Pr1?(x≡x′):=1?r(x′,y′)r(x,y)?∏?(1?fun?1(r)×Pr(y≡y′))
其余公式以此类推
例子
f u n ( r ) fun(r) fun(r)
以邮箱为例,一个人可以有多个邮箱,但一个邮箱基本只能被一个人持有,设关系?为??????,有数据为
A 1 , r , B 1 A_1,r,B_1 A1?,r,B1? | A 1 , r , B 2 A_1,r,B_2 A1?,r,B2? | A 2 , r , B 3 A_2,r,B_3 A2?,r,B3? | A 3 , r , B 4 A_3,r,B_4 A3?,r,B4? |
---|
可得 f u n ( r ) = 3 / 4 fun(r)=3/4 fun(r)=3/4, f u n ? 1 ( r ) = 4 / 4 = 1 fun^{-1}(r)=4/4=1 fun?1(r)=4/4=1, f u n ( r , A 1 ) = 1 / 2 fun(r,A_1)=1/2 fun(r,A1?)=1/2
f u n ( r ) < f u n ( r ′ ) fun(r)<fun(r') fun(r)<fun(r′)
当 P ( r ′ ? r ) P\left(r^{\prime} \subseteq r\right) P(r′?r)值很大时,可得 r ′ ( x , y ) ? r ( x , y ) r^{\prime}(x, y) \Rightarrow r(x, y) r′(x,y)?r(x,y),可得 f u n ( r ) < f u n ( r ′ ) , f u n ? 1 ( r ) < f u n ? 1 ( r ′ ) f u n(r)<f u n\left(r^{\prime}\right), \quad f u n^{-1}(r)<f u n^{-1}\left(r^{\prime}\right) fun(r)<fun(r′),fun?1(r)<fun?1(r′)
同时考虑父子关系 r 1 r_1 r1?和亲人关系 r 2 r_2 r2?,此时 r 1 ? r 2 r_{1} \Rightarrow r_{2} r1??r2?,易得所有满足父子关系的 x , y x,y x,y均满足亲人关系,即
r ′ ( x , y ) ? r ( x , y ) r^{\prime}(x, y) \Rightarrow r(x, y) r′(x,y)?r(x,y)
考虑以下数据:
A 1 , r 1 , B 1 A_1,r_1,B_1 A1?,r1?,B1? | A 2 , r 1 , B 1 A_2,r_1,B_1 A2?,r1?,B1? | B 1 , r 1 , C 1 B1,r_1,C_1 B1,r1?,C1? | A 3 , r 1 , B 2 A_3,r_1,B_2 A3?,r1?,B2? |
---|
可以得到相应的 r 2 r_2 r2?下的数据为:
A 1 , r 2 , B 1 A_1,r_2,B_1 A1?,r2?,B1? | A 1 , r 2 , C 1 A_1,r_2,C_1 A1?,r2?,C1? | A 2 , r 2 , B 1 A2,r_2,B_1 A2,r2?,B1? | A 2 , r 2 , C 1 A_2,r_2,C_1 A2?,r2?,C1? | B 1 , r 2 , C 1 B_1,r_2,C_1 B1?,r2?,C1? | A 3 , r 2 , B 2 A_3,r_2,B_2 A3?,r2?,B2? |
---|
计算可得结论