mysql 海明距离,golang 实现海明距离 demo
package main
import ("fmt"
"math"
"strconv"
"strings")
type SimHash struct {
IntSimHash int64
HashBitsint}
func main() {
str := "夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息"str2 := "夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息夜空中最亮的星是否记清那仰望的人 心里的孤独和叹息"
//str3:="nai nai ge xiong cao"s :=params()//str hash 值
hash :=s.Simhash(str)
fmt.Println(hash)//str2 距离
hash2 :=s.Simhash(str2)
fmt.Println(hash2)//计算相似度
sm :=s.Similarity(hash, hash2)
fmt.Println(sm)//距离
ts :=s.HammingDistance(hash, hash2)
fmt.Println(ts)
}/**距离 补偿*/func (s*SimHash) HammingDistance(hash, other int64) int{
x := (hash ^ other) & ((1 << uint64(s.HashBits)) - 1)
tot := 0for x!= 0{
tot+= 1x&= x - 1}
return tot
}/**相似度*/func (s*SimHash) Similarity(hash, other int64) float64 {
a :=float64(hash)
b :=float64(other)if a >b {
return b/a
}
return a/b
}/**海明距离hash*/func (s*SimHash) Simhash(str string) int64 {
m := strings.Split(str, " ")
token_int := make([]int, s.HashBits)
for i := 0; i < len(m); i++{
temp :=m[i]
t :=s.Hash(temp)
for j := 0; j < s.HashBits; j++{
bitMask := int64(1 <
token_int[j]+= 1} else {
token_int[j]-= 1}
}
}
var fingerprint int64= 0for i := 0; i < s.HashBits; i++{if token_int[i] >= 0{
fingerprint+= 1 <
}
}
return fingerprint
}/**初始化*/func params() (s*SimHash) {
s= &SimHash{}
s.HashBits= 64return s
}/**hash 值*/func (s*SimHash) Hash(token string) int64 {if token == ""{
return0} else {
x := int64(int(token[0]) << 7)
m := int64(1000003)
mask := math.Pow(2, float64(s.HashBits-1))
s := strconv.FormatFloat(mask, 'f', -1, 64)
tsk, _ := strconv.ParseInt(s, 10, 64)
for i := 0; i < len(token); i++{
tokens := int64(int(token[0]))
x= ((x * m) ^ tokens) &tsk
}
x^=int64(len(token))if x == -1{
x= -2}
return int64(x)
}
}
mysql 海明距离,golang 实现海明距离 demo相关推荐
- Java实现世代距离_IGD反转世代距离-多目标优化评价指标概念及实现
IGD反转世代距离-多目标优化评价指标概念及实现 觉得有用的话,欢迎一起讨论相互学习~ 参考资料 多目标进化优化[1]-郑金华老师,邹娟老师著 实验室人手一本人人必看的宝藏图书! IGD(Invert ...
- 机器学习两种距离——欧式距离和马氏距离
我们熟悉的欧氏距离虽然很有用,但也有明显的缺点.它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.例如,在教育研究中,经常遇到对人的分析和判别,个体的不同属性对于区 ...
- MySql Socket 完成数据库的增查Demo
需求: 利用MySql数据库结合前端技术完成用户的注册(要求不使用Web服务技术),所以 Demo采用Socket技术实现Web通信. 第一部分:数据库创建 数据库采用mysql 5.7.18, 数据 ...
- [机器学习-概念] 什么是欧式距离、标准化欧式距离、马氏距离、余弦距离
1.欧式距离(Euclidean Distance) 欧式距离源自N维欧氏空间中两点x1,x2x_1,x_2x1,x2间的距离公式: 2.标准化欧式距离(Standardized Euclidea ...
- ML:图像数据、字符串数据等计算相似度常用的十种方法(余弦相似性、皮尔逊、闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离、马氏距离、汉明距离、编辑距离、杰卡德相似系数、相对熵/KL散度、Helli
ML:图像数据.字符串数据等计算相似度常用的十种方法(余弦相似性.皮尔逊.闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离.马氏距离.汉明距离.编辑距离.杰卡德相似系数.相对熵/KL散度.Helli ...
- (《机器学习》完整版系列)附录 ——7、有趣的距离与范数(距离是两点之间的,如果将一个点固定在原点,则为向量的范数)
聚类的相似度通常用距离来刻划,距离又分为"(度量)距离"和"非度量距离","度量距离"由四条基本性质而"非度量距离"少满 ...
- 简单粗暴理解与实现机器学习之K-近邻算法(三):距离度量、欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化距离、余弦距离、汉明距离、杰卡德距离、马氏距离
K-近邻算法 文章目录 K-近邻算法 学习目标 1.3 距离度量 1 欧式距离**(Euclidean Distance):** 2 **曼哈顿距离(Manhattan Distance):** 3 ...
- 什么是范数,及其对应的 “曼哈顿距离“、“欧式距离“、“闵氏距离“、“切比雪夫距离“
什么是范数,及其对应的 "曼哈顿距离"."欧式距离"."闵氏距离"."切比雪夫距离" 一.什么是范数 二.欧式距离(对应 ...
- 常见的几种距离量度(欧式距离、曼哈顿距离、切比雪夫距离等)
在机器学习和数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.本文介绍几种常用的距离量度方法. 一.欧氏距离(Euclidean Distance) 我们从最常见的欧式距离 ...
最新文章
- WAIC 2021 | 思谋科技刘枢:赋能制造业需要什么样的算法平台?
- java内部类和匿名类
- 征战蓝桥 —— 2014年第五届 —— C/C++A组第9题——斐波那契
- android PreferenceActivity详解
- cocos2dx标准容器_cocos2dx[3.2](24)——内存管理机制
- wifi 信道_说了这么久的信道和频宽,这回总算能弄明白啦
- appsettings 连接oracle数据库,ABP .net core集成访问Oracle数据库
- tecplot对数坐标轴怎么画_一次更换双速风机接线经历,想通了改变磁极对数原理...
- dao层如何调用对象_以k8s集群管理为例,大牛教你如何设计优秀项目架构
- 无人车系统(四):轨迹跟踪PID控制
- 雄迈摄像头ffmpeg转码推送至websocket
- java bitset javadoc,BitSet的源码研究
- 亚楠魔域单机V6一键端分享
- Ireport 子报表分页
- c语言第二版第三章答案,C语言程序设计(第2版) 刘克威,张凌晓著 习题答案-第三章...
- systemverilog : constraint slove... before 详解
- 2018年物联网趋势
- 用c语言程序判断谁是小偷
- 京东小程序开放平台,他来了
- L1和L2 复习问题