Simhash源码学习

这篇博客主要探讨了Simhash算法,包括初始化和计算文本相似度的两个步骤。SimhashIndex部分则介绍了用于对一组数据进行Simhash判断的关键方法。
摘要由CSDN通过智能技术生成

一、Simhash

传入对象为object,根据源码,支持传入Simhash对象、String文本、features数组、int数字,分别标识已构建的Simhash对象、计算相似度的context文本、已分好词的features数组(在simhash中称为特征)、已计算好hash值的数字

1、初始化

1、init()
根据传入对象构建Simhash对象,关键逻辑如下:
if isinstance(value, Simhash):
    self.value = value.value
elif isinstance(value, basestring):
    self.build_by_text(unicode(value))
elif isinstance(value, Iterable):
    self.build_by_features(value)
elif isinstance(value, numbers.Integral):
    self.value = value
else:
    raise Exception('Bad parameter with type {}'.format(type(value)))

分别展开来讲
1、传入Simhash和Integral(相比int,能够识别其他类型的数值,如int64、Python2中的Long等,可看做就是数字)就不多讲了,都表示已经构建好的Simhash了
2、传入String文本,会执行到build_by_text()方法
3、传入Iterable对象,会执行到build_by_features()方法

2、build_by_text(self, content)
源码如下:
def build_by_text(self, content):
    features = self._tokenize(content)
    feature
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值