数据流中的近似重复检测

2023-12-19

我目前正在开发一个可以生成大量文本内容的流 API。正如预期的那样,API 给出了大量重复数据,而且我们也有过滤接近重复数据的业务需求。

我对数据流中的重复检测做了一些研究,并阅读了。稳定布隆过滤器是用于数据流中重复检测的数据结构,具有误报率上限。

但是,我想识别近似重复项,并且我还研究了用于最近邻问题和近似重复项检测的散列算法,例如 LSH 和 MinHash。

我有点陷入困境,正在寻找有关如何进行的指示以及我可以查看的论文/实施?


  1. 首先,将文本标准化为所有小写(或大写)字符,用空格替换所有非字母,将所有多个空格压缩为一个,删除前导和尾随空格;为了速度,我将在一次文本中执行所有这些操作。接下来采取MD5结果字符串的哈希(或更快的东西)。进行数据库查找MD5表中的哈希(作为两个 64 位整数),如果存在,则它是一个exact重复,如果没有,请将其添加到表中并继续下一步。您将希望根据时间或内存使用情况使旧哈希值老化。

  2. 要查找接近的重复项,需要将规范化字符串转换为潜在的签名(子字符串的哈希值),请参阅SpotSigs纸和博客文章 http://glinden.blogspot.com/2008/08/clever-method-of-near-duplicate.html作者:格雷格·林登。假设例程Sigs()对于给定的字符串(即给定标准化的字符串)执行此操作x, Sigs(x)返回一小组 (1-5) 64 位整数。你可以使用类似的东西SpotSigs算法来选择文本中的子字符串作为签名,但是如果您对数据有所了解,那么制定自己的选择方法可能会效果更好。您可能还想看看 simhash 算法(代码是here http://code.google.com/p/simhash/).

  3. 鉴于Sigs()有效地找到邻近重复项的问题通常称为设置相似连接 http://bit.ly/JPTZ2I问题。这SpotSigs论文概述了一些启发式方法,以减少新集合需要与旧集合进行比较的集合数量。simhash method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据流中的近似重复检测 的相关文章

随机推荐

  • Go 为什么没有 stackoverflows

    我在这个演示文稿中读到http golang org doc ExpressivenessOfGo pdf http golang org doc ExpressivenessOfGo pdf第 42 页 Safe 没有堆栈溢出 这怎么可能
  • 为什么 setTimeout(.., 0) 不立即执行?

    var timeout setTimeout function console log I m message from timeout 0 console log I m message from outside timeout 1 I
  • 字节比布尔[8]更有效[重复]

    这个问题在这里已经有答案了 如果我在一个类中需要 8 个布尔成员变量 Java 是否可以有效地将它们全部放在一个字节中 或者它会为每个使用一个字节吗 换句话说 内存占用是否不同 boolean a boolean b boolean c b
  • Pandas 从组中获取列的第一个和最后一个值

    嗨 我有dataframe包含同一 ID 的多行 其中一列是日期 按升序排列 我想计算第一个条目和最后一个条目之间的日期差 我通过实例化 pandas 构造函数来实现此目的 如下所示 g df groupby ID print pd Dat
  • CKEditor 按键事件未正确更新文本

    我有以下代码 当用户在 CKEditor 文本区域内键入内容时 自动更新 div 内的内容 CKEDITOR instances editor on key function e var preview document getElemen
  • C++矢量源代码

    我正在尝试获取向量源代码以了解标准 std 或 stl 向量是如何实现的 这是出于学习目的 现在的问题是我在哪里可以找到源代码 甚至其他 C 容器的源代码也有帮助 不存在 标准 向量 标准定义了行为和接口 以及一些实现细节 例如连续存储 但
  • DataType 属性破坏日期时间字段上的 jQuery 日期选择器

    我在用MVC 4 and 剃刀视图我无法理解为什么我的日期字段上的编辑视图没有正确绑定到内置 jQuery 日期选择器 该字段是数据类型Date在数据库中 以及DateTime在域模型中 我不想显示时间 只想显示日期 该字段是必填字段 需要
  • 透明度实际上是如何实现的?

    给定两个图像 A B 我想要第三个图像 C 就好像 B 的透明度为 t 0 5 并放置在 A 的顶部 现实中C是如何计算的以及n如何影响它 我对任何程序或伪代码都不感兴趣 我只想知道基本原理 我认为 C 的一种方式只不过是 A 和 B 的交
  • ImportError:colab google 中没有名为 object_detection.builders 的模块

    我运行时出现此错误 cd git clone quiet https github com tensorflow models git apt get install qq protobuf compiler python tk pip i
  • 为什么不为 Rspec + Selenium 使用共享 ActiveRecord 连接?

    处理 Selenium 和测试的最普遍接受的方法似乎是避免使用事务固定装置 然后在测试 场景之间使用诸如 database cleaner 之类的东西 我最近遇到了以下情况article http blog plataformatec co
  • 为什么 Eclipse 的 Egit 中 Commit 是灰色的

    EGit 中的提交按钮神秘地变灰了 几天前还运行得很好 有谁知道如何解决这一问题 我在谷歌上没有找到任何线索 我会附上屏幕截图 但我还没有足够的声誉点 我遇到了这个问题 发现在远程获取和合并后我有未暂存的更改 将未暂存的更改移至 Git S
  • null 不是对象(评估“ShareDialog.canShow”)

    我有这样的代码 import React Component from react import AppRegistry StyleSheet Text TouchableHighlight View from react native i
  • Sitecore Field Renderer - 在渲染内添加标记

    作为 SEO 增强项目的一部分 我的任务是在字段渲染器在页面上生成的图像的标记内添加以下属性 itemprop contentURL 在结束标签之前
  • 如何将PIL Image.image对象转换为base64字符串? [复制]

    这个问题在这里已经有答案了 我正在尝试以 90 度旋转的方式操作 Base64 编码的图像 经过此操作 我想将其转换回 Base64 字符串 但不幸的是还无法实现这一目标 这是我到目前为止所做的 image string StringIO
  • Android:从服务调用片段方法

    运行 Firebase Cloud 消息服务 我希望每次收到新消息时都会调用特定片段中的方法 public class FirebaseMsgService extends FirebaseMessagingService public F
  • 在sql中以管道分隔的列中搜索值

    我想搜索列中以管道分隔的值 见下文 Column1 1 1 2 23 2 6 6 12 我想在所有行中搜索 2 这样它将返回下面的行 Column1 1 2 23 2 谁能告诉我我们怎样才能实现这一目标 您可以使用like where co
  • 如何更改 Xamarin 表单中的密码屏蔽字符 - 条目

    我目前面临一个相当简单的问题 最终使我陷入了死胡同 我正在构建一个使用 Xamarin Forms 的应用程序 并希望在用户输入密码时将掩码字符从项目符号更改为星号 为了输入密码 我在内容页面的可移植库项目中使用条目控件 在 VS2017
  • C++ STL 中的确定性随机数流

    我想提供一个数字 然后收到一组随机数 但是 我希望这些数字是相同的 无论我在哪台计算机上运行它 假设我提供相同的种子 基本上我的问题是 在 C 中 如果我使用rand 但供应srand 使用用户定义的种子而不是当前时间 我是否能够在任何计算
  • 列表以按间隔返回特定字段的值

    我正在使用大量数据实施 Telerik Chart 图表 x 轴上的标签重叠 我已经克服了这个问题 但从长远来看它并不可靠 这些是列表具有的字段 FieldName DataType Date DATETIME DateString STR
  • 数据流中的近似重复检测

    我目前正在开发一个可以生成大量文本内容的流 API 正如预期的那样 API 给出了大量重复数据 而且我们也有过滤接近重复数据的业务需求 我对数据流中的重复检测做了一些研究 并阅读了 稳定布隆过滤器是用于数据流中重复检测的数据结构 具有误报率