您的位置:首页 > 其它

文本相似度计算的几个距离公式(欧氏距离、余弦相似度、Jaccard距离、编辑距离)

2017-06-08 21:57 357 查看
本文主要讲一下文本相似度计算的几个距离公式,主要包括:欧氏距离、余弦相似度、Jaccard距离、编辑距离。

距离计算在文本很多场景下都可以用到,比如:聚类、K近邻、机器学习中的特征、文本相似度等等。接下来就一一介绍一下:

假设两个文本X=(x1, x2, x3,...xn)和Y=(y1, y2, y3, ..., yn),其向量表示分别为:Vec(X) = (v1, v2, v3, ... vp), Vec(Y) = (l1, l2, l3, ... lp)

1.欧式距离

欧式距离也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。

计算公式如下:



2.余弦相似度

余弦相似度用向量空间中两个向量的夹角的余弦值来衡量两个文本间的相似度,相比距离度量,余弦相似度更加注重两个向量在方向上的差异,一般情况下,用Embedding得到两个文本的向量表示之后,可以使用余弦相似度计算两个文本之间的相似度。

计算公式如下:



3.Jaccard距离

Jaccard距离用于计算符号度量或者布尔值度量的两个个体之间的相似度,由于个体的特征属性是用符号或者布尔值度量的,所以只能统计包含的共同特征个数。

计算公式如下:



4.编辑距离

编辑距离主要用来计算两个字符串的相似度,其定义如下:

设有字符串A和B,B为模式串,现给定以下操作:从字符串中删除一个字符;从字符串中插入一个字符;从字符串中替换一个字符。通过以上三种操作,将字符串A编辑为模式串B所需的最小操作数称为A和B的最短编辑距离,记为ED(A,B)。

求解最短编辑距离的算法描述如下:

用一个二维数组ED[i][j]表示字符串A的前i个字符编辑成字符串B的前j个字符所需的最小操作数。则ED[i][j]的递推公式为:

⑴ ED[i][0]=i,ED[0][j]=j,其中0≤i≤A.len,0≤j≤B.len;

⑵ 若A[i]=B[j],则ED[i][j]=ED[i-1][j-1];

⑶ 若A[i]≠B[j],则ED[i][j]=min⁡(ED[i-1][j-1],ED[i][j-1],ED[i-1][j])+1。

编辑距离越小,说明两个字符串越相似。反之,越不相似。

以上只是距离计算公式的常见的四种,还有很多种距离计算公式,以后如果用到了会继续添上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: