`

java版编辑距离(字符串相似度)算法 levenshtein (edit distance)

    博客分类:
  • java
阅读更多

/**
* levenshtein (edit distance)
*/
public class SimilarityUtils {
	private SimilarityUtils(){}
	
	public static int ld(String s, String t) {
		int d[][];
		int sLen = s.length();
		int tLen = t.length();
		int si;	
		int ti;	
		char ch1;
		char ch2;
		int cost;
		if(sLen == 0) {
			return tLen;
		}
		if(tLen == 0) {
			return sLen;
		}
		d = new int[sLen+1][tLen+1];
		for(si=0; si<=sLen; si++) {
			d[si][0] = si;
		}
		for(ti=0; ti<=tLen; ti++) {
			d[0][ti] = ti;
		}
		for(si=1; si<=sLen; si++) {
			ch1 = s.charAt(si-1);
			for(ti=1; ti<=tLen; ti++) {
				ch2 = t.charAt(ti-1);
				if(ch1 == ch2) {
					cost = 0;
				} else {
					cost = 1;
				}
				d[si][ti] = Math.min(Math.min(d[si-1][ti]+1, d[si][ti-1]+1),d[si-1][ti-1]+cost);
			}
		}
		return d[sLen][tLen];
	}
	
	public static double similarity(String src, String tar) {
		int ld = ld(src, tar);
		return 1 - (double) ld / Math.max(src.length(), tar.length()); 
	}
	
	
	public static void main(String[] args) {
		String src = "hello world!";
		String tar = "hello";
		System.out.println("sim="+SimilarityUtils.similarity(src, tar));
	}
}
 
分享到:
评论

相关推荐

    字符串相似度算法

    在IT领域,字符串相似度算法是一种非常重要的工具,特别是在数据挖掘、信息检索、文本分类以及自然语言处理等应用中。这个小例子旨在介绍如何通过计算字符串间的相似度来进行模糊匹配。我们将探讨几种常见的字符串...

    C#,字符串相似度的莱文斯坦距离(Levenshtein Distance)算法与源代码

    C#,字符串相似度的莱文斯坦距离(Levenshtein Distance)算法与源代码 莱文斯坦距离(Levenshtein Distance)用于衡量两个字符串之间的相似度。 莱文斯坦距离以俄国科学家(Vladimir I. Levenshtein)命名,他于...

    使用最短编辑距离算法判断两个字符串的相似度

    最短编辑距离(Shortest Edit Distance,简称SED)算法,是由俄国计算机科学家Vladimir Levenshtein在1965年提出的,因此也被称为Levenshtein距离。这个算法主要用于衡量两个字符串之间的差异,即需要进行多少次单...

    mysql 计算字符串相似度

    1. **使用更高效的算法**:例如,采用编辑距离算法(Levenshtein 距离)或 Jaccard 相似度等更复杂的相似度计算方法。 2. **利用 MySQL 的内置函数**:例如,尝试使用 `UNHEX()` 和 `HEX()` 函数来处理多字节字符。 ...

    最小编辑距离(字符串相似度)java版

    最小编辑距离(Minimum Edit Distance, 简称MED)是一种衡量两个字符串相似度的方法,它在计算机科学,尤其是文本处理、信息检索、生物信息学等领域有着广泛应用。这个概念由俄国数学家Vladimir Levenshtein在1965年...

    字符串的相似度 编辑距离 java实现

    字符串相似度计算之编辑距离 编辑距离(Edit Distance)是计算两个字符串之间的相似度的算法,它定义了从原串(s)转换到目标串(t)所需要的最少的插入、删除和替换的数目。在自然语言处理(NLP)中应用非常广泛,...

    字符串相似度比较

    6. **编辑距离(Edit Distance with Real Penalty, EDWR)**:在Levenshtein距离的基础上引入了实际代价,比如插入一个数字的成本可能比插入一个字母更高。 **二、JavaScript实现** 在JavaScript中,可以使用内置...

    SQL SERVER实现编辑距离(Edit Distance)算法

    编辑距离(Edit Distance)算法,也被称作Levenshtein距离算法,是一种用于字符串之间模糊匹配的常用方法。在SQL Server数据库中,我们可以通过创建一个函数来实现Levenshtein距离算法,进而进行字符串的比较和...

    编辑距离 字符串的相似度

    编辑距离(Edit Distance)是一种衡量两个字符串相似度的数学概念,它定义了将一个字符串转换成另一个字符串所需的最少单字符操作次数,包括插入、删除和替换。这些操作在自然语言处理(NLP)中有着广泛的应用,比如...

    Oracle字符相似度函数

    - **EDITDISTANCE()**:编辑距离(Levenshtein距离)函数,计算将一个字符串转换为另一个字符串所需的最少单字符编辑(插入、删除或替换)次数。返回值是具体的编辑距离,数值越小表示越接近。 在实际应用中,...

    编辑长求字符串相似度Delphi源代码

    5. **编辑距离(Edit Distance with Transpositions)**:除了插入、删除和替换外,还包括字符的交换操作。 以下是一个简单的Levenshtein距离的Delphi实现示例: ```delphi function LevenshteinDistance(const S1...

    数据挖掘与数据分析应用案例 数据挖掘算法实践 基于Java的编辑距离算法求相似度.doc

    编辑距离(Edit Distance),也称为Levenshtein距离,是一种测量两个字符串相似度的方法。它定义了从一个字符串转换成另一个字符串所需的最少单字符编辑操作次数(插入、删除或替换)。在文本处理和自然语言处理中...

    字符串识别,相似度匹配

    4. **编辑距离(Edit Distance)**:包括Levenshtein距离,还有其他变种如Hamming距离,用于衡量字符串间的最小转换步数。 5. **最长公共子序列(Longest Common Subsequence, LCS)**:找出两个字符串中无需调整...

    一个简单的字符串Edit Distance C#程序

    Edit Distance,也被称为Levenshtein距离,是一种衡量两个字符串相似度的方法,通过计算将一个字符串转换为另一个字符串所需的最少单字符编辑操作次数来实现。这些编辑操作包括插入一个字符、删除一个字符或替换一个...

    ld.rar_LD算法_edit distance_最小编辑距离_编辑距离

    标签中的“ld算法”、“edit_distance”、“最小编辑距离”和“编辑距离”都是对同一个概念的不同表述,即上述的莱文斯坦距离。 压缩包中的文件“www.pudn.com.txt”可能是某个网站或论坛上关于这个话题的讨论记录...

    编辑距离EditDistance

    编辑距离,也称为Levenshtein距离,是一种衡量两个字符串相似度的方法。在计算机科学和信息学中,它被广泛应用于文本比较、拼写检查、生物信息学等领域。编辑距离定义为从一个字符串转换成另一个字符串时,最少需要...

    VC实现字符串编辑距离计算

    在编程领域,字符串编辑距离(Edit Distance)是一个重要的算法,常用于比较两个字符串的相似度。这个概念由俄国数学家Vladimir Levenshtein在1965年提出,因此也被称为Levenshtein距离。在VC++环境中实现字符串编辑...

    编辑距离-java语言实现

    编辑距离(EditDistance)定义字符串的相似度 编辑距离就是用来计算从原串(s)转换到目标串 t 所需要的最少的插入 删除和替换的数目 在NLP中应用比较广泛 如一些评测方法中就用到了(wer mWer等) 同时也常用来计算...

    cpp-CCython实现的快速编辑距离Levenshteindistance

    编辑距离(Levenshtein distance)是一种衡量两个字符串相似度的方法,由俄罗斯计算机科学家Vladimir Levenshtein在1965年提出。它定义为通过插入、删除或替换字符将一个字符串转换成另一个字符串所需的最小操作次数...

Global site tag (gtag.js) - Google Analytics