`
ansjsun
  • 浏览: 203044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

文本相似度计算-Levenshtein

 
阅读更多
参见网址http://www.merriampark.com/ld.htm#JAVA


import java.util.BitSet;

public class Distance {

	
	public static void main(String[] args) {
		Distance distance = new Distance() ;
		int i = distance.LD("gttttl", "gambol") ;
		System.out.println(i);
	}
	// ****************************
	// Get minimum of three values
	// ****************************

	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;

	}

	// *****************************
	// Compute Levenshtein distance
	// *****************************

	public int LD(String s, String t) {
		//构建一个二维数据
		int d[][]; // matrix
		//s的长度
		int n; // length of s
		//t的长度
		int m; // length of t
		//s的偏移量
		int i; // iterates through s
		//t的偏移量
		int j; // iterates through t
		//s偏移量所在的char
		char s_i; // ith character of s
		//t偏移量所在的char
		char t_j; // jth character of t
		//临时变量对比差值
		int cost; // cost

		// Step 1

		n = s.length();
		m = t.length();
		//当n为0时.则变化为m所有的值
		if (n == 0) {
			return m;
		}
		//同上
		if (m == 0) {
			return n;
		}
		
		d = new int[n + 1][m + 1];

		// Step 2 将数组首行首列添加内容.为当前行号列号
		
		for (i = 0; i <= n; i++) {
			d[i][0] = i;
		}

		for (j = 0; j <= m; j++) {
			d[0][j] = j;
		}

		// Step 3

		for (i = 1; i <= n; i++) {

			s_i = s.charAt(i - 1);

			// Step 4
			//判断i位置的值和 t的每个字的差值
			for (j = 1; j <= m; j++) {

				t_j = t.charAt(j - 1);

				// Step 5
				if (s_i == t_j) {
					cost = 0;
				} else {
					cost = 1;
				}

				// Step 6
				//在数组的
				d[i][j] = Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1,
						d[i - 1][j - 1] + cost);

			}

		}

		// Step 7
		//取得最右面最下面的值就是文本的想速度了
		return d[n][m];

	}

}





都加注释了....不解释了..


This section shows how the Levenshtein distance is computed when the source string is "GUMBO" and the target string is "GAMBOL".
Steps 1 and 2
    G U M B O
  0 1 2 3 4 5
G 1          
A 2          
M 3          
B 4          
O 5          
L 6          

Steps 3 to 6 When i = 1
    G U M B O
  0 1 2 3 4 5
G 1 0        
A 2 1        
M 3 2        
B 4 3        
O 5 4        
L 6 5        

Steps 3 to 6 When i = 2
    G U M B O
  0 1 2 3 4 5
G 1 0 1      
A 2 1 1      
M 3 2 2      
B 4 3 3      
O 5 4 4      
L 6 5 5      

Steps 3 to 6 When i = 3
    G U M B O
  0 1 2 3 4 5
G 1 0 1 2    
A 2 1 1 2    
M 3 2 2 1    
B 4 3 3 2    
O 5 4 4 3    
L 6 5 5 4    

Steps 3 to 6 When i = 4
    G U M B O
  0 1 2 3 4 5
G 1 0 1 2 3  
A 2 1 1 2 3  
M 3 2 2 1 2  
B 4 3 3 2 1  
O 5 4 4 3 2  
L 6 5 5 4 3  

Steps 3 to 6 When i = 5
    G U M B O
  0 1 2 3 4 5
G 1 0 1 2 3 4
A 2 1 1 2 3 4
M 3 2 2 1 2 3
B 4 3 3 2 1 2
O 5 4 4 3 2 1
L 6 5 5 4 3 2

Step 7
The distance is in the lower right hand corner of the matrix, i.e. 2. This corresponds to our intuitive realization that "GUMBO" can be transformed into "GAMBOL" by substituting "A" for "U" and adding "L" (one substitution and 1 insertion = 2 changes).

分享到:
评论

相关推荐

    python-Levenshtein-0.12.2.tar.gz

    在实际应用中,Levenshtein距离可以用于拼写检查、推荐系统、文本相似度检测等场景。例如,在搜索引擎中,它可以用来提高搜索结果的相关性,通过找到与用户输入关键词最接近的正确拼写,提供更准确的搜索建议。 ...

    易语言文本相似度判断模块

    3. **相似度计算**:计算两段文本的相似度。常用的算法有余弦相似度、Jaccard相似度、编辑距离(Levenshtein Distance)等。在易语言中,可能会用到自定义的函数来实现这些算法。余弦相似度通过比较两个向量的夹角来...

    Python-Levenshtein快速计算编辑距离以及字符串的相似度

    在`python-Levenshtein-master`这个压缩包中,可能包含了Levenshtein库的源代码,包括实现算法的Python文件、测试用例、文档等资源。开发者可以通过阅读源代码来深入理解其内部工作原理,并根据项目需求进行定制和...

    Python-对四种句子文本相似度计算方法进行实验与比较

    在自然语言处理领域,文本相似度计算是一项关键任务,它涉及到如何量化两个或多个文本之间的语义相似性。本文将深入探讨使用Python编程语言实现的四种主要文本相似度计算方法,并进行实验比较。这些方法包括余弦...

    基于python的文本相似度计算系统源码数据库.docx

    "基于python的文本相似度计算系统源码数据库" 本文主要介绍了一个基于Python的文本相似度计算系统,该系统能够有效地处理和利用大量的文本数据,计算文本之间的相似度,并将结果展示在可视化界面上。本系统的实现...

    易语言快速计算文本相似度

    在IT领域,文本相似度计算是一项重要的技术,广泛应用于自然语言处理、信息检索、机器学习等领域。本资源提供了一个易语言实现的快速计算文本相似度的源码,可以帮助开发者高效地进行文本比较和分析。 易语言是一种...

    文本相似度计算数据文本相似度计算数据

    在文本相似度计算中,常见的方法有余弦相似度、Jaccard相似度、编辑距离(Levenshtein Distance)、Jaccard相似系数等。而随着深度学习的发展,基于神经网络的方法,如Siamese网络、BERT、RoBERTa等,已成为主流。...

    前端项目-levenshtein.zip

    项目中的“Levenshtein-master”很可能包含了以下内容: 1. `README.md`:项目的说明文档,通常包含如何使用、安装、测试等信息。 2. `src` 文件夹:源代码目录,可能包含实现了Levenshtein算法的JavaScript文件。 3...

    文本相似度计算方法研究综述1

    文本相似度计算是信息处理和自然语言处理领域中的关键技术,其目的是通过量化比较两段文本之间的相似程度,来实现信息检索、问答系统、文档分类、抄袭检测等多种应用场景。本文主要探讨了文本相似度计算的不同方法,...

    Levenshtein.rar 文本相似度比较

    这里我们关注的是“Levenshtein.rar”压缩包,它包含了一个使用C#实现的文本相似度比较工具。这个工具利用了Levenshtein距离算法,这是一种衡量两个字符串差异程度的方法。 Levenshtein距离算法,又称为编辑距离,...

    文本相似度

    在学术界、新闻媒体、搜索引擎优化(SEO)以及版权保护等多个领域,文本相似度计算都有广泛的应用。例如,通过计算文本相似度,可以检测论文是否存在抄袭现象,或者在信息检索系统中帮助用户找到最相关的搜索结果。 ...

    文本相似度计算

    在压缩包中的"similarity"文件,可能是包含示例代码、数据集或教程,用于展示如何利用Levenshtein距离或其他方法进行文本相似度计算。通过学习这些资源,我们可以深入理解如何将这些理论知识应用于实际项目,解决如...

    开源项目-ferhatelmas-levenshtein.zip

    在这个开源项目——ferhatelmas/levenshtein中,作者用Golang实现了Levenshtein距离算法,为开发者提供了高效且灵活的字符串相似度计算工具。 首先,我们来详细了解Levenshtein距离的计算原理。假设我们有两个字符...

    易语言快速计算文本相似度源码-易语言

    文本相似度计算是衡量两个文本在语义上的接近程度,它可以帮助我们找出重复或相似的内容,例如在搜索引擎中判断用户查询与网页内容的相关性。易语言中的实现通常会基于字符串处理和统计学方法,例如余弦相似度、...

    python-Levenshtein

    总之,`python-Levenshtein`库提供了一种高效且便捷的方式来计算字符串之间的编辑距离,是进行文本相似度分析和比较的重要工具。掌握并灵活运用这个库,可以大大提升我们在相关领域的开发效率和项目质量。

    基于python的文本相似度计算系统源码数据库.zip

    常见的文本相似度计算方法有余弦相似度、Jaccard相似度、编辑距离(Levenshtein距离)等。在Python中,可以使用scikit-learn、gensim或NLTK库来实现这些算法。 5. **TF-IDF**: TF-IDF(词频-逆文档频率)是一种常用...

    易语言快速计算文本相似度源码.rar

    常见的文本相似度计算方法有Jaccard相似度、余弦相似度、Levenshtein距离、编辑距离等。Jaccard相似度是通过比较两个文本的交集和并集大小来计算的;余弦相似度则是通过计算两个文本向量在多维空间中的夹角余弦值;...

    数据挖掘与数据分析应用案例 数据挖掘算法实践基于Java的文本相似度(Levenshtein distance算法)计算.doc

    Levenshtein Distance算法提供了一种有效的方法来度量两个字符串之间的相似性,而基于关键词的空间向量模型则适用于更广泛的文本相似度计算任务。掌握这两种算法的原理及其应用场景对于从事数据挖掘、自然语言处理等...

    易语言文本相似度判断模块源码

    常见的文本相似度计算方法有Jaccard相似度、余弦相似度、Levenshtein距离等。这些方法可以帮助我们量化两段文本的相似性,从而决定它们是否具有相同或相近的意思。 2. **字符串处理**: 易语言提供了丰富的字符串...

    java实现 文本相似度

    Java作为一种通用且强大的编程语言,提供了丰富的库和工具来实现文本相似度计算。以下我们将深入探讨如何在Java中实现文本相似度。 首先,文本相似度的计算通常基于特定的算法,例如余弦相似度、Jaccard相似度、...

Global site tag (gtag.js) - Google Analytics