Simhash_hartwig

Simhash_hartwig先贴一张网上的图片:解释一下图片:这里feature可以指一篇文档分词后的某个词,即将文档中的某个词作为一个特征。weight是这个词的权重,这里可以是这个词在这个句子中出现的次数。这里的hash算法就是传统的hash算法,通过调用一个hash函数实现的。simhash是为了计算一篇文档之间的相似度存在的,通过simhash算法可以计算出文档的simhash值,通过各个文档计算出的…


Jetbrains全系列IDE稳定放心使用

先贴一张网上的图片:

这里写图片描述

解释一下图片:这里feature可以指一篇文档分词后的某个词,即将文档中的某个词作为一个特征。weight是这个词的权重,这里可以是这个词在这个句子中出现的次数。

这里的hash算法就是传统的hash算法,通过调用一个hash函数实现的。

simhash是为了计算一篇文档之间的相似度存在的,通过simhash算法可以计算出文档的simhash值,通过各个文档计算出的二进制值来计算文档之间的汉明距离,然后根据汉明距离来比较文档之间的相似度。汉明距离是指两个相同长度的字符串相同位置上不同的字符的个数。

simhash算法分为5个步骤:分词、hash、加权、合并、降维,具体过程如下所述:

分词
给定一段语句,进行分词,得到有效的特征向量,然后为每一个特征向量设置1-5等5个级别的权重(如果是给定一个文本,那么特征向量可以是文本中 的词,其权重可以是这个词出现的次数)。例如给定一段语句:“CSDN博客结构之法算法之道的作者July”,分词后为:“CSDN 博客 结构 之 法 算法 之 道 的 作者 July”,然后为每个特征向量赋予权值:CSDN(4) 博客(5) 结构(3) 之(1) 法(2) 算法(3) 之(1) 道(2) 的(1) 作者(5) July(5),其中括号里的数字代表这个单词在整条语句中的重要程度,数字越大代表越重要。
hash
通过hash函数计算各个特征向量的hash值,hash值为二进制数01组成的n-bit签名。比如“CSDN”的hash值Hash(CSDN)为100101,“博客”的hash值Hash(博客)为“101011”。就这样,字符串就变成了一系列数字。
加权
在hash值的基础上,给所有特征向量进行加权,即W = Hash * weight,且遇到1则hash值和权值正相乘,遇到0则hash值和权值负相乘。例如给“CSDN”的hash值“100101”加权得 到:W(CSDN) = 100101*4 = 4 -4 -4 4 -4 4,给“博客”的hash值“101011”加权得到:W(博客)=101011*5 = 5 -5 5 -5 5 5,其余特征向量类似此般操作。
合并
将上述各个特征向量的加权结果累加,变成只有一个序列串。拿前两个特征向量举例,例如“CSDN”的“4 -4 -4 4 -4 4”和“博客”的“5 -5 5 -5 5 5”进行累加,得到“4+5 -4+-5 -4+5 4+-5 -4+5 4+5”,得到“9 -9 1 -1 1”。
降维
对于n-bit签名的累加结果,如果大于0则置1,否则置0,从而得到该语句的simhash值,最后我们便可以根据不同语句simhash的海 明距离来判断它们的相似度。例如把上面计算出来的“9 -9 1 -1 1 9”降维(某位大于0记为1,小于0记为0),得到的01串为:“1 0 1 0 1 1”,从而形成它们的simhash签名。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188117.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • word 里域代码显示设定

    word 里域代码显示设定1.问题点:WindowsWord里copy&paste时,突然会出现下面的内容。2.解决方案1上述显示的域代码而不是域值。查了一下,可以使用Alt+F9来切换显示域代码&域值。(另:Shift+F9可以切换指定的区域)3.解决方案2在“选项”->”高级”->”显示文档内容”:勾掉”显示域代码而非域值“即可设置

    2022年6月4日
  • 二级导航菜单[通俗易懂]

    二级导航菜单[通俗易懂]本文用html5+css实现了二级导航菜单,二级导航菜单在网站建设中使用的越来越广泛。效果图如下:当鼠标悬停在一级菜单上时,出现二级下拉菜单二级下拉菜单可以被选中,当鼠标悬停上去时,变色。html代码<!DOCTYPEhtml><html><head><metacharset="UTF-…

    2022年7月26日
  • 免费开源的服务器虚拟化Proxmox+分布式存储Ceph(二)

    免费开源的服务器虚拟化Proxmox+分布式存储Ceph(二)

    2021年6月16日
  • 基于nsga2的多目标柔性车间调度问题matlab[通俗易懂]

    基于nsga2的多目标柔性车间调度问题matlab[通俗易懂]主函数:%主函数functionnsga2_schedulingclearall;clc;pop=200;%种群数量gen=10;%迭代次数pop_f=100;%父代种群数量data_mac;%载入车间设备信息data_pro;%载入待加工工件信息pro_matrix=[];%包含工序及目标函数值的决策矩阵mac_matrix=[];%包含设备染色体信息的决策矩阵fori=1:pop_

    2022年5月12日
  • linux命令保存并退出_vim退出命令

    linux命令保存并退出_vim退出命令如何快速保存退出vim在普通模式(进入vim时的模式)下按shift+zz

    2022年8月24日
  • java.nio.heapbytebuffer_javastringbuffer和string区别

    java.nio.heapbytebuffer_javastringbuffer和string区别文章目录简介初始化向ByteBuffer写数据手动写入数据从SocketChannel中读入数据至ByteBuffer从ByteBuffer中读数据复位position读取数据字节序处理简介在Java的Socket编程中,若使用阻塞式(BIO),则往往通过ServerSocket的accept()方法获取到客户端Socket之后,再使用客户端Socket的InputStream和OutputS…

    2022年10月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号