一、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