system: [SYSTEM]

user: 5. 基于集合相关性的实体解析算法 第4节描述的方法虽然能快速的找到相似记录，但是其算法时间复杂度为O(n 3 m 2 )，其中n是子字符串的数量，m是记录的数量。本节在第4节算法的基础上进行了改进，减少m的数量。 5.1. 属性值规范化标记分词及创建倒排索引表 首先将这些字段分为字符型和数值型并对其标记化分词处理： 数值型字段：例如表示地图坐标的字段(121.575509， 38.945373)由于不同数据源中表示的方式不同，在这里，统一将数值型字段精确到小数点后两位。 字符型字段：采用基于领域词典(基于城市，地区等划分的词典)的分词法，例如将“东至规划路”和“东规划路”统一规范化为“规划路”。 Table 4 Semi-structured tag array collection representatio R r 1 : (t 1 = 西南路， t 5 = A、B区， t 6 =沙河口区， t 4 =春风街， t 7 = 1号， t 8 = 905-1号) r 2 : (t 1 = 西南路， t 2 = 华北路， t 3 = 规划路， t 4 = 春风街， t 9 = 5-1号， t 10 = 905-7号) r 3 : (t 1 = 西南路， t 2 = 华北路， t 3 = 规划路， t 11 = 121.57， t 12 = 38.94) 表4. 半结构化标记数组集合表示 表4中，R是一个参考集，对应于一个实体记录，S是用于搜索相关集合的记录集合。将表1中的记录划分为表4中记录R的12个字段，在这里用符号t i 代替标记，按照这些分词频率递减的顺序作为标记化后的下标。此外将记录中的每个文本属性都看作一个元素。每个元素都用一组标记(例如 r 1 = { t 1 ， t 5 ， t 6 ， t 4 ， t 7 ， t 8 } ，t 1 = 西南路，t 5 = AB区，t 6 = 沙河口区，t 4 = 春风街，t 7 = 1号，t 8 = 905-1号)来表示。对于S数据集，使用上述生成的标记为该数据集按照标记在各个元素中出现的频率创建一个倒排索引表。 5.2. 有效签名生成 本节将签名和倒排索引一起使用来识别相关的集合对。该算法从5.1节中生成的标记集合中找到一个子集来生成一个有效签名。通过这个签名来寻找相关的候选集，从而删除不相关的候选集。 5.2.1. 有效签名 在集合R中，假设每个元素 r ∈ R 都是一个标记数组。则定义所有标记的集合为 R T = ∪ r ∈ R r 。根据标记集合，定义一个签名如下： 定义5 (签名)：给定一个集合R，则标记集合 R T 的任何子集都是R的签名。 定义6 (有效签名)：给定一个集合R和一个相关性阈值 δ ，如果任何可能匹配的集合S满足 r e l a t e d ∅ ( R ， S ) ≥ δ ，同时在 R T 中有一个签名 K R T ，使 S T ∩ K R T ≠ ∅ ，那么该签名 K R T 为有效签名。 如果给定集合 R = { r 1 ， r 2 ， ⋯ ， r n } 的一个签名 K R T ，那么将有效签名定义为 K R = { k 1 ， k 2 ， ⋯ ， k n } ，其中 k i = r i ∩ K R T (即， k i 是 r i 的一组签名标记)。 例1：对于表4中的集合R，有 R T = r 1 ∪ r 2 ∪ r 3 = { t 1 ， t 2 ， t 3 ， ⋯ ， t 12 } ，假设子集 K R T = { t 1 ， t 2 ， t 3 ， t 4 } 是集合R的一个可能的签名。相应的有效签名就是 K R = { { t 1 ， t 4 } ， { t 1 ， t 2 ， t 3 ， t 4 } ， { t 1 ， t 2 ， t 3 } } 。 5.2.2. 加权签名方案 最大匹配阈值：在处理签名时，定义一个相关量θ，作为最大匹配阈值。最大匹配阈值是基于 s i m i l a r ∅ ( R ， S ) 和 c o n t a i n ∅ ( R ， S ) 定义的。 对于 c o n t a i n ∅ ( R ， S ) ，要判断R和S的关联性则需要满足： c o n t a i n ∅ ( R ， S ) = | R ∩ ˜ ∅ S | | R | ≥ δ 即 | R ∩ ˜ ∅ S | ≥ δ | R | 。因此本文为 c o n t a i n ∅ 定义了最大匹配阈值 θ = δ | R | 。 对于 c o n t a i n ∅ ( R ， S ) 要想判断R与S相关联则需要满足公式： s i m i l a r ∅ ( R ， S ) = | R ∩ ˜ ∅ S | | R | + | S | − | R ∩ ˜ ∅ S | ≥ δ 鉴于 | S | ≥ | R ∩ ˜ ∅ α S | ，则有： δ ≤ | R ∩ ˜ ∅ S | | R | + | S | − | R ∩ ˜ ∅ S | ≤ | R ∩ ˜ ∅ S | | R | + | S | − | S | = | R ∩ ˜ ∅ S | | R | 所以对于 s i m i l a r ∅ 来说最大匹配分数也是 θ = δ | R | 。 加权签名方案：加权签名方案是在未加权签名方案 [ 13 ] 中的所有签名基础上，为集合创建一个相似度上限更严格的签名。下面给出该签名方案的方法： 给出r中任何元素与s之间的jaccard相似度计算公式为： | r ∩ s | | r ∪ s | ，对于任何元素r，假设有一个元素s只与r共享一个标记；它会有一个相似的分数 1 | r | + | s | − 1 ≤ 1 | r | 。那么当一个元素s与r共享x个标记时，其相似度得分为： x | r | + | s | − x ≤ x | r | 。这个上界 x | r | 为r中的每个标记赋予权值 1 | r | ，表示每个标记对总体最大匹配得分的贡献的上限。 下面形式化定义了加权签名方案。 定义7 (加权签名方案)给定一个集合 R = { r 1 ， ⋯ ， r n } 和一个关联阈值 δ ，加权签名方案是所有含有满足 ∑ i = 1 n | r i | − | k i | | r i | < δ | R | 的有效签名集合 K R = { k 1 ， ⋯ ， k n } 的总和签名 K R T 。 例3：以表4中的集合R为例，假设 δ = 0.75 。拐点 θ = | R | δ = 3 × 0.75 = 2.25 。 K R T = { t 8 ， t 9 ， t 10 ， t 11 ， t 12 } 在加权签名方案中是图1中的一个有效签名 K R = { { t 8 } ， { t 9 ， t 10 } ， { t 11 ， t 12 } } 的有效签名，其中 ∑ i = 1 n | r i | − | k i | | r i | = 6 − 1 6 + 6 − 2 6 + 5 − 2 5 = 2.1 < θ 。 5.2.3. 最优签名选择 在上文中，选择倒排索引表中集合的并集作为相关候选集。因此，如何最大限度减少这个并集的规模，选择最优签名是一个主要问题。在本文中，采用与该并集大小成正比的倒排索引表的总长度作为优化目标。 问题(最优有效签名选择)：给定一个集合R和一个关联阈值 δ ，找到一个有效签名 K R T 满足可以使 ∑ t ∈ K R T | I [ t ] | 最小化， | I [ t ] | 指的是倒排索引表中标记的个数。 本文中，将这个问题看做是一个背包问题，使用贪心近似算法来解决。下面给出该方法步骤： 1) 给出一个集合 R = { r 1 ， r 2 ， ⋯ ， r n } ，对于每一个在 R T 中的t，给它赋值 value = ∑ r i | t ∈ r i 1 | r i | 以及一个代价 cost = | I [ t ] | ； 2) 为了最小化倒排序列的大小，在 R T 中按cost/value对所有标记以递增次序进行排序； 3) 依次选择标记，直到定义7中的条件得到满足为止，得到有效签名，其中所选的标记是 K R T 的签名标记； 例4：考虑表4，图2中表示了这个倒排索引，costs (即：索引列表的长度)为在 R T 中的12个tokens t 1 ， ⋯ ， t 12 分别为9，7，7，6，6，6，5，3，3，1，1，1。Values对于 t 1 值为8/15， t 4 的值为1/3每个 t 2 ， t 3 值为11/30， t 5 ， t 6 ， t 7 ， t 8 ， t 9 ， t 10 为1/6， t 11 ， t 12 为1/5。我们可以基于cost/value值按照递增序列排序并对他们进行选择。首先选 t 12 ， | k 3 | = 1 以及 | k 1 | = | k 2 | = 0 。因此，有 ∑ i = 1 n | r i | − | k i | | r i | = 2.8 比值 θ = 2.4 大。然后继续选择 t 11 ， t 10 ， t 9 ；如果选择 t 8 ，就有 | k 1 | = 1 以及 | k 2 | = | k 3 | = 2 。则有 ∑ i = 1 n | r i | − | k i | | r i | = 2.1 ，比 θ = 2.25 小，停止继续选择，则有效签名为 K R T = { t 12 ， t 11 ， t 10 ， t 9 ， t 8 } 。 5.3. 候选集过滤 尽管上述方法删除了许多不相关的集合，但仍然会产生许多不相关的候选集。为了进一步删除误报的候选集，采用检查过滤器和最近邻过滤器来删除误报候选集。 5.3.1. 检查过滤器 通过上述有效签名的创建，已经确定了与k i 共享标记的元素s，那么可以近似的计算出 Φ ( r i ， s ) 。如果证明所有r中的共享标记k i 和s仍然满足 Φ ( r i ， s ) ≤ | r i | − | k i | | r i | ，那么集合S将作为候选集(即使S与 K R T 只共享一个标记)。该方法被称为检查过滤器。 算法4描述了检查过滤器。对签名中的每一个标记，检索与签名匹配的倒排索引列表。如果集合通过5~6行中的步骤，则将集合添加到候选集合中。 例5：以表4为例。假设 δ = 0.75 ，有含 K R = { { t 8 } ， { t 9 ， t 10 } ， { t 11 ， t 12 } } 的有效签名集合 K R T 。访问相应的倒排列表，并在三个候选集S 2 、S 3 和S 4 上测试检查过滤器。S 2 没有通过检查过滤器 Jac ( r 1 ， s 1 2 ) = 0.5 < | r 1 | − | k 1 | | r 1 | = 5 / 6 ， Jac ( r 2 ， s 3 2 ) = 4 / 7 < | r 2 | − | k 2 | | r 2 | = 2 / 3 。S 3 和S 4 通过检查过滤器 Jac ( r 1 ， s 1 3 ) = 5 6 ≥ | r 1 | − | k 1 | | r 1 | = 5 / 6 和 Jac ( r 2 ， s 2 4 ) = 5 / 6 > | r 2 | − | k 2 | | r 2 | = 2 / 3 。 5.3.2. 最近邻过滤器 最近邻过滤器，即R和S之间的最大匹配分数值不会超过R中每个元素与其在S中最相似的元素(最近邻)的相似性总和： | R ∩ ˜ ∅ S | ≤ ∑ r ∈ R max s ∈ S Φ ( r ， s ) 所以，如果有一个候选集S的最近邻相似度之和小于θ，那么就可以删除这个候选集。本文采用下面几种技术来优化该过滤器。 1) 搜索有效最近邻：遍历每个标记 t ∈ r ，对于每一个标记t，使用倒排索引表I[t]获取S中包含标记t的所有元素s。计算得到r和每个s之间的相似性；相似度得分最大的s被认为是最近邻。 2) 计算重用：在检查过滤器中，已经计算了r和 s ∈ S 中包含r的签名标记的所有元素之间的实际相 似度。由于这些超过 | r | − | k | | r | 的最大值之外的的其他不包含r签名标记的元素其相似度分数一定不会超过 | r | − | k | | r | 界限，所以这个相似度最大值一定是最近邻相似度。 3) 提前终止：对于 r ∈ R 中签名标记出现在候选集合S中的元素，其最近邻相似度并不能保证 Φ ( r ， s ) ≤ | r | − | k | | r | ，因此要么重用检查过滤器中的计算公式，要么直接进行最近邻搜索。而对于签名标记没有出现在S集合中的元素 r ′ ∈ R ，对所有 s ∈ S 边界 | r ′ | − | k ′ | | r ′ | 仍然保留。该算法首先通过对匹配元素r的最近邻相似性进行求和来推断出一个总的估计值，并使用 | r ′ | − | k ′ | | r ′ | 估计非匹配元素 r ′ 。然后，遍历每个 r ′ ，使用 r ′ 的最近邻相似性来更新总估计值。如果总估计低于θ，则删除该候选集。 算法5描述了最近邻过滤器。NNSearch指最近邻搜索步骤。在第3步构建一个总估计值，4~5行计算匹配元素的最近邻相似度，6~9行计算不匹配元素的最近邻相似度与提前终止的最近邻相似度。 例6：以表4为例，假设 δ = 0.75 。对于候选集S 3 。当 r 1 和 s 1 3 共享签名标记。 r 1 的最近邻是 s 1 3 ，他们 的相似分数为5/6。对于 r 2 ，给它一个相似分数上界 | r 2 | − | k 2 | | r 2 | = 2 / 3 。对于 r 3 ，尽管 s 2 3 与签名 r 3 相似，但是它没有通过检查过滤器，因此也可以给它一个上界 | r 3 | − | k 3 | | r 3 | = 0.6 。然后为 r 2 做最近邻搜索，发现 s 3 3 的相似度为0.25。因此 r 2 的相似度分数上界更新为0.25。则总估计值为 5 6 + 0.6 + 0.25 < θ = 2.25 ，因此提前 终止最近的邻居过滤器并删除候选集S 3 。 5.4. 最大匹配验证 在本节中，将对最大匹配验证进行优化。假设 ψ ( r ， s ) = 1 − ϕ ( r ， s ) 为相似函数 ϕ 的对偶距离函数。可以看出，如果距离函数满足一定的约束条件(例如：满足三角不等式)，则最大匹配中一定存在相同的元素。假设有一对相同的元素r和s与其他元素 r ′ 和 s ′ 的关系有： ϕ ( r ， s ′ ) + ϕ ( r ′ ， s ) = 1 − ψ ( r ， s ′ ) + 1 − ψ ( r ′ ， s ) (1) = 2 − ψ ( r ， s ′ ) − ψ ( r ′ ， r ) (2) ≤ 2 − ψ ( r ′ ， s ′ ) (3) = 1 + 1 − ψ ( r ′ ， s ′ ) (4) = ϕ ( r ， s ) + ϕ ( r ′ ， s ′ ) (5) 在(1)中，将相似函数转换为它们的对偶距离函数。在(2)中使用r = s，并在(3)中应用三角形不等式，从(4)到(5)，由于r = s则使用 Φ ( r ， s ) = 1 来替换，在(5)中，可以看出连接r和s比连接r到 s ′ 和 r ′ 到s更好。因此，r和s一定存在于最大匹配中。 应用这个三角不等式，本文从R和S中移除了所有相同的元素，并且在生成的集合上应用最大匹配算法。在最大匹配之后，将相同元素的数量添加到最大匹配分数中，即为最终的最大匹配分数，如表4中的数据，经验证S 4 即为与R相关的记录。