文本指纹算法和内容指纹系统介绍

文本指纹用于大量文本的去重和过滤,包括k-shingle、Simhash和Minhash算法。Simhash通过局部敏感哈希实现高效相似性判断,Minhash则通过最小哈希函数降低维度并保持相似性。内容指纹系统包括爬虫、指纹生成、存储、查询和数据分析等模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.       文本指纹介绍

Web大量上的网页集合里存在大量的重复内容网页,无论对于搜索引擎的网页去重和过滤、新闻小说等内容网站的内容反盗版和追踪、还是社交媒体等文本去重和聚类,都需要对网页或者文本进行去重和过滤。

最简单的文本相似性计算方法可以利用空间向量模型,计算分词后的文本的特征向量的相似性,这种方法存在效率的严重弊端,无法针对海量的文本进行两两的相似性判断。模仿生物学指纹的特点,对每个文本构造一个指纹,来作为该文本的标识,从形式上来看指纹一般为固定长度较短的字符串,相同指纹的文本可以认为是相同文本。

最简单的指纹构造方式就是计算文本的md5或者sha哈希值,除非输入相同的文本,否则会发生“雪崩效应”,极小的文本差异通过md5或者sha计算出来的指纹就会不同(发生冲撞的概率极低),那么对于稍加改动的文本,计算出来的指纹也是不一样。

因此,一个好的指纹应该具备如下特点:

1.      指纹是确定性的,相同的文本的指纹是相同的;

2.      指纹越相似,文本相似性就越高;

3.      指纹生成和匹配效率高。

业界关于文本指纹去重的算法众多,如k-shingle算法、google提出的simhash算法、Minhash算法、top k最长句子签名算法等等,本文接下来将简单介绍各个算法以及指纹系统的基本架构和思路。


2.       常用的指纹算法


2.1   k-shingle算法

shingle在英文中表示相互覆盖的瓦片。对于一段文本,分词向量为[w1,w2, w3, w4, … wn], 设k=3,那么该文本的shingle向量表示为[(w1,w2,w3),(w2,w3,w4), (w3,w4,w5), …… (wn-2,wn-1,wn)],计算两个文本的shingle向量的相似度(jarccard系数)来判断文本是否重复。由于k-shingle算法的shingle向量空间巨大(特别是k特别大时),相比vsm更加耗费资源,一般业界很少采用这类算法。


2.2   Simhash算法

Simhash是google用来处理海量文本去重的算法,同时也是一种基于LSH(localitysensitive hashing)的算法。简答来说,和md5和sha哈希算法所不同,局部敏感哈希可以将相似的字符串hash得到相似的hash值,使得相似项会比不相似项更可能的hash到一个桶中,hash到同一个桶中的文档间成为候选对。这样就可以以接近线性的时间去解决相似性判断和去重问题。

simhash算法通过计算每个特征(关键词)的哈希值,并最终合并成一个特征值即指纹。

simhash算法流程

1.      首先基于传统的IR方法,将文章转换为

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值