距离计算在自然语言处理中得到广泛使用,不同距离计算方式应用与不同的环境,其中也产生了很多不同的效果。

1 余弦距离

余弦夹角也可以叫余弦相似度。集合中夹角可以用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。

余弦取值范围为[-1,1]。求得两个向量的夹角,并得出夹角对应的余弦值,词余弦值就可以用来表示这两个向量的相似性。夹角越小,趋近于0度,余弦值越接近于1,它们的方向就更加吻合,即更加相似。当两个向量的方向完全相反时,夹角的余弦取最小值-1。当余弦值为0时,两向量正交,夹角为90度。因此可以看出,余弦相似度于向量的幅值无关,于向量的方向相关。

公式描述:

Python代码实现:

 import numpy as np # np.dot(vec1,vec2) 量向量(数组):两个数组的点积,即元素对应相乘后求和 # np.linalg.norm(vec1):即求vec1向量的二范数(向量的模)  vec1 = [1,2,3,4] vec2 = [5,6,7,8] dist1 = np.dot(vec1, vec2)/(np.linalg.norm(vec1)*np.linalg.norm(vec2)) print("余弦距离测试结果为:"+str(dist1))

2 欧氏距离

欧几里得距离即欧几里得空间中两点间的直线距离。

Python实现:

 import numpy as np vec1 = np.mat([1,2,3,4]) # 生成numpy矩阵 vec2 = np.mat([5,6,7,8])  # 根据公式求解1 dist1 = np.sqrt(np.sum(np.square(vec1 - vec2))) print("欧式距离测试结果是:"+ str(dist1))  dist2 = np.sqrt((vec1-vec2)*(vec1-vec2).T) # 根据公式求解2 print("欧式距离测试结果是:"+ str(dist2))

3 曼哈顿距离

曼哈顿距离也成为城市街区距离。用来表示两个点在标准坐标系上的绝对轴距之和,即从一个路口到另外一个路口,驾驶距离不是两点之间的直线距离。

Python实现

 import numpy as np  vec1 = np.mat([1,2,3,4]) vec2 = np.mat([6,7,8,9]) dist = np.sum(np.abs(vec1 - vec2)) print("曼哈顿距离测试结果是:"+str(dist))

4 明可夫斯基距离

明氏距离又叫明可夫斯基距离,是欧氏空间中的一种测度,被看作欧氏距离和曼哈顿距离的一种推广。

  • 当p=1时,就是曼哈顿距离
  • 当p=2时,就是欧氏距离
  • 当p=3时,就是切比雪夫距离

python实现

可参照之前代码

5 切比雪夫距离

python实现

 import numpy as np vec1 = np.mat([1,2,3,4]) vec2 = np.mat([5,6,7,8]) dist = np.max(np.abs(vec1 - vec2)) print("切比雪夫距离测试结果是:" + str(dist))

6 杰卡德距离

杰卡德(Jaccard)相似系数:两个集合A和B的交集在元素在A、B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。杰卡德距离:在占比中所取的是两个集合中不同元素。

Python实现:

 import numpy as np v1 = np.random.random(10) > 0.5 # 生成10个true false数据(即0,1) v2 = np.random.random(10) > 0.5 vec1 = np.asanyarray(v1, np.int32) # 转换位0、1矩阵 vec2 = np.asanyarray(v2, np.int32) # 距离计算 up = np.double(np.bitwise_and((vec1 != vec2),np.bitwise_or(vec1 !=0,vec2!=0)).sum()) # 涉及到数学逻辑运算 down = np.double(np.bitwise_or(vec1 !=0 ,vec2!=0).sum()) # 取并集, (vec1 !=0 ,vec2!=0)先转对应元素为true ,false的矩阵 dist = (up/down) print("杰卡德距离测试结果是:"+str(dist))

7 汉明距离

在信息论中,两个登场字符串之间的汉明距离对应位置上的不同字符的个数。也就是说,将一个字符串变换成另一个字符串所需要替换的字符个数。

例如:“toned”与“roses”之间的汉明距离就是3

python实现:

 import numpy as np v1=np.random.random(10)>0.5 v2=np.random.random(10)>0.5 vec1=np.asarray(v1,np.int32) vec2=np.asarray(v2,np.int32) dist=np.mean(vec1!=vec2) # 取均值 print("汉明距离测试结果是:"+str(dist))

无向图中两点之间的距离_自然语言处理中距离计算总结相关推荐

  1. 无向图中两点之间的距离_九上数学:二次函数图像,一动点到两定点距离和最小...

    题目: 这是九年级上册数学配套练习册<人教金学典>上的一道选择题,学生普遍反映较难. 析解: 本题求△PMF周长的最小值,而两个定点之距FM已为定值,故实质上是求PF+PM最小值.由于已知 ...

  2. 根据经纬度计算地球上两点之间的距离——Haversine公式介绍及计算步骤

    目录 摘要 1.半正矢公式(Haversine Formula)介绍 2.半正矢公式应用 3.半正矢公式计算 3.1 主要思路 3.2 计算步骤 3.2.1 平面向量计算方法 3.2.2 空间向量计算 ...

  3. python 两点之间的距离_手把手教你HTML5实现根据LBS定位到商家两点之间距离多少...

    转载链接:https://juejin.im/post/5e7e126b51882573c508be13 背景 最近在做一个类似支付宝口碑商家的功能模块,其中有个功能就是计算出用户与商家的距离,如下图 ...

  4. python中求两点之间的距离_python – 列表中两点之间的距离公式

    我需要创建一个列表,找到最接近的两个点,然后打印出来.如何比较列表中的每个点? 没有任何需要绘制或任何东西,只是比较点,找到列表中最接近的两个. import math # 'math' needed ...

  5. pythonopencv测距_如何在opencv中测量两点之间的距离(像素到厘米)

    你好,我有一个代码,可以测量两点之间的距离,但我认为结果是以像素为单位的,所以想得到距离,但以厘米为单位. 我使用的是微软LifecamHD-3000摄像头,我真的不知道在代码的这一点上该怎么做. T ...

  6. JAVA利用数组求两点距离_利用java、js或mysql计算高德地图中两坐标之间的距离

    利用java.js或mysql计算高德地图中两坐标之间的距离 2019-09-19 编程之家收集整理的这篇文章主要介绍了利用java.js或mysql计算高德地图中两坐标之间的距离,编程之家小编觉得挺 ...

  7. 一般柱子与柱子的距离_建筑中柱子之间的距离多少为好?

    建筑中柱子之间的距离在3.8米到8米左右为好.建筑中最佳柱间距:办公建筑的柱间距6米:商铺柱间距8米:别墅柱间距4-5米:一般砖混结构柱间距3-4米:一般框架结构柱间距6-8米. 现代框架结构一般合理 ...

  8. Java对接高德地图计算距离_高德地图计算两点之间的距离java+html

    高德地图现在使用比较多了,但是高德地图计算两点之间的距离有些问题.下面提供一个很好的解决方案. 代码如下: /** * 两点的经纬度获取两点距离米 * @param (121.293986,37.27 ...

  9. 给定经纬度计算距离_根据经纬度计算地球上两点之间的距离js实现代码

    利用JS实现的根据经纬度计算地球上两点之间的距离 最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下. 计算地球表面两点间的距离大概有两种办法. 第一种是默认地球是一个光滑的球面 ...

最新文章

  1. 汇编语言中带点/小数点的是什么
  2. 猜数字游戏:随机键盘录入一个数字,看是否能猜正确
  3. 《AlwaysRun团队》第三次作业:团队项目的原型设计
  4. html传值方式有哪几种,关于html页面间传值的几种方法
  5. vue 2.0 :key的作用
  6. tcpwrapper的使用方法
  7. 上阿坤的课程的注意事项
  8. 安全手册(初稿)[转]
  9. Spark数据倾斜-采样倾斜key并分拆join操作-详细图解与代码
  10. drools。drools_Drools:fireAllRules,fireUntilHalt和Timers内部代码清理的详细说明
  11. 不说“安全”俩字,如何证明自己是做安全的?
  12. 哪个计算机无法做到双屏显示,[工具/ PC]如何在计算机上实现双屏显示?
  13. ubuntu终端颜色配置
  14. String的indexOf()用于获取字符串中某个子字符串的位置
  15. 软件外包中常见的七个错误之一 - 不懂用户需求
  16. SqliteDev如何突破限制
  17. Mac新手操作指南(三)
  18. 如何用c语言编辑定时关机程序有说明的,C语言编写的定时关机程序
  19. 用transform:scale();缩放
  20. java数据结构 农夫过河_数据结构笔记分享:18 农夫过河(图的算法运用)

热门文章

  1. 设置c++程序的堆栈空间解决栈溢出问题
  2. javascript:void(0)的作用示例
  3. GitHub:攻击者正在利用被盗 OAuth 令牌攻击数十家组织机构
  4. Squirrel Engine 曝漏洞,可导致攻击者入侵游戏和云服务
  5. Google Update Service 被曝提权 0day,谷歌拒绝修复
  6. 攻击者可提前检测到 Linux 内核的补丁并开发 exploit
  7. 近300个 Windows 10 可执行文件易受 DLL 劫持攻击
  8. VMware 软件被曝其史上最严重的信息泄露漏洞之一,影响大量虚拟机和主机
  9. linux Redhat6.5 中 编译安装apache
  10. Mycat适合场景及不适合场景