LSH︱python实现局部敏感哈希——LSHash(二)
关于局部敏感哈希算法,之前用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(二)相关推荐
- LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)
关于局部敏感哈希算法,之前用R语言实现过,但是由于在R中效能太低,于是放弃用LSH来做相似性检索.学了python发现很多模块都能实现,而且通过随机投影森林让查询数据更快,觉得可以试试大规模应用在数据 ...
- 局部敏感哈希算法(Locality Sensitive Hashing)
from:https://www.cnblogs.com/maybe2030/p/4953039.html 阅读目录 1. 基本思想 2. 局部敏感哈希LSH 3. 文档相似度计算 局部敏感哈希(Lo ...
- 【算法】局部敏感哈希 LSH 的 Python 实现
一.哈希算法 普通的哈希算法:把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值. 最理想的是所有不同的输入都可以映射到散列值,但是存在这种可能性的.当不同的输入映射到相同的散列值时, ...
- 在茫茫人海中发现相似的你——局部敏感哈希(LSH)
一.引入 在做微博文本挖掘的时候,会发现很多微博是高度相似的,因为大量的微博都是转发其他人的微博,并且没有添加评论,导致很多数据是重复或者高度相似的.这给我们进行数据处理带来很大的困扰,我们得想办法把 ...
- 【期外】 (一)关于LSH :局部敏感哈希算法
LSH是我同学的名字,平时我会亲切的称呼他为离骚,老师好,左移(leftshift),小骚骚之类的,最近他又多了一个新的外号:局部敏感哈希(Locally sensitive hashing). 好了 ...
- 局部敏感哈希(LSH)
一. 近邻搜索 局部敏感哈希,英文locality-sensetive hashing,常简称为LSH.局部敏感哈希在部分中文文献中也会被称做位置敏感哈希.LSH是一种哈希算法,最早在1998年由In ...
- mysql 查找相似数据_局部敏感哈希LSH(Locality-Sensitive Hashing)——海量数据相似性查找技术...
一. 前言 最近在工作中需要对海量数据进行相似性查找,即对微博全量用户进行关注相似度计算,计算得到每个用户关注相似度最高的TOP-N个用户,首先想到的是利用简单的协同过滤,先定义相似性度量(cos,P ...
- R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 私认为,文本的相似性可以分为两类:一类是机械相 ...
- 最近邻和K近邻及其优化算法LSH(局部敏感哈希,Locality Sensitive Hashing) Kd-Tree
引言 在处理大量高维数据时,如何快速地找到最相似的数据是一个比较难的问题.如果是低维的小量数据,线性查找(Linear Search)就可以解决,但面对海量的高维数据集如果采用线性查找将会非常耗时.因 ...
最新文章
- Yours的Ryan X Charles谈BCH驱动社交媒体
- JavaScript函数练习
- python中not加变量是_MyPython--基础篇--变量
- JAVA NIO 实例
- 原子变量 java_Java原子变量详解
- OpenCV-Python实战(番外篇)——利用增强现实制作美颜挂件,让你的照片与众不同
- Linux 内存管理之 SLUB分配器(6):slub debug 实例测试
- 双ESP分区的WinPE本地安装
- 巨佬Jake Wharton曾说过:一个App只需要一个Activity
- 继承viewgroup
- 虚拟机CentOS启动报错-entering emergency mode解决办法
- 自己总结的html+css试题
- 【安卓-自定义布局】安卓App开发思路 一步一个脚印(十二)实现自定义左右滚动的信息块-仿蘑菇街
- Linux复习题:2判断题
- 计算机系统之设备管理
- 腾讯与阅文技术合作 微服务框架Tars再添PHP
- 第一范式、第二范式、第三范式、BCNF(BC范式)
- linux一切皆是文件_Linux中“一切皆文件”是什么意思?
- 第一天校内实训实习日志
- svn服务器迁移部分文件缺失,SVN仓库迁移(将一个仓库从一台服务上上转移到另一服务器上)...
热门文章
- LSF-SCNN:一种基于 CNN 的短文本表达模型及相似度计算的全新优化模型
- Javascript闭包简单理解
- 测试可变字符序列stringBuilder
- 人工智能语音交互技术与应用
- python3基础(九)内置函数
- AVFoundation 零碎知识
- ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
- SQLServer基本操作
- unity, StartCoroutine and StopCoroutine
- php -- 取日期