基于词的编辑距离文本相似度计算
2016-12-15 18:30
281 查看
分词结果放在list里面
//基于词的编辑距离计算
public static float levenshtein(ArrayList<String> listfirst, ArrayList<String> listsecond) {
// 计算两个字符串的长度。
int len1 = listfirst.size();
int len2 = listsecond.size();
System.out.println(len1 +" "+len2);
// 建立上面说的数组,比字符长度大一个空间
int[][] dif = new int[len1 + 1][len2 + 1];
// 赋初值,步骤B。
for (int a = 0; a <= len1; a++) {
dif[a][0] = a;
}
for (int a = 0; a <= len2; a++) {
dif[0][a] = a;
}
// 计算两个字符是否一样,计算左上的值
int temp;
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (listfirst.get(i-1).equals(listsecond.get(j-1)) ) {
temp = 0;
} else {
temp = 1;
}
// 取三个值中最小的
dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1,
dif[i - 1][j] + 1);
System.out.println("i = " + i + ", j = " + j + ", dif[i][j] = "
+ dif[i][j]);
}
}
// 计算相似度
float similarity = 1 - (float) dif[len1][len2]
/ Math.max(listfirst.size(), listsecond.size());
System.out.println("相似度:" + similarity);
return similarity;
}
//基于词的编辑距离计算
public static float levenshtein(ArrayList<String> listfirst, ArrayList<String> listsecond) {
// 计算两个字符串的长度。
int len1 = listfirst.size();
int len2 = listsecond.size();
System.out.println(len1 +" "+len2);
// 建立上面说的数组,比字符长度大一个空间
int[][] dif = new int[len1 + 1][len2 + 1];
// 赋初值,步骤B。
for (int a = 0; a <= len1; a++) {
dif[a][0] = a;
}
for (int a = 0; a <= len2; a++) {
dif[0][a] = a;
}
// 计算两个字符是否一样,计算左上的值
int temp;
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (listfirst.get(i-1).equals(listsecond.get(j-1)) ) {
temp = 0;
} else {
temp = 1;
}
// 取三个值中最小的
dif[i][j] = min(dif[i - 1][j - 1] + temp, dif[i][j - 1] + 1,
dif[i - 1][j] + 1);
System.out.println("i = " + i + ", j = " + j + ", dif[i][j] = "
+ dif[i][j]);
}
}
// 计算相似度
float similarity = 1 - (float) dif[len1][len2]
/ Math.max(listfirst.size(), listsecond.size());
System.out.println("相似度:" + similarity);
return similarity;
}
相关文章推荐
- java文本相似度计算(Levenshtein Distance算法(中文翻译:编辑距离算法))----代码和详解
- 基于编辑距离和最长公共子串计算字符串相似度
- 文本相似度计算的几个距离公式(欧氏距离、余弦相似度、Jaccard距离、编辑距离)
- java文本相似度计算(Levenshtein Distance算法(中文翻译:编辑距离算法))----代码和详解
- 文本相似度计算之--- 编辑距离 && 最长公共子串
- java实现编辑距离算法,计算字符串相似度
- 计算字符串的相似度(编辑距离)
- 编辑距离(LD)计算两个字符串相似度
- 华为OJ 计算字符串相似度或者编辑距离 JAVA
- Levenshtein Distance Levenshtein 编辑距离——一种相似度的计算方法
- 最小编辑代价&&华为OJ 编辑距离&&计算字符串的相似度
- 利用编辑距离(Edit Distance)计算两个字符串的相似度
- 计算字符串的相似度(编辑距离)
- 利用Levenshtein Distance (编辑距离)实现文档相似度计算
- 计算字符串的相似度(编辑距离)
- LeetCode之计算字符串相似度或编辑距离EditDistance
- 深入剖析手腾MT2.0基于编辑距离计算的增量更新算法
- 基于余弦距离的的文本相似度挖掘(C++)
- 字符串相似度计算----编辑距离
- 编辑距离LCS算法详解:Levenshtein Distance算法计算两个字符串的相似度