0.这个算法实现起来很简单

1.百度百科介绍:

Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。

许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。

编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。

2.用途

模糊查询

3.实现过程

a.首先是有两个字符串,这里写一个简单的 abc和abe

b.将字符串想象成下面的结构。

A处 是一个标记,为了方便讲解,不是这个表的内容。

  abc a b c
abe 0 1 2 3
a 1 A处    
b 2      
e 3      

c.来计算A处 出得值

它的值取决于:左边的1、上边的1、左上角的0.

按照Levenshtein distance的意思:

上面的值和左面的值都要求加1,这样得到1+1=2。

A处 由于是两个a相同,左上角的值加0.这样得到0+0=0。

这是后有三个值,左边的计算后为2,上边的计算后为2,左上角的计算为0,所以A处 取他们里面最小的0.

d.于是表成为下面的样子

  abc a b c
abe 0 1 2 3
a 1 0    
b 2 B处    
e 3      

在B处 会同样得到三个值,左边计算后为3,上边计算后为1,在B处 由于对应的字符为a、b,不相等,所以左上角应该在当前值的基础上加1,这样得到1+1=2,在(3,1,2)中选出最小的为B处的值。

e.于是表就更新了

  abc a b c
abe 0 1 2 3
a 1 0    
b 2 1    
e 3 C处    

C处 计算后:上面的值为2,左边的值为4,左上角的:a和e不相同,所以加1,即2+1,左上角的为3。

在(2,4,3)中取最小的为C处 的值。

f.于是依次推得到

    a b c
  0 1 2 3
a 1 A处 0 D处 1 G处 2
b 2 B处 1 E处 0 H处 1
e 3 C处 2 F处 1 I处 1

I处: 表示abc 和abe 有1个需要编辑的操作。这个是需要计算出来的。

同时,也获得一些额外的信息。

A处: 表示a      和a      需要有0个操作。字符串一样

B处: 表示ab    和a      需要有1个操作。

C处: 表示abe  和a      需要有2个操作。

D处: 表示a      和ab    需要有1个操作。

E处: 表示ab    和ab    需要有0个操作。字符串一样

F处: 表示abe  和ab    需要有1个操作。

G处: 表示a      和abc   需要有2个操作。

H处: 表示ab    和abc    需要有1个操作。

I处: 表示abe   和abc    需要有1个操作。

g.计算相似度

先取两个字符串长度的最大值maxLen,用1-(需要操作数除maxLen),得到相似度。

例如abc 和abe 一个操作,长度为3,所以相似度为1/3=0.333。

转载于:https://www.cnblogs.com/lmsj918/p/4423764.html

计算字符串相似度算法——Levenshtein相关推荐

  1. 计算字符串相似度算法—Levenshtein

    什么是Levenshtein Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删 ...

  2. 字符串相似度算法——Levenshtein Distance算法

    Levenshtein Distance 算法,又叫 Edit Distance 算法,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一 ...

  3. Levenshtein 相似度算法——Levenshtein(编辑距离)

    https://www.iteye.com/blog/wdhdmx-1343856 原文讲的挺有道理的: 奇妙的地方就是将字符串的对比,转换为了数值之间的计算: 相似度算法--Levenshtein( ...

  4. 一种中文字符串相似度算法

    一种中文字符串相似度算法 概要 标记距离相似算法 扩展 概要 给定一个字符串a,在字符串列表B中找到与a最相似字符串b,或者让列表B按与a相似度排序.本文提出一种算法来较好的解决这个问题.并且该算法很 ...

  5. php数据分析引擎,PHP数据分析引擎计算余弦相似度算法示例

    php 的 PHP数据分析引擎计算余弦相似度算法示例 本文实例讲述了PHP数据分析引擎计算余弦相似度算法.分享给大家供大家参考,具体如下: 关于余弦相似度的相关介绍可参考百度百科: /** * 数据分 ...

  6. 相似度算法 php,PHP计算余弦相似度算法

    这篇文章主要介绍了PHP数据分析引擎计算余弦相似度算法,结合具体实例形式分析了php计算余弦相似度的操作步骤与相关实现技巧,需要的朋友可以参考下 本文实例讲述了PHP数据分析引擎计算余弦相似度算法.分 ...

  7. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  8. 字符串相似度算法(编辑距离算法)

    编辑距离算法 前言 原理 公式 例子 实现 后记 前言 比较两个字符串的相似度,通常我们会使用编辑距离算法来实现. 下面是常用字符串相似度计算的方法: 字符串相似度的几种度量方法 原理 最小编辑距离的 ...

  9. php文章相似度计算,PHP相似度算法

    写了很久忘保存了,囧没了,先放这里 catalogue 1. TF-IDF2. 基于空间向量的余弦算法3. 最长公共子序列4. 最小编辑距离算法5. similar_text 1. TF-IDF Re ...

  10. 相似度算法——Levenshtein(编辑距离)

    概念 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数. 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符. 编辑距离 ...

最新文章

  1. 关于Spark NLP学习,你需要掌握的LightPipeline(附代码)| CSDN博文精选
  2. Jmeter Loadrunner高级性能测试真实曝光
  3. 线程池的一些疑问和解答
  4. SAP ABAP Netweaver服务器的标准登录方式讲解
  5. 主流微型计算机,主流微型计算机硬件系统维护
  6. 等保制度与ISO27001的区别与联系
  7. 基础知识回顾——通用序列操作
  8. 现代软件工程第六章作业
  9. vue 给取data值_一些Vue相关的面试题,帮助求职者提升竞争力
  10. 【linux】如何查看和解压缩rpm文件内容
  11. BZOJ2243[SDOI2011] 染色
  12. mysql 测试数据生成器_8个免费的测试数据/样本数据生成器
  13. oracle 用户创建赋权,oracle 建表空间用户及赋权
  14. 安卓Android手机汽车租赁系统app毕业设计
  15. 2021-12-25 《聪明的投资者》学习笔记-18.对八组公司的比较
  16. 同步电复律英文_同步电复律与非同步电复律有什么区别?
  17. python decimal_实例详解Python模块decimal
  18. JavaScript-84:利用函数求任意两个数的和
  19. 银行舆情监测怎么做?
  20. Oracle表误操作恢复历史数据方法

热门文章

  1. 杂记之关于视频、音频编/解码
  2. win10计算机切换用户,win10账户切换,详细教您win10怎么切换账户
  3. mysql的外文图书_金图外文图书数据库系统
  4. html中三角函数表示什么,三角函数的化一公式
  5. 【核心命令 cd pwd mkdir touch ls mv cp echo vim rm】
  6. 杭州电子科技大学计算机研究生很好考吗,杭州电子科技大学考研难吗?一般要什么水平才可以进入?...
  7. 51单片机(流水灯)
  8. Latex 编译环境,在图片的标题中加入脚注
  9. 计算机 医学 sci期刊,医学临床研究方面2分的sci期刊
  10. Math 数学方法、随机数公式、随机数公式推理