编辑距离算法(Levenshtein Distance Algorithm)的概念理解及其应用

这篇具有很好参考价值的文章主要介绍了编辑距离算法(Levenshtein Distance Algorithm)的概念理解及其应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念:

编辑距离,由俄罗斯科学家Vladimir Levenshtein于1965年提出,因此又称为Levenshtein Distance,简称LD,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。

可用的编辑操作包括:
- 将某个字符替换为另一个字符
- 插入字符
- 删除字符

Levenshtein Distance公式定义:

将两个字符串 a, b 的Levenshtein Distance表示为LDa,b(|a|, |b|),如下公式所示。其中,|a|和 |b|分别对应字符串 a, b 的长度。
编辑距离算法(Levenshtein Distance Algorithm)的概念理解及其应用,算法,自然语言处理,python
LDa,b(|a|, |b|)表示 a 的前 i 个字符与 b 的前 j 个字符之间的编辑距离。其中,i 和 j 都是从1开始的下标。

示例一(不等长字符串):

将字符串Kitten转换成字符串Sitting

1. Kitten —> Sitten(K —> S)
2. Sitten —> Sittin (e —> i)
3. Sittin —> Sitting (在末尾插入字符‘g’)

Kitten转换成Sitting的LD值为3。

示例二(等长字符串):

将字符串hello转换成字符串kitty

1. hello —> kello(h —> k)
2. kello —> killo(e —> i)
3. killo —> kitlo(l —> t)
4. kitlo —> kitto(l —> t)
5. kitto —> kitty(o —> y)

hello转换成Sitting的LD值为5。

代码实现:

def edit_distance(a, b):
    m, n = len(a), len(b)
    if m == 0:
        return n
    if n == 0:
        return m
    dp = [[0] * (n + 1) for _ in range(m + 1)]
    for i in range(m + 1):
        dp[i][0] = i
    for j in range(n + 1):
        dp[0][j] = j
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + (s1[i - 1] != s2[j - 1]))
    # print(dp)
    return dp[m][n], 1 - dp[m][n] / m

Levenshtein Distance的使用场景:

- DNA分析;
- 拼写检查;
- 语音识别;
- 抄袭侦测;
- 搜索引擎;
……

总结:

编辑距离是NLP领域中一个基本的评估文本相似度的算法,可以作为文本相似任务的重要特征之一。该算法的缺点在于,它是基于文本自身的结构去计算的,并没有利用到文本语义层面的信息。文章来源地址https://www.toymoban.com/news/detail-567097.html

到了这里,关于编辑距离算法(Levenshtein Distance Algorithm)的概念理解及其应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【算法】动态规划算法求(编辑距离)

    目录 编辑距离: 举例: 代码如下 调试: 核心代码: 画图演示上述代码:    是一种计算两个自符串之间差异程度的方法,它通过比较 两个字符串之间的插入,删除和 替换操作的数量 ,来确定他们之间的距离。 现有两个字符串 字符串s1:”CTGA\\\" 字符串s2:  \\\"ACGCTA\\\" 求s1和

    2024年02月12日
    浏览(41)
  • 机器学习中的数学——距离定义(八):余弦距离(Cosine Distance)

    分类目录:《机器学习中的数学》总目录 相关文章: · 距离定义:基础知识 · 距离定义(一):欧几里得距离(Euclidean Distance) · 距离定义(二):曼哈顿距离(Manhattan Distance) · 距离定义(三):闵可夫斯基距离(Minkowski Distance) · 距离定义(四):切比雪夫距离(

    2023年04月08日
    浏览(39)
  • 【算法一则】编辑距离 【动态规划】

    给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 这个问题可以使用动态规划来解决。我们可以定义一个二维数组dp,其中dp[i][j]表示将word1的前i个字符转换成word

    2024年04月24日
    浏览(36)
  • 机器学习中的数学——距离定义(一):欧几里得距离(Euclidean Distance)

    分类目录:《机器学习中的数学》总目录 相关文章: · 距离定义:基础知识 · 距离定义(一):欧几里得距离(Euclidean Distance) · 距离定义(二):曼哈顿距离(Manhattan Distance) · 距离定义(三):闵可夫斯基距离(Minkowski Distance) · 距离定义(四):切比雪夫距离(

    2023年04月11日
    浏览(38)
  • 算法leetcode|72. 编辑距离(rust重拳出击)

    给你两个单词 word1 和 word2 , 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 0 = word1.length, word2.length = 500 word1 和 word2 由小写英文字母组成 面对这道算法题目,二当家的再次陷入了沉思。 编

    2024年02月12日
    浏览(44)
  • 【大道至简】机器学习算法之EM算法(Expectation Maximization Algorithm)详解(附代码)---通俗理解EM算法。

    ☕️ 本文来自专栏:大道至简之机器学习系列专栏 🍃本专栏往期文章:逻辑回归(Logistic Regression)详解(附代码)---大道至简之机器学习算法系列——非常通俗易懂!_尚拙谨言的博客-CSDN博客_逻辑回归代码 ❤️各位小伙伴们关注我的大道至简之机器学习系列专栏,一起学习各大

    2024年02月06日
    浏览(43)
  • 算法刷题|583.两个字符串的删除操作、72.编辑距离

    题目:给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 dp[i][j] 表示以i-1结尾的word1子序列和以j-1结尾word2变成相同所需要的最小的步数为dp[i][j] 递推公式:分两种情况,word1.charAt(i-1) 和 word2.charAt(j-1)是否

    2024年02月08日
    浏览(46)
  • Open3D 计算点云的倒角距离(Chamfer Distance)

      Chamfer Distance距离可以计算生成点云数据与标签点云数据之间的平均最短点距离。Open3D可以直接用来计算点云的Chamfer Distance距离,关于的Chamfer Distance距离在点云上应用的更多详细介绍可以参考:PCL 计算点云的倒角距离(Chamfer Distance)或硕士论文: [1]张永涵. 基于深度学

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包