Administrator
Published on 2026-03-13 / 3 Visits
0

文本相似度计算-SimHash

#AI

SimHash 是一种局部敏感哈希(LSH)算法,由Google在2007年提出,核心是将高维数据(如文本)映射为固定长度的二进制指纹,相似内容生成的指纹汉明距离小,差异大的内容汉明距离大,专门用于海量数据的近似去重与相似度检索

一、与传统哈希的核心区别

特性传统哈希(MD5/SHA)SimHash
设计目标雪崩效应(微小差异→完全不同)局部敏感(相似→相近)
用途数据完整性校验、加密大规模文本去重、相似检索
相似性判断只能判断完全相同可判断近似重复

二、SimHash 计算步骤(以64位文本指纹为例)

  1. 分词与权重:将文本分词,用TF-IDF等方法给每个词分配权重(重要词权重大)。
  2. 特征哈希:对每个词用普通哈希生成64位二进制串
  3. 加权累加:初始化64维全0向量;遍历每个词的哈希位:
    • 位为 1 → 该位**+权重**
    • 位为 0 → 该位**-权重**
  4. 二值化:累加向量中,正数→1,负数/0→0,得到64位SimHash指纹。

三、相似度判断:汉明距离

两个SimHash指纹对应位不同的位数汉明距离

  • 距离越小 → 文本越相似
  • 实践中常用阈值:64位SimHash,汉明距离≤3 视为近似重复。

四、典型应用场景

  • 搜索引擎网页去重(Google爬虫核心技术)
  • 大模型训练数据去冗余
  • 新闻/文章相似推荐
  • 版权检测、垃圾内容过滤

五、优缺点

  • ✅ 优点:O(n)复杂度、内存占用低、适合亿级数据
  • ❌ 缺点:对短文本效果一般;依赖分词与权重设计