文本相似度计算的几个距离公式(欧氏距离、余弦相似度、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。
编辑距离越小,说明两个字符串越相似。反之,越不相似。
以上只是距离计算公式的常见的四种,还有很多种距离计算公式,以后如果用到了会继续添上。
距离计算在文本很多场景下都可以用到,比如:聚类、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。
编辑距离越小,说明两个字符串越相似。反之,越不相似。
以上只是距离计算公式的常见的四种,还有很多种距离计算公式,以后如果用到了会继续添上。
相关文章推荐
- java文本相似度计算(Levenshtein Distance算法(中文翻译:编辑距离算法))----代码和详解
- java文本相似度计算(Levenshtein Distance算法(中文翻译:编辑距离算法))----代码和详解
- 文本相似度计算之--- 编辑距离 && 最长公共子串
- 基于词的编辑距离文本相似度计算
- 文本编辑距离的计算
- 基于编辑距离和最长公共子串计算字符串相似度
- jaccard相似度计算公式
- 计算字符串的相似度(编辑距离)
- java实现编辑距离算法,计算字符串相似度
- 计算字符串的相似度---编辑距离
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
- 文本编辑距离计算,简单清晰
- Python文本相似性计算之编辑距离详解
- 一些距离及相似度计算公式
- 字符串相似度计算----编辑距离
- 编辑距离LCS算法详解:Levenshtein Distance算法计算两个字符串的相似度
- Python文本相似性计算之编辑距离详解
- python实现机器学习中的各种距离计算及文本相似度算法
- Java回炉重造(三)使用Apache Commons Text库计算文本相似性:jaccard相似系数、余弦相似度