Simhash在内容去重中的应用

e7108e385c161f87303507f3f328e2df.jpeg

0d44fbd14be2387245d1320465bfa57e.gif

本文字数:2873

预计阅读时间:15分钟

30fb61665fc898eb2ce2dc62f1bf13e6.png

01

一、背

信息流个性化推荐场景中依赖爬虫抓取的海量新闻库,这些新闻中不乏互相抄袭的新闻,这些内容相似的文章,会造成内容的同质化并加重数据库的存储负担,更糟糕的是降低了信息流内容的体验。所以需要一种准确高效的文本去重算法。而最朴素的做法就是将所有文本进行两两比较,简单易理解,最符合人类的直觉,这种做法对于少量文本来说,实现起来很方便,但是对于海量文本来说是行不通的,所以应在尽可能保证准确性的同时,降低算法的时间复杂度。事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离、海明距离或者余弦角度等等。下面以余弦相似度和simhash算法为例做简单介绍。

1.1余弦相似度

余弦相似度的核心思想是计算两个向量的夹角余弦值来判断两个句子的相似度,以下面两个句子为例:

第一步分词:

句子A:我/喜欢/看/电视,不/喜欢/看/电影

句子B:我/不/喜欢/看/电视,也/不/喜欢/看/电影

第二步列出所有词:

我,喜欢,看,电视,电影,不,也

第三步计算词频:

句子A:我1,喜欢2,看2,电视1,电影1,不1,也0

句子B:我1,喜欢2,看2,电视1,电影1,不2,也1

第四步,写出词向量:

句子A:[1,2,2,1,1,1,0]

句子B:[1,2,2,1,1,2,1]

到这里就可以将两个句子的相似度转换为两个向量的相似度,我们可以把这两个句子想象为空间中的两条线段,都是从原点[0,0,0...]出发,指向不同的方向,两条线段形成一个夹角,如果夹角为0,意味着方向相同线段重合,如果夹角为90度意味着形成直角,完全不相似,因此我们可以通过夹角来判断相似度,夹角越小就代表越相似。

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值