大规模网络爬取语料库中文本包含的鲁棒且可扩展的检测

arXiv cs.CL 论文

摘要

本文介绍了 FindMyText,一个开源 Python 包,它通过一种新颖的指纹链机制高效检测给定文本是否出现在大规模网络爬取语料库中,用于近似逐字复制的检测。在 ArXiv、Wikipedia 和通用网页内容的基准测试中,它展示了优越的性能。

arXiv:2607.10020v1 公告类型:新 摘要:我们提出 FindMyText,一个开源 Python 包,旨在高效评估给定文本是否部分或全部出现在文本语料库中。该工具建立在先前的文档指纹技术之上,但通过一种新颖的机制扩展了它们,以显式捕获匹配指纹的序列。通过识别这样的链,该工具可以更可靠地检测给定文本的近似逐字复制,而不仅仅是文本相似性。这使得 FindMyText 特别适合验证语料库中是否存在受版权保护的材料。利用分布式的、基于磁盘的索引框架,该系统可扩展到大型网络爬取数据集。通过一个新的文本包含方法评估基准,我们展示了 FindMyText 在三个数据集(ArXiv 论文、Wikipedia 和通用网页内容)上优于其他方法。
查看原文
查看缓存全文

缓存时间: 2026/07/14 04:21

# 在大型网络爬取语料库中稳健、可扩展的文本包含检测
来源:https://arxiv.org/html/2607.10020

###### 摘要

我们提出了FindMyText,一个开源 Python 包,旨在高效评估给定文本是否部分或完整地出现在文本语料库中。该工具建立在先前的文档指纹识别技术之上,但通过一种新颖机制扩展了它们,以显式捕获匹配指纹的序列。通过识别这样的链,该工具能够更可靠地检测文本的近乎逐字副本,而不仅仅是文本相似性。这使得FindMyText特别适用于验证语料库中是否存在受版权保护的材料。利用分布式、基于磁盘的索引框架,该系统可扩展到大型网络爬取数据集。使用一个新的基准来评估文本包含方法,我们展示了FindMyText在三个数据集(ArXiv 论文、维基百科和通用网络内容)上优于其他方法。

## 1 引言

大型语言模型 (LLM) 的预训练依赖于海量数据,其中大部分通过网络爬取获得。理解这些预训练数据的组成对于多项 NLP 任务至关重要,例如数据选择和整理 (Albalak et al. 2024 (https://arxiv.org/html/2607.10020#bib.bib3); Parmar et al. 2024 (https://arxiv.org/html/2607.10020#bib.bib21))、增强模型透明度和可解释性 (Wang et al. 2023 (https://arxiv.org/html/2607.10020#bib.bib26); Chang et al. 2024 (https://arxiv.org/html/2607.10020#bib.bib8)),以及评估潜在的版权侵权或许可违规 (Karamolegkou et al. 2023 (https://arxiv.org/html/2607.10020#bib.bib14); Longpre et al. 2024 (https://arxiv.org/html/2607.10020#bib.bib16); Scharrenberg and Sun 2025 (https://arxiv.org/html/2607.10020#bib.bib22))。

然而,精确定位哪些文本是 LLM 预训练数据的一部分是一个不简单的问题。商业 LLM 提供商迄今不愿披露其训练数据的确切内容,通常担心引发诉讼。这导致了各种技术的开发,以对黑盒 LLM 进行成员推断攻击 (Oren et al. 2023 (https://arxiv.org/html/2607.10020#bib.bib20); Shi et al. 2023 (https://arxiv.org/html/2607.10020#bib.bib24)),特别是利用 LLM 的记忆能力 (Hartmann et al. 2023 (https://arxiv.org/html/2607.10020#bib.bib12); Ahmed et al. 2026 (https://arxiv.org/html/2607.10020#bib.bib2))。然而,这些攻击的可靠性受到质疑 (Meeus et al. 2024 (https://arxiv.org/html/2607.10020#bib.bib18); Zhang et al. 2024a (https://arxiv.org/html/2607.10020#bib.bib27); Liu et al. 2025 (https://arxiv.org/html/2607.10020#bib.bib15)),特别是对于精心设计以避免生成受版权保护内容的生产级 LLM。

查看图注Figure 1:FindMyText方法的总体示意图。近期法规(如欧盟 AI 法案 (European Parliament and Council 2024 (https://arxiv.org/html/2607.10020#bib.bib11)))引入的透明度义务可能在未来迫使 LLM 提供商披露更多关于其数据来源的细节。然而,即使完整的训练语料库公开可用,确定特定文本(例如,受版权保护的书籍章节)是否是该语料库的一部分在技术上仍然困难。因为一个文本可能分布在众多网站上,每个网站都有其自己的格式,并且与其他内容片段混合在一起。此外,预训练数据集通常经历多个预处理步骤,包括文本提取(例如 OCR)、样板移除、文档分割以及各种类型的文本归一化和重新格式化。由于这一广泛的整理过程,用于近乎重复检测的技术 (Manku et al. 2007 (https://arxiv.org/html/2607.10020#bib.bib17)) 可能无法可靠地确定文本是否是预训练语料库的一部分。

本文提出了一种新颖的方法,用于高效检测文本包含,定义为确定输入文本是否全部或部分包含在目标语料库中的任务。该方法实现于FindMyText,这是一个开源工具包,专门设计用于 (1) 扩展到大型语料库,以及 (2) 对用户提供的文本与其在语料库中的对应文本之间的差异具有鲁棒性。

该方法建立在文档指纹识别之上,这是一种信息检索中确立的范式 (Schleimer et al. 2003 (https://arxiv.org/html/2607.10020#bib.bib23))。然而,与在近乎重复检测中常见的简单计算共享指纹比率不同,FindMyText明确识别匹配指纹的链。这使得能够更精确地检测和定位共享文本片段——而不仅仅是估计文档相似度——这对于版权侵权检测等任务至关重要。

随着FindMyText工具包的发布111该工具包以 MIT 许可证发布。,本文做出以下贡献:

1.  1. 一种新颖的、基于链的定位共享文本片段的方法(第 3.2 节 (https://arxiv.org/html/2607.10020#S3.SS2))。
2.  2. 一个用于比较文本包含方法的合成基准(第 5.1 节 (https://arxiv.org/html/2607.10020#S5.SS1))。
3.  3. 使用上述基准在三个语料库上对FindMyText中的检测方法进行实验验证(第 5.3 节 (https://arxiv.org/html/2607.10020#S5.SS3))。

本文结构如下。下一节回顾了文本对齐和近乎重复检测的先前工作。第 3 节 (https://arxiv.org/html/2607.10020#S3) 描述了FindMyText中使用的方法。第 4 节 (https://arxiv.org/html/2607.10020#S4) 概述了系统设计和实现。第 5 节 (https://arxiv.org/html/2607.10020#S5) 展示了在多种规模和类型的语料库(即维基百科、ArXiv 和通用网络爬取)上的实验结果。最后,第 6 节 (https://arxiv.org/html/2607.10020#S6) 总结全文。

## 2 相关工作

#### 字符串对齐

给定查询文档 \(q\) 和语料库 \(\mathcal{C} = \{d_i \text{ for } 1 \leq i \leq |\mathcal{C}|\}\),一种直接的文本包含方法是使用序列对齐算法来衡量 \(q\) 与构成语料库 \(\mathcal{C}\) 的每个文本 \(d_i\) 的接近度。这些成对比对算法通常依赖于动态规划,可以分为全局方法和局部方法。

全局对齐,例如 Needleman and Wunsch (1970) (https://arxiv.org/html/2607.10020#bib.bib19) 用于计算两个字符串间编辑距离的算法,旨在端到端地对齐整个序列。相比之下,局部对齐侧重于找到最佳匹配的子序列。最著名的局部对齐方法是 Smith and Waterman (1981) (https://arxiv.org/html/2607.10020#bib.bib25) 算法及其启发式近似,特别是 BLAST (Altschul et al. 1990 (https://arxiv.org/html/2607.10020#bib.bib4))。给定两个文本 \(d_1\) 和 \(d_2\) 以及一个评分系统(指定替换矩阵和空位罚分),这些方法可用于找到 \(d_1\) 和 \(d_2\) 中产生最高对齐分数的两个区域。由于FindMyText的目的是识别输入文本 \(q\) 的一部分是否可以在给定语料库 \(\mathcal{C}\) 中找到,局部对齐与本文最为接近。

不幸的是,鉴于其计算复杂度——Smith-Waterman 为二次方——成对比对算法无法扩展到大型文本语料库。然而,如第 5.1 节 (https://arxiv.org/html/2607.10020#S5.SS1) 所示,它们提供了一个有用的真实基准,以精确量化两个文本共享公共子序列的程度(允许微小变化)。

#### 重复检测

信息检索领域提供了多种方法,用于高效评估两个文档是否是重复或近乎重复的 (Manku et al. 2007 (https://arxiv.org/html/2607.10020#bib.bib17))。如果输入文档 \(q\) 逐字存在于语料库 \(\mathcal{C}\) 中,则可以通过哈希轻松执行精确匹配。然而,在大多数实际情况下,由于网络爬取语料库上应用的多种归一化、格式化和分割步骤,查询文档 \(q\) 与其对应文本 \(d_i\) 会有所不同。

在这些情况下,可以使用近乎重复检测方法来衡量 \(q\) 与文档 \(d_i \in \mathcal{C}\) 的相似度。一种常见的方法是从两个文本中提取 \(k\)-gram(所谓的“shingles”),然后计算两个结果集合之间的 Jaccard 相似度。由于使用所有 shingles 计算 Jaccard 相似度仍然成本高昂,可以使用紧凑的概率性草图,例如 MinHash (Broder 1997 (https://arxiv.org/html/2607.10020#bib.bib6)),它通过在多个哈希函数下仅保留其 shingles 的最小哈希值来构建简短的文档签名。这些签名反过来可以使用局部敏感哈希 (LSH) 进行索引,该哈希将具有高相似度的候选文本分组在一起。

或者,可以依赖次优淘汰法从哈希序列中选择代表性指纹 (Schleimer et al. 2003 (https://arxiv.org/html/2607.10020#bib.bib23))。与 MinHash 不同,次优淘汰法保留位置信息,使其非常适合识别共享段落。次优淘汰法构成了FindMyText的骨干,如下一节所述。

#### 基于向量的方法

还可以通过将文档映射到稀疏或稠密向量空间,并在所选距离度量下检索接近 \(q\) 的文本 \(d_i \in \mathcal{C}\) 来检测重复。SimHash (Charikar 2002 (https://arxiv.org/html/2607.10020#bib.bib9)) 使用具有汉明距离的紧凑二进制嵌入,而 Retsim (Zhang et al. 2024b (https://arxiv.org/html/2607.10020#bib.bib28)) 学习了一个专为重复检测量身定制的嵌入空间。SemDeDup (Abbas et al. 2023 (https://arxiv.org/html/2607.10020#bib.bib1)) 依赖于预训练模型的嵌入来捕获语义相似度。尽管这些方法对于检测全局相似的文档有效,但仅共享一小部分文本时,它们不太适合检测局部包含。

## 3 方法

### 3.1 预处理

#### 次优淘汰法

给定一个文本 \(d_i\),FindMyText首先将其分割成单词,提取其 shingles(\(k\)-gram)并将它们转换为哈希值。一个包含 \(n\) 个单词的文本将产生 \(n - k + 1\) 个哈希值。为了减少需要索引的哈希数量,我们依赖于次优淘汰法机制。给定一个哈希序列 \(h_1, ..., h_{n-k+1}\),我们滑动一个大小为 \(w\) 的窗口,并为每个窗口选择最小哈希值:

\[
m_i = \min \{ h_j \mid i \leq j \leq i + w - 1 \}.
\]

选择的最小值作为指纹保留,并去除重复项。这大大减少了需要保留的哈希数量,同时保留了指纹识别共享子串的能力:如 Schleimer et al. (2003) (https://arxiv.org/html/2607.10020#bib.bib23) 所示,任何长度至少为 \(k + w - 1\) 的子串保证产生至少一个公共指纹。

#### 索引

对于给定的文本 \(d_i\),次优淘汰法返回一个指纹(哈希值)列表及其各自的位置。然后,可以针对给定语料库 \(\mathcal{C}\) 中的每个文档提取这些指纹,并将其存储在倒排索引中,该索引将每个哈希值 \(h_i\) 映射到一个 \((doc\_id, pos)\) 对列表,其中 \(pos\) 是文档中指纹的位置(字符级偏移)。这个倒排索引使我们能够高效地确定 \(\mathcal{C}\) 中哪些文档包含给定的一组 \(k\)-gram。

### 3.2 文本包含检测

令 \(\mathcal{C}\) 为一个语料库,其经过次优淘汰的指纹已如上所述被索引,\(q\) 为一个查询文档。我们的目标是确定是否存在文档 \(d_i \in \mathcal{C}\) 与 \(q\) 共享一些文本内容。这可以通过一个文本包含分数 \(s(q, d_i)\) 来形式化,该分数可以使用以下两种策略计算。

#### 共享指纹数量

令 \(\mathcal{F}(\cdot)\) 表示从文档中提取的指纹集合。文本包含的一个简单度量是 \(q\) 和 \(d_i\) 共享的唯一指纹数量:

\[
s_{\text{nb\_shared}}(q, d_i) = |\mathcal{F}(q) \cap \mathcal{F}(d_i)| \tag{1}
\]

注意,与常用于近乎重复检测的 Jaccard 相似度 (Broder 1997 (https://arxiv.org/html/2607.10020#bib.bib6)) 不同,\(s_{\text{nb\_shared}}(q, d_i)\) 分数未按从 \(q\) 和 \(d_i\) 提取的指纹总数进行归一化,因为这里的目标是衡量文本包含而非文本相似度。

\(s_{\text{nb\_shared}}(q, d_i)\) 评分函数忽略了指纹的位置。然而,共享的文本片段应使其指纹以相同顺序出现且间距大致相同。这可以通过下一种方法捕获。

#### 指纹链识别

令 \(h \in \mathcal{F}(q) \cap \mathcal{F}(d_i)\) 表示 \(q\) 和 \(d_i\) 之间的一个共享指纹。由于次优淘汰法保留了位置信息,我们可以访问其在查询文档 \(q\) 中的位置 \(p_q(h)\) 以及在语料库文本 \(d_i\) 中的位置 \(p_{d_i}(h)\)。基于这两个字符级位置,我们可以定义两者之间的位置偏移 \(\delta(h) = p_{d_i}(h) - p_q(h)\)。共享指纹可以表示为二维空间中的点 \((p_q(h), \delta(h))\),如图 2 (https://arxiv.org/html/2607.10020#S3.F2) 所示。

我们方法的关键直觉是,共享文本片段在该空间中产生了几何上一致的结构。更准确地说,在 \(q\) 和 \(d_i\) 中都发现的文本片段将对应于一个指纹序列,其中 \(p_q\) 缓慢增加但 \(\delta\) 几乎恒定。

形式上,如果 \(\|p_q(h_i) - p_q(h_j)\| \leq \tau_{\text{pos}}\) 且 \(\|\delta(h_i) - \delta(h_j)\| \leq \tau_{\text{off}}\),我们将两个共享指纹 \(h_i\) 和 \(h_j\) 视为连接的,其中 \(\tau_{\text{pos}} = 30\) 控制重用段落中两个匹配之间的最大间隔,\(\tau_{\text{off}} = 10\) 控制两个文档之间相对偏移的变化程度(提供对小的局部插入或删除的鲁棒性)。提取连接的簇 \(\{C_k\}\),并丢弃任何少于 \(\kappa = 5\) 个指纹的簇。相似度分数即为最大簇的大小:

\[
s_{\text{chain}}(q, d_i) = \max_k |C_k| \tag{2}
\]

注意,当 \(h\) 在 \(q\) 中出现 \(n_{h,q}\) 次且在 \(d_i\) 中出现 \(n_{h,d_i}\) 次时,所有 \(n_{h,q} \times n_{h,d_i}\) 个位置对都被包括在内。

查看图注Figure 2: 用于识别指纹链的方法的图示。大小为 \(\geq \kappa\) 的簇以彩色显示,而无法连接到簇的指纹被忽略。此处最大簇有 6 个指纹,产生分数 \(s_{\text{chain}}(q, d_i) = 6\)。

## 4 实现

FindMyText是用 Python 实现的。它的使用过程如……

相似文章

AI生成文本检测中语言特征的系统性分析:跨领域与跨模型研究

arXiv cs.CL

一项大规模实证研究对284个语言特征在27个大语言模型和10个文本领域中的表现进行了分析,以评估哪些特征能够可靠地检测AI生成文本。研究发现,词汇丰富度指标是跨领域和跨模型最稳健的信号,而许多其他已提出的指标则高度依赖具体上下文。

Counter Turing Test 的发现:AI生成文本检测

arXiv cs.CL

本文介绍了 Counter Turing Test 共享任务在AI生成文本检测方面的发现,顶级系统在二分类任务中达到了完美表现,但在模型归因方面性能显著较低,突显了区分不同大语言模型输出的难度。