package com.yihaodian.mandy.keyword.server;
public class EidtDistance {
/*private String target;
public int n;
public void setTarget(String target) {
this.target = target;
this.n = target.length();
}*/
private static 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 static int distance(String s,String t){
int d[][];
int n,m;
int i,j;
char s_i,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];
}
public static double getSimilarity(String target,String other){
int distance = distance(target, other);
int n=Math.max(target.length(), other.length());
return (n-distance)*1.0/n;
}
public static void main(String[] args) {
EidtDistance ed = new EidtDistance();
String str1 = "chenlb.blogjava.net";
String str2 = "chenlb.javaeye.com";
System.out.println("ld=" + ed.distance(str1, str2));
System.out.println("sim=" + ed.getSimilarity(str1, str2));
str1 = "sonyyy";
str2 = "sony";
System.out.println("ld2=" + ed.distance(str1, str2));
System.out.println("sim=" + ed.getSimilarity(str1, str2));
str1 = "leenovo";
str2 = "lenovo";
System.out.println("sim=" + EidtDistance.getSimilarity(str1, str2));
str1 = "adfahjfsd";
str2 = "adidas";
System.out.println("ld=" + ed.distance(str1, str2));
System.out.println("sim=" + ed.getSimilarity(str1, str2));
str1 = "cannon";
str2 = "canon";
System.out.println("sim=" + ed.getSimilarity(str1, str2));
str1 = "sony erricson";
str2 = "sony ericsson";
System.out.println("sim=" + ed.getSimilarity(str1, str2));
str1 = "erricson sony";
str2 = "sony ericsson";
System.out.println("sim=" + ed.getSimilarity(str1, str2));
}
}
分享到:
相关推荐
编辑距离算法,也称为Levenshtein距离,是计算两个字符串之间差异的一种度量方法,广泛应用于文本处理、拼写纠正、生物信息学等领域。它通过衡量将一个字符串转换为另一个字符串所需的最少单字符操作数(包括删除、...
编辑距离(Edit Distance)算法,也被称作Levenshtein距离算法,是一种用于字符串之间模糊匹配的常用方法。在SQL Server数据库中,我们可以通过创建一个函数来实现Levenshtein距离算法,进而进行字符串的比较和...
编辑距离问题-算法导论 在计算机科学中,编辑距离问题是指将一个字符串转换成另一个字符串所需的最少操作步骤数。这些操作可以是插入、删除、替换和复制字符。编辑距离问题是一种典型的动态规划问题。 动态规划是...
编辑距离(Edit Distance)是一种衡量两个字符串相似度的算法,广泛应用于文本处理、生物信息学等领域。这个算法基于动态规划的思想,计算出将一个字符串转换为另一个字符串所需要的最少操作次数,包括插入、删除和...
编辑距离(Edit Distance)是一种衡量两个字符串相似度的数学概念,它定义了将一个字符串转换成另一个字符串所需的最少单字符操作次数,包括插入、删除和替换。这些操作在自然语言处理(NLP)中有着广泛的应用,比如...
编辑距离,又称Levenshtein距离,是一种衡量两个字符串相似度的指标,广泛应用于文本处理、数据校验、搜索引擎优化等多个领域。这个概念源于俄国科学家瓦迪姆·列文斯坦在1965年提出,它定义了将一个字符串转换成另...
这是 APTED 算法的 Python 实现,它是计算树编辑距离的最先进的解决方案 ,它取代了 RTED 算法 输入 目前,我们只支持输入树的所谓括号表示法,例如,编码{A{B{X}{Y}{F}}{C}}对应于以下树: A / \ B C /|\ X Y...
### 编辑距离算法及其在网页搜索中的应用 #### 概述 在互联网时代,搜索引擎作为获取信息的主要工具之一,其核心竞争力在于如何更准确、更高效地将用户查询与相关网页进行匹配。传统的相关性排序算法往往侧重于...
### 编辑距离JS算法详解 #### 一、编辑距离概念 编辑距离(Edit Distance),又称Levenshtein距离,是一种衡量两个字符串相似度的方法。它定义为通过插入、删除或替换一个字符的方式将一个字符串转换成另一个字符串...
编辑距离,又称Levenshtein距离,是一种衡量两个字符串相似度的度量方式。这个概念在计算机科学,尤其是文本处理、信息检索和生物信息学等领域有着广泛应用。原码(或称为原始代码)指的是程序员最初编写,未经任何...
编辑距离,又称为Levenshtein距离,是度量空间中的一个重要概念,它衡量了两个字符串通过插入、删除或替换操作相互转换所需的最小步骤数。在这个问题中,我们将深入探讨动态规划如何有效地计算编辑距离。 编辑距离...
### 编辑距离详解 #### 一、编辑距离的基本概念 **编辑距离**(Edit Distance),也称为Levenshtein距离,是一种衡量两个序列相似度的方法。它定义为通过一系列预定义的操作(如插入、删除或替换一个字符)将一个...
### 编辑距离问题 #### 一、问题背景与定义 在计算机科学领域,编辑距离(Edit Distance)是一个衡量两个字符串相似度的重要概念。编辑距离指的是通过一系列预定义的操作(如插入、删除或替换字符)将一个字符串...
**基于编辑距离的拼写矫正算法** 在计算机科学和自然语言处理领域,拼写矫正是一项重要的任务,尤其在文本输入、搜索引擎优化、机器翻译等方面有着广泛的应用。编辑距离(Edit Distance)是解决这一问题的一种经典...
### 编辑距离问题解析 #### 一、问题定义与背景 编辑距离(Edit Distance),又称Levenshtein距离,是一种衡量两个字符串相似度的方法。它定义了将一个字符串转换成另一个字符串所需的最少单字符编辑操作次数。...
动态规划之编辑距离问题 编辑距离问题是计算机科学中一个经典问题,旨在寻找将一个字符串转换为另一个字符串所需的最少操作数。这个问题可以通过动态规划算法来解决,下面将对其进行详细的解释。 问题描述 编辑...
在Python编程环境中,Levenshtein库是一个非常实用的工具,用于计算两个字符串之间的编辑距离。编辑距离,也称为Levenshtein距离,是衡量两个字符串差异的一种度量,定义为由一个字符串转换成另一个字符串最少的单...
**编辑距离(Edit Distance)** 编辑距离,也称为Levenshtein距离,是一种衡量两个字符串相似度的方法。在计算机科学和信息学中,它被广泛应用于文本比较、拼写检查、生物信息学等领域。编辑距离定义为从一个字符串...
编辑距离算法,也被称为Levenshtein距离,是一种衡量两个字符串相似度的度量方法。在信息技术、自然语言处理和生物信息学等领域有着广泛应用。它定义了将一个字符串转换成另一个字符串所需的最少单字符编辑操作次数...
### 编辑距离问题解析与算法实现 #### 一、问题背景及定义 **编辑距离**(Edit Distance),也称为Levenshtein Distance,是一种衡量两个字符串相似度的方法,即通过最少的操作次数(如插入、删除或替换字符)将一个...