关于局部敏感哈希算法,之前用R语言实现过,但是由于在R中效能太低,于是放弃用LSH来做相似性检索。学了Python发现很多模块都能实现,而且通过随机投影森林让查询数据更快,觉得可以试试大规模应用在数据相似性检索+去重的场景。

私认为,文本的相似性可以分为两类:一类是机械相似性;一类是语义相似性。
机械相似性代表着,两个文本内容上的相关程度,比如“你好吗”和“你好”的相似性,纯粹代表着内容上字符是否完全共现,应用场景在:文章去重;
语义相似性代表着,两个文本语义上的相似程度,比如“苹果”和“公司”的相似性,本篇不做这一讨论

之前写关于R语言实现的博客:
R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)
R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(二,textreuse介绍)

机械相似性python版的四部曲:
LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)
LSH︱python实现局部敏感哈希——LSHash(二)
相似性︱python+opencv实现pHash算法+hamming距离(simhash)(三)
LSH︱python实现MinHash-LSH及MinHash LSH Forest——datasketch(四)
.


一、LSHash介绍

官方文档:https://github.com/kayzhu/LSHash

这个模块是python里面专门来实现LSH,比较特别的有:

  • 通过使用NumPy数组的计算将高维数据快速哈希。
  • 支持多哈希索引
  • 内置通常的距离函数/排名输出

安装

pip install lshash

.

1、主函数

LSHash(hash_size, input_dim, num_of_hashtables=1, storage=None, matrices_filename=None, overwrite=False)
  • hash_size:

二进制散列的长度。

  • input_dim:

输入变量的维度

  • num_hashtables = 1:

(optional)多索引查询时哈希表数量。

  • storage = None:
    Specify the name of the storage to be used for the index storage. Options include “redis”.
    存储

  • matrices_filename = None:

文档存储,以.npz方式

  • overwrite = False:

是否覆盖原文件
.

2、函数:lsh.index(input_point, extra_data=None)

  • input_point:

输入

  • extra_data = None:

(optional) Extra data to be added along with the input_point.
.

3、查询函数:lsh.query(query_point, num_results=None, distance_func=”euclidean”):

  • query_point:

The query data point is an array or tuple of numbers of input_dim.

  • num_results = None:

(optional) The number of query results to return in ranked order. By default all results will be returned.

  • distance_func = “euclidean”:

强调:这里的距离函数有,euclidean,true_euclidean,centred_euclidean,cosine,l1norm,hamming等多种。默认是euclidean 距离。

.


二、简单案例

>>> from lshash import LSHash>>> lsh = LSHash(6, 8)
>>> lsh.index([1,2,3,4,5,6,7,8])
>>> lsh.index([2,3,4,5,6,7,8,9])
>>> lsh.index([10,12,99,1,5,31,2,3])
>>> lsh.query([1,2,3,4,5,6,7,7])
[((1, 2, 3, 4, 5, 6, 7, 8), 1.0),((2, 3, 4, 5, 6, 7, 8, 9), 11)]

LSHash(6, 8),创建一个8维度,6-bits的哈希,初始化一下;
lsh.index,数据载入的过程;
lsh.query,查询。
这里可以选择自己喜欢的距离。

LSH︱python实现局部敏感哈希——LSHash(二)相关推荐

  1. LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)

    关于局部敏感哈希算法,之前用R语言实现过,但是由于在R中效能太低,于是放弃用LSH来做相似性检索.学了python发现很多模块都能实现,而且通过随机投影森林让查询数据更快,觉得可以试试大规模应用在数据 ...

  2. 局部敏感哈希算法(Locality Sensitive Hashing)

    from:https://www.cnblogs.com/maybe2030/p/4953039.html 阅读目录 1. 基本思想 2. 局部敏感哈希LSH 3. 文档相似度计算 局部敏感哈希(Lo ...

  3. 【算法】局部敏感哈希 LSH 的 Python 实现

    一.哈希算法 普通的哈希算法:把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值. 最理想的是所有不同的输入都可以映射到散列值,但是存在这种可能性的.当不同的输入映射到相同的散列值时, ...

  4. 在茫茫人海中发现相似的你——局部敏感哈希(LSH)

    一.引入 在做微博文本挖掘的时候,会发现很多微博是高度相似的,因为大量的微博都是转发其他人的微博,并且没有添加评论,导致很多数据是重复或者高度相似的.这给我们进行数据处理带来很大的困扰,我们得想办法把 ...

  5. 【期外】 (一)关于LSH :局部敏感哈希算法

    LSH是我同学的名字,平时我会亲切的称呼他为离骚,老师好,左移(leftshift),小骚骚之类的,最近他又多了一个新的外号:局部敏感哈希(Locally sensitive hashing). 好了 ...

  6. 局部敏感哈希(LSH)

    一. 近邻搜索 局部敏感哈希,英文locality-sensetive hashing,常简称为LSH.局部敏感哈希在部分中文文献中也会被称做位置敏感哈希.LSH是一种哈希算法,最早在1998年由In ...

  7. mysql 查找相似数据_局部敏感哈希LSH(Locality-Sensitive Hashing)——海量数据相似性查找技术...

    一. 前言 最近在工作中需要对海量数据进行相似性查找,即对微博全量用户进行关注相似度计算,计算得到每个用户关注相似度最高的TOP-N个用户,首先想到的是利用简单的协同过滤,先定义相似性度量(cos,P ...

  8. R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 私认为,文本的相似性可以分为两类:一类是机械相 ...

  9. 最近邻和K近邻及其优化算法LSH(局部敏感哈希,Locality Sensitive Hashing) Kd-Tree

    引言 在处理大量高维数据时,如何快速地找到最相似的数据是一个比较难的问题.如果是低维的小量数据,线性查找(Linear Search)就可以解决,但面对海量的高维数据集如果采用线性查找将会非常耗时.因 ...

最新文章

  1. Yours的Ryan X Charles谈BCH驱动社交媒体
  2. JavaScript函数练习
  3. python中not加变量是_MyPython--基础篇--变量
  4. JAVA NIO 实例
  5. 原子变量 java_Java原子变量详解
  6. OpenCV-Python实战(番外篇)——利用增强现实制作美颜挂件,让你的照片与众不同
  7. Linux 内存管理之 SLUB分配器(6):slub debug 实例测试
  8. 双ESP分区的WinPE本地安装
  9. 巨佬Jake Wharton曾说过:一个App只需要一个Activity
  10. 继承viewgroup
  11. 虚拟机CentOS启动报错-entering emergency mode解决办法
  12. 自己总结的html+css试题
  13. 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十二)实现自定义左右滚动的信息块-仿蘑菇街
  14. Linux复习题:2判断题
  15. 计算机系统之设备管理
  16. 腾讯与阅文技术合作 微服务框架Tars再添PHP
  17. 第一范式、第二范式、第三范式、BCNF(BC范式)
  18. linux一切皆是文件_Linux中“一切皆文件”是什么意思?
  19. 第一天校内实训实习日志
  20. svn服务器迁移部分文件缺失,SVN仓库迁移(将一个仓库从一台服务上上转移到另一服务器上)...

热门文章

  1. LSF-SCNN:一种基于 CNN 的短文本表达模型及相似度计算的全新优化模型
  2. Javascript闭包简单理解
  3. 测试可变字符序列stringBuilder
  4. 人工智能语音交互技术与应用
  5. python3基础(九)内置函数
  6. AVFoundation 零碎知识
  7. ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
  8. SQLServer基本操作
  9. unity, StartCoroutine and StopCoroutine
  10. php -- 取日期