论文地址:https://arxiv.org/pdf/1912.03417.pdf
相关博客:
【自然语言处理】【实体匹配】CollaborER:使用多特征协作的自监督实体匹配框架
【自然语言处理】【实体匹配】AutoBlock:一个用于实体匹配的自动化Blocking框架
【自然语言处理】【实体匹配】用于实体匹配中blocking环节的深度学习:一个设计空间的探索
【自然语言处理】【实体匹配】PromptEM:用于低资源广义实体匹配的Prompt-tuning
实体匹配 ( Entity Matching ) (\text{Entity Matching}) (Entity Matching)的目标是从单个或者多个数据源中确定出指向相同实体的数据记录 ( data record ) (\text{data record}) (data record)。每个大型匹配数据集都需要blocking,其是一个减少匹配record对数量的步骤。然而,大多数blocking方法是基于key且不需要学习的,其成功是建立在干净数据上的人工努力。
本文中提出了 AutoBlock \text{AutoBlock} AutoBlock,一个基于表示学习和最近邻搜索的blocking框架。贡献包括:(a) Automation \text{Automation} Automation: AutoBlock \text{AutoBlock} AutoBlock从大量人工清洗数据和blocking key调整中解放了用户;(2) Scalability \text{Scalability} Scalability: AutoBlock \text{AutoBlock} AutoBlock具有次均分时间复杂度,并能够轻易应用在上百万records;(3) Effectiveness \text{Effectiveness} Effectiveness: AutoBlock \text{AutoBlock} AutoBlock在多个大规模、现实数据集上优于各类baselines,特别是在dirty
和unstructured
数据集。
假设数据集由 n n n个tuple组成,并且每个tuple有 m m m个属性。定义第 i i i个tuple为 x i ≜ [ a i 1 , a i 2 , … , a i m ] \textbf{x}_i\triangleq[\textbf{a}_{i1},\textbf{a}_{i2},\dots,\textbf{a}_{im}] xi≜[ai1,ai2,…,aim],其中 a i j \textbf{a}_{ij} aij是 x i \textbf{x}_i xi的第 j j j个属性。使用 [ n ] [n] [n]作为集合 { 1 , 2 , … , n } \{1,2,\dots,n\} {1,2,…,n}的简写。以这种方式,每个属性值 a i j \textbf{a}_{ij} aij可以被表示为token序列 [ w i j k ] k = 1 l i j [w_{ijk}]_{k=1}^{l_{ij}} [wijk]k=1lij,其中 l i j l_{ij} lij是 a i j \textbf{a}_{ij} aij的序列长度,并且 w i j k w_{ijk} wijk是第 k k k个token。假设所有的token是从统一的词表 V \mathcal{V} V采样得到。这里强调用于非标准文本的统一词表 V \mathcal{V} V的两个重要属性:(a) 开放: V \mathcal{V} V能够包含词表外的token并有无线的基数;(b) 缺失值普遍,许多的 l i j l_{ij} lij是0。
给定一个具有 n n n个tuple的数据源 X ≜ [ x 1 , … , x n ] \textbf{X}\triangleq[\textbf{x}_1,\dots,\textbf{x}_n] X≜[x1,…,xn],blocking输出一个候选对子集 C ⊆ [ n ] × [ n ] C\subseteq[n]\times[n] C⊆[n]×[n],对于任意的 ( i , i ′ ) ∈ C (i,i')\in C (i,i′)∈C,tuple x i x_i xi和 x i ′ x_{i'} xi′很可能指向相同的实体。
Remark:高召回对blocking最重要,然而控制 C C C的尺寸来达到预筛选匹配的目标。
除了tuple集合 X \textbf{X} X,还假设能够访问正样本集合 L ⊆ [ n ] × [ n ] \mathcal{L}\subseteq[n]\times[n] L⊆[n]×[n],对于所有的 ( i , i ′ ) ∈ L (i,i')\in\mathcal{L} (i,i′)∈L, ( x i , x i ′ ) (\textbf{x}_i,\textbf{x}_i') (xi,xi′)都是匹配的。可以使用确定的强key来获得正标签,或者通过人工标注。这个 L \mathcal{L} L也可以用于下游的匹配算法,其无论如何都需要收集正样本,所以blocking阶段对 L \mathcal{L} L的需求并不会引入更多的人工努力。
假设存在一个完美的相似度度量,并且不考虑效率,那么就可以使用最近邻搜索来实现blocking。将这个解决方案称为最近邻居blocking,并如下算法描述:
算法1:最近邻blocking
输入:tuple集合 X \textbf{X} X,相似度度量 σ ( ⋅ , ⋅ ) \sigma(\cdot,\cdot) σ(⋅,⋅),阈值 θ \theta θ
输出:候选对 C C C
C = ∅ C=\empty C=∅
for i = 1 , … , n i=1,\dots,n i=1,…,n do
C = C ∪ { ( i , i ′ ) ∣ σ ( x i , x i ′ ) > θ , ∀ i ′ < i } C=C\cup\{(i,i')|\sigma(\textbf{x}_i,\textbf{x}_{i'})>\theta,\forall i'C=C∪{(i,i′)∣σ(xi,xi′)>θ,∀i′<i}
事实上,现有的各种blocking方法都可以看作是最近邻blocking的特例,只是具有不同的相似度度量。例如,在传统基于key的blocking方法是二元相似度度量。这个观察也揭示了为什么这些方法容易受到非规范化数据影响:这些方法依赖精确的字符串匹配并且粒度太粗。
另一个例子是 MinHash blocking \text{MinHash blocking} MinHash blocking,基于集合相似度。 MinHash blocking \text{MinHash blocking} MinHash blocking先把每个tuple转换为代表性片段的集合,然后基于集合表示来度量tuple的相似度。 Jaccard \text{Jaccard} Jaccard相似度和 LSH \text{LSH} LSH被用于提供最近邻的高效近似。然而, Jaccard \text{Jaccard} Jaccard相似度仅能捕获tuple间的词级相似度,对于需要语法或者语义相似度的困难领域可能是次优解。
本文的框架 AutoBlock \text{AutoBlock} AutoBlock遵循最近邻blocking方案,并利用正标签集合来学习相似度度量。如上图所示, AutoBlock \text{AutoBlock} AutoBlock的整体框架由5个步骤组成。步骤(1)-(4)共同形成了设计问题 Q1 \textbf{Q1} Q1的解决方案,步骤(5)则是 Q2 \textbf{Q2} Q2的解决方案。下面简要描述5个步骤:
Token嵌入
词嵌入模型将每个token转换为token嵌入向量。
Attribute嵌入
对于tuple的每个属性值,一个基于注意力机制的神经网络编码器将token嵌入向量序列转换为一个属性嵌入像。
Tuple signature
多个signature函数将每个tuple的属性嵌入向量合并,产生多个tuple的signatures。
模型训练
该模型使用标注数据集,训练的目标是最大化匹配的tuple的cosine相似度。
快速最近邻搜索
训练好的模型被应用于计算所有tuple的signature,使用cosine相似度来为每个tuple检索最近邻来生成blocking的候选对。
AutoBlock \text{AutoBlock} AutoBlock的第一步是使用词嵌入模型将每个token转换为低维嵌入向量。这里使用 fastText \text{fastText} fastText来获得tokens的嵌入向量。不同于其他的词嵌入模型为每个单词学习一个有区分性的嵌入, fastText \text{fastText} fastText为每个字符学习一个嵌入,并通过将单词中所有字符的嵌入向量求和计算词的向量表示。 fastText \text{fastText} fastText能够天然的处理少见的token,而其他的词嵌入模型通常将这些tokens看作是out-of-vocabulary
并且使用特殊的token(UNK)来替换它们。实验显示, fastText \text{fastText} fastText对于常见的拼写错误更具鲁棒性,并且成功为同态相似的token生成相似的嵌入向量。
AutoBlock \text{AutoBlock} AutoBlock的第二步是将每个属性的token嵌入向量序列作为输入,并输出一个编码属性信息的嵌入向量。该步骤与自然语言处理中的短语/矩阵嵌入相关,但主要的挑战是不同的属性在长度、单词选择和使用,并且自然语言的顺序性质在表格数据中缺失。
这里提出了基于注意力的属性编码器,用于计算属性嵌入向量。注意力编码其后的主要想法是平均
,即一个属性的嵌入可以被表示为 token
嵌入向量的加权平均。相比于先前每个token的固定权重,注意力编码器能够基于语义、位置和周围的tokens来学习权重。当属性很长并展现了清晰的结构模型,该能力就很重要。
正式来说,令 v 1 , v 2 , … , v l ∈ R d \textbf{v}_1,\textbf{v}_2,\dots,\textbf{v}_l\in\mathbb{R}^d v1,v2,…,vl∈Rd是token嵌入序列,其中 l l l是序列长度并且 d d d是token嵌入的维度。一个注意力编码器计算输出token的权重:
h 1 , h 2 , … , h l = SeqEnc ( v 1 , … , v l ) (1) \textbf{h}_1,\textbf{h}_2,\dots,\textbf{h}_l=\text{SeqEnc}(\textbf{v}_1,\dots,\textbf{v}_l) \tag{1} h1,h2,…,hl=SeqEnc(v1,…,vl)(1)
α 2 , α 2 , … , α l = Softmax ( w T h 1 , … , w T h l ) (2) \alpha_2,\alpha_2,\dots,\alpha_l=\text{Softmax}(\textbf{w}^T\textbf{h}_1,\dots,\textbf{w}^T\textbf{h}_l) \tag{2} α2,α2,…,αl=Softmax(wTh1,…,wThl)(2)
β k = ρ α k + ( 1 − ρ ) 1 l , ∀ k ∈ [ l ] (3) \beta_k=\rho\alpha_k+(1-\rho)\frac{1}{l},\forall k\in[l] \tag{3} βk=ραk+(1−ρ)l1,∀k∈[l](3)
这里, SeqEnc ( ⋅ ) \text{SeqEnc}(\cdot) SeqEnc(⋅)可以是任意的网络结构,只要其能够读入序列输入 ,并为每个位置产生输出。可能的选择包含标准的递归神经网络、双向 LSTM \text{LSTM} LSTM和 transformers \text{transformers} transformers。在等式(2)中,hidden state被转换为注意力权重,并在等式(3)中被进一步平滑, ρ ∈ [ 0 , 1 ] \rho\in[0,1] ρ∈[0,1]是控制平滑程度的超参数。最终,属性嵌入被定义为
g ( v 1 , … , v l ) ≜ ∑ k = 1 l β k v k (4) g(\textbf{v}_1,\dots,\textbf{v}_l)\triangleq\sum_{k=1}^l\beta_k\textbf{v}_k \tag{4} g(v1,…,vl)≜k=1∑lβkvk(4)
AutoBlock \text{AutoBlock} AutoBlock的第三步需要合并属性嵌入向量并产生tuple级别的表示,其中匹配tuple的向量表示具有大的cosine相似度。在深入挖掘使用什么模型,先考虑一个更加基础的问题:若将一个tuple中的信息压缩至单个向量表示用于blocking,会发生什么?
考虑具有属性Title
、Album
和Composer
的相同歌曲的三个tuples
x 1 = ( Me and Mrs.Jones , ∅ , ∅ ) x 2 = ( Me and Mrs.Jones,Call Me Irresponsible,Michael Buble ) x 3 = ( Me & Mrs. Call Me Irresponsible,Michael Buble ) \textbf{x}_1=(\text{Me and Mrs.Jones},\empty,\empty) \\ \textbf{x}_2=(\text{Me and Mrs.Jones,Call Me Irresponsible,Michael Buble}) \\ \textbf{x}_3=(\text{Me \& Mrs. Call Me Irresponsible,Michael Buble}) x1=(Me and Mrs.Jones,∅,∅)x2=(Me and Mrs.Jones,Call Me Irresponsible,Michael Buble)x3=(Me & Mrs. Call Me Irresponsible,Michael Buble)
其中 ∅ \empty ∅表示缺失值。嵌入向量需要以Title
为主,用于确保 e m b ( x 1 ) ≈ e m b ( x 2 ) emb(\textbf{x}_1)\approx emb(\textbf{x}_2) emb(x1)≈emb(x2)。然而,这意味着 e m b ( x 1 ) emb(\textbf{x}_1) emb(x1)和 e m b ( x 2 ) emb(\textbf{x}_2) emb(x2)的相似度不是很高。
这个例子表明当tuple包含各种属性并可能具有很多缺失值,仅使用一个嵌入向量来表示tuple将会导致某些正样本对具有低相似度。因此,为了同时检索 ( x 1 , x 2 ) (\textbf{x}_1,\textbf{x}_2) (x1,x2)和 ( x 2 , x 3 ) (\textbf{x}_2,\textbf{x}_3) (x2,x3)必须使用较低的阈值 θ \theta θ。然而,一个小 θ \theta θ将会导致错误的正样本对。
为了解决这个问题,本文提出multiple signatures
。每个signature
仅捕获元组的部分且不同的方面,只要两个元组具有相似的signatures
就认为它们相似。
继续样例1。假设有两个signature
函数 s i g 1 ( ⋅ ) sig_1(\cdot) sig1(⋅)和 s i g 2 ( ⋅ ) sig_2(\cdot) sig2(⋅)应用在Title
、Album
和Composer
。然后会有 s i g 1 ( x 1 ) = s i g 1 ( x 2 ) , s i g 2 ( x 2 ) = s i g 2 ( x 3 ) sig_1(\textbf{x}_1)=sig_1(\textbf{x}_2),sig_2(\textbf{x}_2)=sig_2(\textbf{x}_3) sig1(x1)=sig1(x2),sig2(x2)=sig2(x3)。这样,忽略 s i g 1 ( x 1 ) ≠ s i g 1 ( x 3 ) sig_1(\textbf{x}_1)\neq sig_1(\textbf{x}_3) sig1(x1)=sig1(x3)和 s i g 2 ( x 1 ) ≠ s i g 2 ( x 3 ) sig_2(\textbf{x}_1)\neq sig_2(\textbf{x}_3) sig2(x1)=sig2(x3),所以仍然可以使用大的阈值 α \alpha α来检索 ( x 1 , x 2 ) (\textbf{x}_1,\textbf{x}_2) (x1,x2)和 ( x 2 , x 3 ) (\textbf{x}_2,\textbf{x}_3) (x2,x3)。
正式来说,令 g 1 , … , g m ∈ { ∅ } ∪ R d \textbf{g}_1,\dots,\textbf{g}_m\in\{\empty\}\cup\mathbb{R}^d g1,…,gm∈{∅}∪Rd表示一个tuple的 m m m个属性的嵌入向量。定义第 s s s个signature
函数来作为非缺失属性的加权平均
f ( s ) ( g 1 , … , g m ) ≜ ∑ j = 1 m I ( g j ≠ ∅ ) w s j g j (5) f^{(s)}(\textbf{g}_1,\dots,\textbf{g}_m)\triangleq\sum_{j=1}^m\mathbb{I}(\textbf{g}_j\neq\empty)w_{sj}\textbf{g}_j \tag{5} f(s)(g1,…,gm)≜j=1∑mI(gj=∅)wsjgj(5)
其中, w s ≜ [ w s j ] j = 1 m ≥ 0 \textbf{w}_s\triangleq[w_{sj}]_{j=1}^m\ge 0 ws≜[wsj]j=1m≥0是估计的非负权重, I ( ⋅ ) \mathbb{I}(\cdot) I(⋅)是指示函数,当对于所有的 j ∈ [ m ] j\in[m] j∈[m]都有 I ( g j ≠ ∅ ) w j \mathbb{I}(\textbf{g}_j\neq\empty)w_j I(gj=∅)wj为0,则 f ( s ) f^{(s)} f(s)设为空集 ∅ \empty ∅。给定 S S S个这样的signature
函数 { f ( s ) ( ⋅ ) } s = 1 S \{f^{(s)}(\cdot)\}_{s=1}^S {f(s)(⋅)}s=1S,并通过 f ( s ) ( ⋅ ) f^{(s)}(\cdot) f(s)(⋅)用于表示 f i ( s ) f_i^{(s)} fi(s)对于tuple x i \textbf{x}_i xi的signature
计算,用于 AutoBlock \text{AutoBlock} AutoBlock的最终相似度度量是最大化 S S S对signatures
的cosine相似度
σ ( x i , x i ′ ) ≜ max s = 1 , … , S cos ( f i ( s ) , f i ′ ( s ) ) (6) \sigma(\textbf{x}_i,\textbf{x}_{i'})\triangleq\max_{s=1,\dots,S}\cos(\textbf{f}_i^{(s)},\textbf{f}_{i'}^{(s)}) \tag{6} σ(xi,xi′)≜s=1,…,Smaxcos(fi(s),fi′(s))(6)
其中 cos ( f , f ′ ) = ⟨ f , f ′ ⟩ / ( ∥ f ∥ 2 ⋅ ∥ f ′ ∥ 2 ) \cos(\textbf{f},\textbf{f}')=\langle\textbf{f},\textbf{f}'\rangle/(\parallel\textbf{f}\parallel_2\cdot\parallel\textbf{f}'\parallel_2) cos(f,f′)=⟨f,f′⟩/(∥f∥2⋅∥f′∥2)是cosine相似度,若 f \textbf{f} f或者 f’ \textbf{f'} f’为空集 ∅ \empty ∅则设其cosine相似度为0。需要注意cosine相似度具有缩放不变性,所以对于所有的 s ∈ [ S ] s\in[S] s∈[S]需要 ∥ w s ∥ 2 = 1 \parallel\textbf{w}_s\parallel_2=1 ∥ws∥2=1。
现在来描述给定正样本标签集合 L \mathcal{L} L,提出的注意力编码器和signature
函数如何训练。该训练算法是基于下面的想法:对于任意的 ( i , i ′ ) ∈ L (i,i')\in\mathcal{L} (i,i′)∈L,tuple对 ( x i , x i ′ ) (\textbf{x}_i,\textbf{x}_{i'}) (xi,xi′)应该比 ( x i , ★ ) (\textbf{x}_i,\bigstar) (xi,★)和 ( x i ′ , ★ ) (\textbf{x}_{i'},\bigstar) (xi′,★)更加相似,其中 ★ \bigstar ★表示一个不相关的tuple。
基于这个直觉设计了一个辅助多类别分类任务进行训练。具体来说,对于每个正样本对 ( i , i ) ∈ L (i,i)\in\mathcal{L} (i,i)∈L,随机采样一个小的索引集合 U i , i ′ ⊂ [ n ] ∖ { i , i ′ } U_{i,i'}\subset[n]\setminus\{i,i'\} Ui,i′⊂[n]∖{i,i′}。由于 n ≫ ∣ U i , i ′ ∣ n\gg|U_{i,i'}| n≫∣Ui,i′∣并且 X \textbf{X} X中的重复是比较罕见的,因此可以假设 U i , i ′ U_{i,i'} Ui,i′中的tuple是与 x i \textbf{x}_i xi和 x i ′ \textbf{x}_{i'} xi′不相关的。给定signature
函数 f ( s ) f^{(s)} f(s),从 { i , i ′ } ∪ U i , i ′ \{i,i'\}\cup U_{i,i'} {i,i′}∪Ui,i′的 2 ∣ U i , i ′ ∣ + 1 2|U_{i,i'}|+1 2∣Ui,i′∣+1个样本对中挑选出唯一正样本对 ( x i , x i ′ ) (\textbf{x}_i,\textbf{x}_{i'}) (xi,xi′)的概率定义如下:
P s [ ( x i , x i ) ; U i , i ′ ] ≜ e σ ( f i ( s ) , f i ′ ( s ) ) e σ ( f i ( s ) , f i ′ ( s ) ) + ∑ j ∈ U i , i ′ [ e σ ( f i ( s ) , f j ( s ) ) + e σ ( f i ′ ( s ) , f j ( s ) ) ] (7) P_s[(\textbf{x}_i,\textbf{x}_i);U_{i,i'}]\triangleq\frac{e^{\sigma(\textbf{f}_i^{(s)},\textbf{f}_{i'}^{(s)})}}{e^{\sigma(\textbf{f}_i^{(s)},\textbf{f}_{i'}^{(s)})}+\sum_{j\in U_{i,i'}}[e^{\sigma(\textbf{f}_i^{(s)},\textbf{f}_{j}^{(s)})}+e^{\sigma(\textbf{f}_{i'}^{(s)},\textbf{f}_{j}^{(s)})}]} \tag{7} Ps[(xi,xi);Ui,i′]≜eσ(fi(s),fi′(s))+∑j∈Ui,i′[eσ(fi(s),fj(s))+eσ(fi′(s),fj(s))]eσ(fi(s),fi′(s))(7)
注意力编码器 { g ( j ) } j = 1 m \{g^{(j)}\}_{j=1}^m {g(j)}j=1m和signature
函数权重可以通过最小化所有signatures
和正样本的对数似然来端到端的学习
max { g ( j ) } j = 1 m , { w s } s = 1 S 1 ∣ L ∣ ∑ ( i , i ′ ) ∈ L ∑ s = 1 S log P s [ ( x i , x i ′ ) ; U i , i ′ ] (8) \max_{\{g^{(j)}\}_{j=1}^m,\{\textbf{w}_s\}_{s=1}^S}\frac{1}{|\mathcal{L}|}\sum_{(i,i')\in\mathcal{L}}\sum_{s=1}^S\log P_s[(\textbf{x}_i,\textbf{x}_{i'});U_{i,i'}] \tag{8} {g(j)}j=1m,{ws}s=1Smax∣L∣1(i,i′)∈L∑s=1∑SlogPs[(xi,xi′);Ui,i′](8)
这里应用 Adam \text{Adam} Adam来优化目标函数。在每次更新后,进一步将所有signature
权重投影至灵活的区域来确保非负和单位范数。
然而,等式(8)中定义的优化问题并没有对signature
权重施加任何正则化,其可能会导致 S S S个一致且独立的最优signature
函数。理想的signature
应该是独立或者正交的: W T W = I S \textbf{W}^T\textbf{W}=\textbf{I}_S WTW=IS,所以每个signatures
反应了tuple的一个独立方面。因此,可以将惩罚项 ∥ W T W − I S ∥ \parallel\textbf{W}^T\textbf{W}-\textbf{I}_S\parallel ∥WTW−IS∥合并至优化问题中。然而,当优化问题涉及到较大的任务,调整惩罚系数或者相关超参数会变得笨拙且不切实际。
取而代之,这里提出了一个简单的序列算法来实现正交性。主要的相反是每次训练一个signature
函数,并且训练当前signature
函数,先前定义的signature
函数所使用的所有属性都不可用。这种方法中,不同signature
函数使用的属性将不会重复,并能够天然满足正交。最终,当所有的属性都被使用,或者已经学习了 S S S个signature
函数,则算法终止。
模型训练算法如下:
输入:tuple集合 X \textbf{X} X,标注集合 L \mathcal{L} L,最大迭代次数 T T T,最大signatures数量 S ˉ \bar{S} Sˉ
输出:属性编码器 { g ( j ) } j = 1 m \{g^{(j)}\}_{j=1}^m {g(j)}j=1m,signature函数权重 { w s } s = 1 S \{\textbf{w}_s\}_{s=1}^S {ws}s=1S
初始化 { g ( j ) } j = 1 m \{g^{(j)}\}_{j=1}^m {g(j)}j=1m和 { w s } s = 1 S \{\textbf{w}_s\}_{s=1}^S {ws}s=1S;
初始化属性集合 M = { 1 , … , m } \mathcal{M}=\{1,\dots,m\} M={1,…,m};
for s = 1 , … , S ˉ s=1,\dots,\bar{S} s=1,…,Sˉ do
for t = 1 , … , T t=1,\dots,T t=1,…,T do
采样mini-batch L B ⊂ L \mathcal{L}_B\subset\mathcal{L} LB⊂L;
为每个 ( i , i ′ ) ∈ L B (i,i')\in\mathcal{L}_B (i,i′)∈LB采样 U i , i ′ U_{i,i'} Ui,i′;
更新 { g ( j ) , w s j } j ∈ M \{g^{(j)},w_{sj}\}_{j\in\mathcal{M}} {g(j),wsj}j∈M来改善 1 ∣ L B ∣ ∑ ( i , i ′ ) ∈ L B log P s [ ( x i , x i ′ ; U i , i ′ ) ] \frac{1}{|\mathcal{L}_B|}\sum_{(i,i')\in\mathcal{L}_B}\log P_s[(\textbf{x}_i,\textbf{x}_{i'};U_{i,i'})] ∣LB∣1∑(i,i′)∈LBlogPs[(xi,xi′;Ui,i′)]
投影 w s \textbf{w}_s ws至 { w ∈ R ≥ 0 m ∣ w M = 0 , ∥ w ∥ 2 = 1 } \{\textbf{w}\in\mathbb{R}_{\ge0}^m|w_{\mathcal{M}}=0,\parallel\textbf{w}\parallel_2=1\} {w∈R≥0m∣wM=0,∥w∥2=1}
M = M ∖ { j ∈ [ m ] ∣ w s j > 0 } \mathcal{M}=\mathcal{M}\setminus\{j\in[m]|w_{sj}>0\} M=M∖{j∈[m]∣wsj>0}
if M = ∅ \mathcal{M}=\empty M=∅ then
S=s;break; \text{S=s;break;} S=s;break;
在 AutoBlock \text{AutoBlock} AutoBlock的最后一个步骤中,目标是对于每个tuple,依据等式(6)的独立 σ \sigma σ计算的相似度来找出超过阈值 θ > 0 \theta>0 θ>0的最近邻。该任务可以简化为一个经典的、基于cosine相似度的高维最近邻搜索问题。这里使用局部敏感哈希 (LSH) \text{(LSH)} (LSH),一种次线性查询时间解决该问题的技术。具体来说,这里使用 cross-polytope LSM \text{cross-polytope LSM} cross-polytope LSM,是一种用于cosine相似度的start-of-the-art
LSH \text{LSH} LSH家族,其不仅能够具有理论最优查询时间复杂度,并且也允许高效的实现。
实验考虑三个真实数据集:Movie
、Music
、Grocery
,这些数据集是从各种公开网站上爬取和采样的。Music
来自于 Amazon \text{Amazon} Amazon和 Wikipedia \text{Wikipedia} Wikipedia,Movie
来自于 IMDb \text{IMDb} IMDb和 WikiData \text{WikiData} WikiData,Grocery
来自于 Amazon \text{Amazon} Amazon和 ShopFoodEx \text{ShopFoodEx} ShopFoodEx。这三个数据集代表实体匹配问题中的三种不同的类型:
对于所有的三个数据集,使用strong key
来生成正样本。对于Movie
数据集则是tconst
,对于Music
数据集则是ASIN
,对于Grocery
则是UPC
码。需要注意,不是三个数据集中的每个record
都有strong key
。由于这些strong key
被用于构建训练和评估数据的正样本,为了避免过拟合将其排除在属性集中。
首先,将正样本随机划分为两个部分,80%用于训练并且20%用于测试,并且确保具有相同strong key
的tuple被划分至相同的部分。将出现在所有训练标签中的元组加入值训练集,并添加20%的非正样本;其作为不相关tuple来促进利用。测试集也是用相似的方法创建。重复这个过程并为每个数据集创建5个训练/测试集合对。
基于key的blocking
考虑两个blocking:单个key(例如仅使用Title)和连接key(使用所有属性)。
MinHash \text{MinHash} MinHash blocking
该方法在特定的属性上使用 Jaccard \text{Jaccard} Jaccard相似度来检索所有的对,并选择超过阈值 θ \theta θ的候选对。所有属性都被考虑,并且 θ \theta θ被设置为0.4、0.6或者0.8。
DeepER \text{DeepER} DeepER
作为基于深度学习的blocking方法的state-of-the-art
,该方法可以看作是 AutoBlock \text{AutoBlock} AutoBlock的特例。
为了理解 AutoBlock \text{AutoBlock} AutoBlock组件的影响,这里还包含两个子模型baseline:
使用词嵌入向量尺寸为 d = 300 d=300 d=300的预训练 fastText \text{fastText} fastText。注意力编码器中的 SeqEnc ( ⋅ ) \text{SeqEnc}(\cdot) SeqEnc(⋅)选单层的 Bi-LSTM \text{Bi-LSTM} Bi-LSTM,虽然发现本文的方法对于神经网络架构和其他影响因素具有鲁棒性。对于每个正样本对,在训练过程中随机采样 ∣ U i , i ′ ∣ = 10 |U_{i,i'}|=10 ∣Ui,i′∣=10不相关tuple来构造等式(7)的损失函数。设置signature
最大数量 S S S为属性的数量。对于属性Title,设置注意力平滑参数 ρ \rho ρ为1,其他属性则为0。对于最近邻搜索,设置相似度阈值为 θ = 0.8 \theta=0.8 θ=0.8,每个tuple的最大检索数量为 max ( 1000 , ∣ n 1 ∣ ) \max(1000,|\sqrt{n_1}|) max(1000,∣n1∣),其中 n 1 n_1 n1是较大表的尺寸。
对于所有方法,仅执行相同且最小的预处理,其目标之一是最小化blocking中的人工。事实上,仅有两个预处理:将英文字符转换为小写、使用标准的 TreeBank tokenizer \text{TreeBank tokenizer} TreeBank tokenizer将属性转换为token序列。
使用两个指标来评估每个blocking方法的有效性: recall \text{recall} recall和 P/E ratio \text{P/E ratio} P/E ratio。令 T ⊆ [ n ] × [ n ] \mathcal{T}\subseteq[n]\times[n] T⊆[n]×[n]所有正确匹配的未知集合, X \textbf{X} X是元组集合, C \mathcal{C} C是候选对集合。两个度量的定义如下:
r e c a l l ≜ C ∩ T T recall\triangleq\frac{\mathcal{C}\cap\mathcal{T}}{\mathcal{T}} recall≜TC∩T
P/E ration ≜ ∣ C ∣ X = C n \text{P/E ration}\triangleq \frac{|\mathcal{C}|}{\textbf{X}}=\frac{\mathcal{C}}{n} P/E ration≜X∣C∣=nC
然而,真实标签集合 T \mathcal{T} T是永远无法预先知道,因此使用收集的正样本标签 L \mathcal{L} L来近似。报告每个数据集上5个测试集的平均表现。
首先研究 AutoBlock \text{AutoBlock} AutoBlock的有效性。上表展示了三个数据集上baseline方法和 AutoBlock \text{AutoBlock} AutoBlock的 recall \text{recall} recall和 P/E ration \text{P/E ration} P/E ration。表中的结果支持以下结论。
首先, AutoBlock \text{AutoBlock} AutoBlock在所有数据集上都表现的最好,特别是当数据集为dirty
或者unstructured
。在 Grocery \text{Grocery} Grocery上, AutoBlock \text{AutoBlock} AutoBlock不仅在 recall \text{recall} recall上显著超越所有的baseline,并且具有最小的 P/E ration \text{P/E ration} P/E ration。在 Music \text{Music} Music, AutoBlock \text{AutoBlock} AutoBlock的 recall \text{recall} recall高于最优baseline,并且 P/E ration \text{P/E ration} P/E ration仅有 MinHash \text{MinHash} MinHash的1/5。在 Movie \text{Movie} Movie, AutoBlock \text{AutoBlock} AutoBlock实现了接近第二名的 recall \text{recall} recall,但是 P/E ration \text{P/E ration} P/E ration是最优baseline的20倍。
第二,基于key的blocking方法在三个数据集上的 recall \text{recall} recall都不高。该缺点在 Grocery \text{Grocery} Grocery上最明显,其在Title
上没有一个完全匹配的正样本对,因为两个数据源以不同的方式将grocery
产品的不同方面拼接为单个属性。因此,基于key的方法无法检索真正的正样本对。
第三, MinHash \text{MinHash} MinHash需要一个低相似度阈值来实现高 recall \text{recall} recall,但代价是无法接受的 P/E ration \text{P/E ration} P/E ration。事实上,仅当 θ = 0.4 \theta=0.4 θ=0.4的 MinHash \text{MinHash} MinHash能够在Movie
和Music
上实现与 AutoBlock \text{AutoBlock} AutoBlock相当的 recall \text{recall} recall,但是 P/E \text{P/E} P/E显著的优于 AutoBlock \text{AutoBlock} AutoBlock;当 θ \theta θ增加, MinHash \text{MinHash} MinHash的 recall \text{recall} recall会明显下降。此外, MinHash \text{MinHash} MinHash在 Grocery \text{Grocery} Grocery上的 recall \text{recall} recall仍然低于 AutoBlock \text{AutoBlock} AutoBlock。
第四,注意力机制对于 AutoBlock \text{AutoBlock} AutoBlock的 recall \text{recall} recall共享巨大。从注意力编码器和无加权编码器的比较中最能看到,前者在 Music \text{Music} Music和 Grocery \text{Grocery} Grocery上超越后者16.9和18.3个点。此外, AutoBlock \text{AutoBlock} AutoBlock在三个数据集上的 recall \text{recall} recall优于 DeepER \text{DeepER} DeepER,这进一步证明了注意力机制的有效性。
最后但是最重要的是,学习多个signatures
进一步提供 AutoBlock \text{AutoBlock} AutoBlock的 recall \text{recall} recall。在 Movie \text{Movie} Movie和 Music \text{Music} Music上 AutoBlock \text{AutoBlock} AutoBlock的注意力编码器的显著改善 recall \text{recall} recall也说明了这一点。
这里解释了 AutoBlock \text{AutoBlock} AutoBlock如何节约人工并仍然获得高 recall \text{recall} recall。原始人工工作的主要来源是如何迭代尝试不同的清洗组合,并制定blocking的关键策略。 AutoBlock \text{AutoBlock} AutoBlock通过注意力编码器为不同token分配不同权重,从而减轻这个任务的人工。上图展示了从 Music \text{Music} Music和 Grocery \text{Grocery} Grocery中采样正样本对的Title的注意力权重。有几个模式非常突出:
digitally
和remastered
具有较小的权重。 AutoBlock \text{AutoBlock} AutoBlock自动合并不同属性来生成signature的能力节省了人工工作。上图展示了从Music
学习的signature权重。在 s i g 2 sig_2 sig2中Ablums
和Performers
合并可能是因为它们经常同时匹配或者不匹配,因此合并它们将检索冲突的机会并检索 P/E ration \text{P/E ration} P/E ration。