深入浅出 k-Shingle:海量文本去重的防篡改利器
在文本挖掘和信息检索领域,-Shingle(通常也被称为 -gram)是一种将连续的文本切分成固定长度碎片的技术。它是海量文本去重(如 MinHash + LSH 架构)中极其关键的数据预处理阶段。
简单来说,它的核心任务是:把一篇文章(一维的字符串)转化成一个集合(Set),并且在这个集合中锁死文本的局部语序。
-Shingle 的工作原理就像一把长度为 的滑动尺子。尺子从文本的开头开始,每次框住 个单位的内容作为一个 Shingle,然后向右平移一个单位,重复这个过程,直到文本结束。
根据具体需求,这里的“单位”可以是字符(Character),也可以是单词(Word):
- 基于字符的 -Shingle:通常用于拼写检查、DNA 序列分析或中文字符处理。
- 基于单词的 -Shingle:通常用于英文等有天然空格分隔的文本去重与防抄袭。
我们以短语 abcde 为例,来看看在不同的 值下,基于字符切分出来的 -Shingle 集合是什么样的:
- 当 时(尺子长度为 1):每次只框一个字母。
- 集合结果:
{ "a", "b", "c", "d", "e" }
当 k=2k = 2k=2 时(尺子长度为 2):第一次框 ab