字符串编辑距离(levenshtein
distace莱文史特距离)是一种字符串之间相似度算法。对于中文来说,很多时候都是将词作为一个基本单位,而不是字符。
算
法描述:(算法是由俄国科学家Levenshtein提出)
Step
Description
1 |
Set n to be the length of s.
Set m to be the length of t.
If n
= 0, return m and exit.
If m = 0, return n and exit.
Construct a
matrix containing 0..m rows and 0..n columns. |
2 |
Initialize the first row to 0..n.
Initialize the first column to
0..m. |
3 |
Examine each character of s (i from 1 to n). |
4 |
Examine each character of t (j from 1 to m). |
5 |
If s[i] equals t[j], the cost is 0.
If s[i] doesn't equal t[j],
the cost is 1. |
6 |
Set cell d[i,j] of the matrix equal to the minimum of:
a. The
cell immediately above plus 1: d[i-1,j] + 1.
b. The cell immediately
to the left plus 1: d[i,j-1] + 1.
c. The cell diagonally above and to
the left plus the cost: d[i-1,j-1] + cost. |
7 |
After the iteration steps (3, 4, 5, 6) are complete, the distance is
found in cell d[n,m]. |
java实现:
-
Java
-
-
public
class
Distance {
-
-
-
-
-
-
private
int
Minimum (
int
a,
int
b,
int
c) {
-
int
mi;
-
-
mi = a;
-
if
(b < mi) {
-
mi = b;
-
}
-
if
(c < mi) {
-
mi = c;
-
}
-
return
mi;
-
-
}
-
-
-
-
-
-
public
int
LD (String s, String t) {
-
int
d[][];
-
int
n;
-
int
m;
-
int
i;
-
int
j;
-
char
s_i;
-
char
t_j;
-
int
cost;
-
-
-
-
n = s.length ();
-
m = t.length ();
-
if
(n ==
0
) {
-
return
m;
-
}
-
if
(m ==
0
) {
-
return
n;
-
}
-
d =
new
int
[n+
1
][m+
1
];
-
-
-
-
for
(i =
0
; i <= n; i++) {
-
d[i][
0
] = i;
-
}
-
-
for
(j =
0
; j <= m; j++) {
-
d[
0
][j] = j;
-
}
-
-
-
-
for
(i =
1
; i <= n; i++) {
-
-
s_i = s.charAt (i -
1
);
-
-
-
-
for
(j =
1
; j <= m; j++) {
-
-
t_j = t.charAt (j -
1
);
-
-
-
-
if
(s_i == t_j) {
-
cost =
0
;
-
}
-
else
{
-
cost =
1
;
-
}
-
-
-
-
d[i][j] = Minimum (d[i-
1
][j]+
1
, d[i][j-
1
]+
1
, d[i-
1
][j-
1
] + cost);
-
-
}
-
-
}
-
-
-
-
return
d[n][m];
-
-
}
-
-
}
分享到:
相关推荐
jacob LevenshteinDistance.rar
其中,Levenshtein Distance(编辑距离)是一种衡量两个字符串之间差异的度量方式,由俄国科学家Vladimir Levenshtein在1965年提出。编辑距离算法描述了将一个字符串转换为另一个字符串的最少单字符编辑(插入、删除...
C#,字符串相似度的莱文斯坦距离(Levenshtein Distance)算法与源代码 莱文斯坦距离(Levenshtein Distance)用于衡量两个字符串之间的相似度。 莱文斯坦距离以俄国科学家(Vladimir I. Levenshtein)命名,他于...
来源:http://nayruden.com/?p=115
public class LevenshteinDistance { public static int calculate(String s1, String s2) { int[][] distance = new int[s1.length() + 1][s2.length() + 1]; for (int i = 0; i (); i++) distance[i][0] = i;...
go语言实现的Levenshtein Distance 算法
Levenshtein Distance 算法详解 Levenshtein Distance 算法是一种计算两个字符串之间的编辑距离的算法,编辑距离是指从一个字符串变换到另一个字符串所需要的最少变化操作步骤。该算法的计算过程可以用一个二维表来...
编辑距离(Levenshtein distance)是一种衡量两个字符串相似度的方法,由俄罗斯计算机科学家Vladimir Levenshtein在1965年提出。它定义为通过插入、删除或替换字符将一个字符串转换成另一个字符串所需的最小操作次数...
Levenshtein Distance--求字符串的相似程度的算法,文件用IE6可以打开。
Levenshtein distance is commonly used in many areas especially in speech recognition. It is very useful in finding the edit distance between two words or two sequences of vectors.
在上述代码中,`LevenshteinDistance`函数接受两个字符串作为参数,并返回它们之间的Levenshtein距离。初始化二维数组`dp`用于存储中间结果,`min`函数用于找到三个整数中的最小值。 从压缩包文件"levenshtein-...
标签:airavata-levenshtein-distance-service-0.9.jar,airavata,levenshtein,distance,service,0.9,jar包下载,依赖包
"Metaphone Spell Check" 是一个利用 Levenshtein Distance 和 Metaphone 算法组合实现的拼写检查程序,主要用于改进和扩展传统的拼写纠正功能。下面我们将深入探讨这两个算法以及它们如何协同工作。 1. **...
在本文中,我们将讨论一种常用的字符串相似度算法:Levenshtein Distance。 什么是Levenshtein Distance? Levenshtein Distance(LD)是一种衡量两个字符串之间相似度的方法,衡量的是将源字符串(s)转换为目标...
from Levenshtein import distance ``` 然后,你可以用`distance`函数来计算两个字符串的编辑距离: ```python distance('kitten', 'sitting') ``` 这个例子会返回3,因为需要三个操作(替换'k'为's',替换'i'为'...
在这个名为"LevenshteinDistance"的项目中,我们有一个简单的Java实现来计算两个字符串之间的Levenshtein距离。该项目可能包含以下关键组件: 1. **算法实现**:Java代码会实现一个二维动态规划矩阵,用于存储两个...
两个字符串的相似度算法实现——编辑距离之Levenshtein距离
`Levenshtein`库还支持对大型数据集进行批量处理,通过使用`distance_matrix()`函数可以一次性计算多个字符串对之间的距离。这在处理大量文本数据时非常有用。 总的来说,`Levenshtein`库是Python中一个强大的工具...
("The Levenshtein distance between '{}' and '{}' is {}", s1, s2, distance); } ``` 在上述例子中,`levenshtein(s1, s2)` 将计算 `s1` 和 `s2` 的编辑距离,并返回结果。运行这段代码会输出它们之间的最小编辑...