文本字面相似度算法回顾整理

概述: 通常大家说的文本相似度多指文本语义的相似度,但是对于部分场景却会非常关注文本字面上的相似度,比如对于内容投放平台需要去判重,这就涉及看文本是否字面大量重复,需要去比较文本的字面相似度。 

梳理了下常用的字面相似度算法: 

文本字面相似度包括:

  • Simhash
  • 序列相似度(Sequence Similarity)
  • Jaccard相似度
  • 余弦相似度(Cosine Similarity)
  • Levenshtein距离
  • N-gram相似度

各种算法的概述: 

1、Simhash相似度
  • 主要思想: Simhash是一种局部敏感哈希算法,旨在快速检测近似重复的文档。它将长文本或文档转换为固定长度的指纹(通常是64位整数),使得相似的文档会产生相似的指纹。SimHash算法是Google在2007年发表的论文《Detecting Near-Duplicates for Web Crawling》中提到的一种指纹生成算法,被应用在Google搜索引擎网页去重的工作之中。

实现步骤:

  • 将文档分割成特征(如词或n-gram)
  • 对每个特征计算哈希值
  • 对每个哈希值的每一位进行加权
  • 合并所有特征的加权结果
  • 对合并结果进行阈值化,得到最终的指纹

应用场景: 

  • 网页去重
  • 文档相似度检测
  • 抄袭检测

对于文本去重这个问题,常见的解决办法有余弦算法、欧式距离、Jaccard相似度、最长公共子串等方法。但是这些方法并不能对海量数据高效的处理。
比如说,在搜索引擎中,会有很多相似的关键词,用户所需要获取的内容是相似的,但是搜索的关键词却是不同的,如“北京好吃的火锅“和”哪家北京的火锅好吃“,是两个可以等价的关键词,然而通过普通的hash计算,会产生两个相差甚远的hash串。而通过SimHash计算得到的Hash串会非常的相近,从而可以判断两个文本的相似程度。

通过对不同文本的SimHash值进而比较海明距离,从而判断两个文本的相似度。海明距离越小,相似度越低(根据 Detecting Near-Duplicates for Web Crawling 论文中所说),一般海明距离为3就代表两篇文章相同。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值