Efficient Similarity Joins for Near Duplicate Detection论文总结


Abstract

随着数据量的增加以及整合来自多个数据源的数据的需求,一个具有挑战性的问题是有效地查找接近重复的记录
我们专注于有效的算法来查找记录对,以使它们的相似性高于给定阈值。
一些现有的算法依赖于前缀过滤原则来避免计算所有可能的记录对的相似性值。我们通过利用排序信息提出了新的过滤技术;它们被集成到现有方法中,并大大减少了候选者的大小,从而提高了效率。


1. INTRODUCTION

近重复数据彼此具有高度相似性,但它们在位上并不相同。存在几乎重复数据的原因有很多:印刷错误、版本化、镜像或剽窃文档、同一物理对象的多个表示、从同一模板生成的垃圾邮件等。

定义两个对象接近重复的定量方法是使用相似度函数。相似度函数测量两个对象之间的相似度,并将返回 [0, 1] 中的值。较高的相似度值表明对象更相似。因此,我们可以将具有高相似性值的对象对视为近似重复。相似性连接将找到相似性高于给定阈值的所有对象对。

最近提出的 All-Pairs 算法 [3] 被证明是高效的,并且可以扩展到数千万条记录。尽管如此,我们表明 All-Pairs 算法以及其他基于前缀过滤的方法通常会生成大量候选对,所有这些都需要通过相似度函数进行验证。几个真实数据集的经验证据表明,它的候选大小随着数据大小以快速的二次速度增长。另一个固有问题是它取决于相似对象可能共享稀有“特征”(例如,文档集合中的稀有词)的假设。对于具有低相似性阈值或具有受限特征域的问题,该假设可能会被削弱。

在本文中,我们提出了新的精确相似性连接算法,并应用于近重复检测。我们提出了一种位置过滤原则,该原则利用记录中标记的排序并导致相似度得分的上限估计。我们证明它是对现有前缀过滤方法的补充,并且可以处理前缀和后缀中的标记。


2. PROBLEM DEFINITION AND PRELIMINARIES

2.1 Problem Definition

我们将记录定义为一组取自有限宇宙 U = {w1, w2, . . . , w|U| }。相似度函数 sim 在 [0, 1] 中返回两条记录的相似度值。给定记录集合、相似度函数 sim() 和相似度阈值 t,相似度连接问题是找到所有记录对 hx、yi,使得它们的相似度不小于给定阈值 t,即sim(x, y) ≥ t。

考虑识别几乎重复的网页的任务。每个网页都被解析、清理并转换为多

### 基于相似度距离的小目标检测标签分配方法 在计算机视觉领域,针对小目标检测中的标签分配问题,基于相似度距离的方法提供了一种有效的解决方案。这类方法通过计算候选框与真实标注框之间的特征空间距离来决定最佳匹配关系。 对于小目标而言,由于其尺寸较小,在图像中占据像素较少,传统IoU(Intersection over Union)方式可能无法有效捕捉到这些微小物体的特性。因此引入了更精细的距离度量机制,如中心点偏移、尺度差异以及形状变形等因素共同构成综合评价指标[^1]。 具体实现上,可以采用预训练模型提取多层特征图谱作为基础表示形式;接着利用注意力机制聚焦局部区域内的显著性信息增强表达能力;最后借助对比学习框架构建正负样本对并优化损失函数完成端到端训练过程[^2]。 ```python import torch.nn.functional as F def similarity_distance_loss(pred_boxes, gt_boxes): """ 计算预测框和真值框之间基于相似度距离的损失 参数: pred_boxes (Tensor): 预测的目标边界框坐标 [N, 4] gt_boxes (Tensor): 对应的真实标记边界框坐标 [M, 4] 返回: Tensor: 平均每张图片上的总损失值 """ # 提取特征向量 features_pred = feature_extractor(pred_boxes) features_gt = feature_extractor(gt_boxes) # 计算L2范数距离矩阵 dist_matrix = F.pairwise_distance(features_pred.unsqueeze(1), features_gt.unsqueeze(0)) # 找到最近邻对应关系 min_dist, indices = dist_matrix.min(dim=1) # 构建二分图最大权匹配问题求解最优指派方案 row_ind, col_ind = linear_sum_assignment(min_dist.cpu().detach().numpy()) # 只保留成功配对的部分用于后续监督信号传递 matched_pairs = [(r, c) for r, c in zip(row_ind.tolist(), col_ind.tolist()) if r < len(pred_boxes)] loss = sum([F.smooth_l1_loss(pred_boxes[r], gt_boxes[c]) for r, c in matched_pairs]) return loss / max(len(matched_pairs), 1e-8) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值