simhash算法:海量千万级的数据去重
simhash算法:海量千万级的数据去重
simhash算法及原理参考:
简单易懂讲解simhash算法 hash 哈希:https://blog.csdn.net/le_le_name/article/details/51615931
simhash算法及原理简介:https://blog.csdn.net/lengye7/article/details/79789206
使用SimHash进行海量文本去重:https://www.cnblogs.com/maybe2030/p/5203186.html#_label3
python实现:
python使用simhash实现文本相似性对比(全代码展示):https://blog.csdn.net/weixin_43750200/article/details/84789361
simhash的py实现:https://blog.csdn.net/gzt940726/article/details/80460419
python库simhash使用
详情请查看:https://leons.im/posts/a-python-implementation-of-simhash-algorithm/
(1) 查看simhash值
>>> from simhash import Simhash
>>> print '%x' % Simhash(u'I am very happy'.split()).value
9f8fd7efdb1ded7f
Simhash()接收一个token序列,或者叫特征序列。
(2)计算两个simhash值距离
>>> hash1 = Simhash(u'I am very happy'.split())
>>> hash2 = Simhash(u'I am very sad'.split())
>>> print hash1.distance(hash2)
(3)建立索引
simhash被用来去重。如果两两分别计算simhash值,数据量较大的情况下肯定hold不住。有专门的数据结构,参考:http://www.cnblogs.com/maybe2030/p/5203186.html#_label4
from simhash import Simhash, SimhashIndex
# 建立索引
data = {
u'': u'How are you I Am fine . blar blar blar blar blar Thanks .'.lower().split(),
u'': u'How are you i am fine .'.lower().split(),
u'': u'This is simhash test .'.lower().split(),
}
objs = [(id, Simhash(sent)) for id, sent in data.items()]
index = SimhashIndex(objs, k=10) # k是容忍度;k越大,检索出的相似文本就越多
# 检索
s1 = Simhash(u'How are you . blar blar blar blar blar Thanks'.lower().split())
print index.get_near_dups(s1)
# 增加新索引
index.add(u'', s1)
simhash算法:海量千万级的数据去重的更多相关文章
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...
- (转)提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- (转载)提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- mysql千万级大数据SQL查询优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- mysql千万级大数据SQL查询优化30条经验
转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...
- Mysql千万级大数据量查询优化
来源于:https://blog.csdn.net/A350204530/article/details/79040277 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...
- 30个mysql千万级大数据SQL查询优化技巧详解
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- Sql server 千万级大数据SQL查询优化的几点建议
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 千万级大数据的Mysql数据库SQL语句优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
随机推荐
- [Tool]截屏利器FSCapture7.6下载
下载地址:https://pan.baidu.com/s/1XQ1P5hHwZd0NE7bdz_znQQ 或是:https://files.cnblogs.com/files/xiandedanten ...
- ModuleNotFoundError: No module named '_sqlite3'的解决办法:pipenv的用法
export PIPENV_VENV_IN_PROJECT=1pipenv --venvpipenv --where pipenv install -r requirements.txtpipenv ...
- GitHub:Alibaba
ylbtech-GitHub:Alibaba 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://github.com/alibaba 2. ...
- flutter Oops; flutter has exited unexpectedly
使用模拟器时执行flutter run 报出下面一大堆错误 注意只有模拟器有这种问题,真机可以正常运行 Oops; flutter has exited unexpectedly. Sending c ...
- [log4j]SLF4J+log4j的使用
使用log4j有两种方法,一种是直接使用log4j jar包,另一种是本文介绍的SLF4J+log4j的使用 概念 SLF4J:即简单日志门面(Simple Logging Facade fo ...
- OAUTH协议介绍
OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可 ...
- spring boot系列(一)spring boot 初识
什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员 ...
- 在vue中后台返回的文本包含标签时候解析为html代码
1.数据格式: str=‘<p>11111</p>' 解析方式一: <p v-html="str">{{str}}</p> 解析方式 ...
- /etc/shadow字段信息
root:$1$yOVPpScN$MlmYppDEYfwMMuDnthdIj.:18100:0:99999:7::: 与/etc/passwd文件中的登陆名称字段对应的登录名 加密后的密码 自上次修改 ...
- redhat 5 中文乱码
安装 1.fonts-chinese-3.02-9.6.el5.noarch.rpm. 如果无法安装,则加个--force 2.fonts-ISO8859-2-75dpi-1.0-17.1.noarc ...