文本去重:sim哈希算法

article/2025/5/7 0:01:03

站在巨人_啊哈、zstu_翊、lengye7、黑夜路人的肩膀上~
分析数据前,我们需要对数据去重,如何选择和设计文本的去重算法?
常见的去重算法有:余弦夹角算法、欧式距离、Jaccard相似度、最长公共子串、编辑距离等。这些算法是先将两篇文章分别进行分词,得到一系列特征向量,然后计算特征向量之间的距离(可以计算它们之间的欧氏距离、海明距离或者夹角余弦等等),从而通过距离的大小来判断两篇文章的相似度。这些算法对于数据量小的文本还比较好用,我们如何对于这些海量千万级的数据进行高效的合并去重?

sim哈希算法原理

参考论文:Similarity estimation techniques from rounding algorithms,论文分为以下几部分,如下图所示:

1. 分词。 去停用词后,为每个词加上tf-idf权重。我们假设权重分为5个级别(1~5)。
例如:“ 美国“51区”雇员称内部有9架飞碟,曾看见灰色外星人 ” ==> 分词后为 “ 美国(4) 51区(5) 雇员(3) 称(1) 内部(2) 有(1) 9架(3) 飞碟(5) 曾(1) 看见(3) 灰色(4) 外星人(5)”,括号里是代表单词在整个句子里重要程度,数字越大越重要。
2. 哈希算法。 每个词通过hash函数生成固定位数二进制哈希值,要把文章变为数字计算才能提高相似度计算性能。
例如:“美国”通过hash算法计算为 100101,“51区”通过hash算法计算为 101011。
3. 加权。 根据步骤2哈希算法生成的结果,按照单词的权重形成加权数字串。
例如:“美国(4)”的hash值为“100101”,通过加权计算为“4 -4 -4 4 -4 4”;“51区(5)”的hash值为“101011”,通过加权计算为 “ 5 -5 5 -5 5 5”。
4. 合并。 分别把单个句子每个词的序列值累加生成对应的一个序列串。
例如:将步骤3中每个单词的序列值相加,结果为“17 -17 1 -1 1 17”。
5. 降维。 将步骤4单个句子生成的序列串变成0-1串,形成我们最终的simhash签名值。大于0 记为 1,小于0 记为 0。
例如:将步骤4中结果转换为“1 0 1 0 1 1”。
在这里插入图片描述
图1 sim哈希的计算过程

sim哈希算法应用

每篇文档得到Sim哈希签名值后,接着计算两个签名的海明距离即可。根据经验值,对64位的Sim哈希值,海明距离在3以内的可认为相似度比较高。

  • 海明距离的求法:异或,同0异1。两个二进制数“异或”后得到1的个数,即为海明距离的大小。

具体操作:

  1. 我们可以把 64 位的二进制simhash签名均分成4块,每块16位。根据鸽巢原理(也称抽屉原理),如果两个签名的海明距离在 3 以内,它们必有一块完全相同。如下图所示:
    在这里插入图片描述
  2. 把分成的4 块中的每一个块(即16位)分别作为前16位,生成四份table来进行查找。
  3. 采用精确匹配的方式查找前16位
  4. 如果样本库中存有234(差不多10亿)的哈希指纹,则每个table返回2(34-16)=262144个候选结果,大大减少了海明距离的计算成本。
    在这里插入图片描述

http://chatgpt.dhexx.cn/article/0k7cBp4D.shtml

相关文章

文本去重的技术方案讨论(一)

转发请注明出处:https://blog.csdn.net/HHTNAN 对于文本去重来说,我个人处理上会从数据量、文本特征、文本长度(短文本、长文本)几个方向考虑。 常见的去重任务,如网页去重,帖子去重,评论去重等…

git 生成公钥 及使用笔记

1.输入 ssh-keygen -t rsa -C 2101419675qq.com 2.一路回车, 提示输入文件名和密码都直接回车 3.公钥就生成了,路径为 4.在GitHub或gittree中直接将id_rsa.pub中的内的内容加在sskey中就行 下面是gittree 5.其它 mkdir test cd test git init touch …

git生成公钥私钥(windows)

配置用户名和邮箱 git config --global user.name "v_sunhaojie" $ git config --global user.email "v_sunhaojiebaidu.com" 会在当前用户的目录下(C:\Users\v_sunhaojie)生成 .gitconfig文件 [user] name v_sunhaojie email v_sunhaoji…

git生成公钥的步骤

git生成公钥的步骤 1. 设置Git账户2.生成命令 1. 设置Git账户 命令如下 git config user.name (查看git账户) git config user.email (查看git邮箱) git config --global user.name “账户名” (设置全局账户名和邮箱…

【Git】ssh公钥如何生成

1. 在C盘用户目录文件下找到.ssh文件(若之前未生成.ssh则进行第2步) 里面保存的是之前生成的文件,将.ssh文件夹删除。 2. 右键,点击git bash here,进入git界面 3. 输入ssh-keygen -t rsa -C *.com ,连点三…

git配置公钥

一、 生成.ssh文件 在桌面打开Git Bash,输入以下命令: ssh-keygen -t rsa -C "你的邮箱xxx.com"一直按回车,出现以下界面表示生成ssh文件成功 二、 找到id_rsa.pub文件 到C盘下找到.ssh文件夹:C:\Users\86187.ssh&am…

使用Git工具生成公钥与私钥

生成密钥对 keytool -genkeypair -alias shopping -keyalg RSA -keypass shopping -keystore shopping.jks -validity 365 -storepass shopping 解析私钥 keytool -list -rfc --keystore shopping.jks | openssl x509 -inform pem -pubkey 输入口令即可

超简单git生成ssh公钥(ssh-keygen)

首先在桌面右键,点击Git bash Here 在命令窗口输入 ssh-keygen -t rsa -C "你的邮箱地址" 回车 这时让你输入密码,这个密码会在你提交项目时使用 然后直接三个回车 到达最后 你会发现桌面上会有一个.pub的文件,右键用记事本打开…

【技术分享】Mac环境下git生成SSH公钥

文章目录 1.查看本机的ssh公钥2.生成ssh公钥 1.查看本机的ssh公钥 ①终端进入~/.ssh目录 cd ~/.ssh②使用ls命令查看,如果有id_rsa.pub文件说明已经生成了公钥。 ls③使用cat命令查看公钥具体内容,如下图所示 cat id_rsa.pub2.生成ssh公钥 注意XXXX…

git ssh key的配置,git生成ssh公钥

git clone支持https和git(即ssh)两种方式下载源码。 使用git方式下载时,如果没有配置过ssh key,则会有如下错误提示: 1.首先配置用户名,邮箱。 git config --global user.name "这里换上你的用户名…

【Git】Gitee生成/添加SSH公钥

Gitee 提供了基于SSH协议的Git服务,在使用SSH协议访问仓库之前,需要先配置好账户/仓库的SSH公钥。 按如下命令来生成 sshkey: ssh-keygen -t ed25519 -C "xxxxxxxxxx.com" 注意:这里的 xxxxxxxxxx.com 只是生成的 sshkey 的名称…

git生成ssh公钥

学习一下,感谢! gitee 步骤: 1.打开终端(git)进入.ssh目录 cd ~/.ssh 如果.ssh文件夹不存在,执行指令自动创建 mkdir ~/.ssh 2.生成RSA密钥对并进行命名 ssh-keygen -t rsa -C "你的邮箱xxx…

如何生成git公钥?

1、 打开git bash。 2、 执行ssh-keygen.exe命令。 此时到电脑的C–>users–>用户名文件夹–>.ssh文件夹下可以找到公有密钥的文件: 3、 执行cat ~/.ssh/id_rsa.pub,输出结果即为公钥。 注意:输出的公钥结果可能需要拷贝出…

GIT生成SSH公钥图文教程

GIT介绍 GIT是一种分布式版本控制系统,用于追踪文件的变化和协作开发。本文将详细介绍GIT的基本架构、工作流程和常用命令,并对其优势和应用场景进行分析。 1. GIT的基本架构 GIT的基本架构由三个主要组件组成:工作区(Working …

Git生成/添加SSH公钥

Git生成SSH密钥 git config --global user.name "kenny" 配置用户名 git config --global user.email "602118471qq.com" 配置邮箱 此时, 会在C:\Users\Administrator目录下生成.gitconfig配置文件: 请勿删除! ssh-key…

Git生成公钥

(1)第一次登录需要设置账号和密码。 (2)因为你的仓库属于私有的,组员也无法访问你远程仓库的代码。 我们可以通过公钥来允许其他成员以及自己来访问该仓库。 使用: ssh-keygen -t rsa 来帮你生成公钥。输入此命令再…

git生成公钥和私钥

1.打开Git Bash,输入ssh-keygen -t rsa -C “your_emailexample.com”,回车 提示要求输入将要生成的秘钥文件的路径,可以不输入,直接按enter保存在默认路径。这里,我直接按下enter 3.(可以不输入密码&…

Git生成生成公钥和私钥

Git配置 Git安装完之后,需做最后一步配置。打开git bash,分别执行以下两句命令 git config --global user.name “用户名” git config --global user.email “邮箱” 这二步必须执行 SSH配置 1、打开git bash 2、执行生成公钥和私钥的命令&#x…

Git生成公钥、私钥以及ssh key配置

一、公钥以及私钥的生成 首先设置Git 用户签名 1.打开安装好的Git Bash: 2.设置Git用户签名,执行以下命令: git config --global user.name 用户名git config --global user.email 邮箱执行之后打开C盘User目录,会看到Git 的配置…

Git生成公钥 bash:ssh-keygen command not found

公钥是CODE识别您的用户身份的一种认证方式,通过公钥,您可以将本地git项目与CODE建立联系,然后您就可以很方便的将本地代码上传到CODE,或者将CODE代码下载到本地了。 以下介绍生成公钥和管理公钥的方法。如果你是在windows系统下使…