广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现计算最小编辑距离
  • 115
分享到

Python实现计算最小编辑距离

最小距离编辑 2022-06-04 19:06:35 115人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

最小编辑距离或莱文斯坦距离(Levenshtein),指由字符串A转化为字符串B的最小编辑次数。允许的编辑操作有:删除,插入,替换。具体内容可参见:维基百科—莱文斯坦距离。一般代码实现的方式都是通过动态规划

最小编辑距离或莱文斯坦距离(Levenshtein),指由字符串A转化为字符串B的最小编辑次数。允许的编辑操作有:删除,插入,替换。具体内容可参见:维基百科—莱文斯坦距离。一般代码实现的方式都是通过动态规划算法,找出从A转化为B的每一步的最小步骤。从Google图片借来的图,

查看图片

python代码实现, (其中要注意矩阵的下标从1开始,而字符串的下标从0开始):


 def nORMal_leven(str1, str2):
   len_str1 = len(str1) + 1
   len_str2 = len(str2) + 1
   #create matrix
   matrix = [0 for n in range(len_str1 * len_str2)]
   #init x axis
   for i in range(len_str1):
     matrix[i] = i
   #init y axis
   for j in range(0, len(matrix), len_str1):
     if j % len_str1 == 0:
       matrix[j] = j // len_str1

   for i in range(1, len_str1):
     for j in range(1, len_str2):
       if str1[i-1] == str2[j-1]:
         cost = 0
       else:
         cost = 1
       matrix[j*len_str1+i] = min(matrix[(j-1)*len_str1+i]+1,
                     matrix[j*len_str1+(i-1)]+1,
                     matrix[(j-1)*len_str1+(i-1)] + cost)

   return matrix[-1]

最近看文章看到Python库提供了一个包difflib实现了从对象A转化对象B的步骤,那么计算最小编辑距离的代码也可以这样写了:


 def difflib_leven(str1, str2):
  leven_cost = 0
  s = difflib.SequenceMatcher(None, str1, str2)
  for tag, i1, i2, j1, j2 in s.get_opcodes():
    #print('{:7} a[{}: {}] --> b[{}: {}] {} --> {}'.format(tag, i1, i2, j1, j2, str1[i1: i2], str2[j1: j2]))

    if tag == 'replace':
      leven_cost += max(i2-i1, j2-j1)
    elif tag == 'insert':
      leven_cost += (j2-j1)
    elif tag == 'delete':
      leven_cost += (i2-i1)
  return leven_cost

代码地址

--结束END--

本文标题: Python实现计算最小编辑距离

本文链接: https://www.lsjlt.com/news/15177.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现计算最小编辑距离
    最小编辑距离或莱文斯坦距离(Levenshtein),指由字符串A转化为字符串B的最小编辑次数。允许的编辑操作有:删除,插入,替换。具体内容可参见:维基百科—莱文斯坦距离。一般代码实现的方式都是通过动态规划...
    99+
    2022-06-04
    最小 距离 编辑
  • Python文本相似性计算之编辑距离详解
    编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符...
    99+
    2022-06-04
    相似性 详解 文本
  • C++实现LeetCode(72.编辑距离)
    [LeetCode] 72. Edit Distance 编辑距离 Given two words word1 and word2, find the ...
    99+
    2022-11-12
  • 怎么用C++实现编辑距离
    这篇文章主要讲解了“怎么用C++实现编辑距离”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C++实现编辑距离”吧!Edit Distance 编辑距离Given two words&n...
    99+
    2023-06-20
  • C++实现LeetCode(161.一个编辑距离)
    [LeetCode] 161. One Edit Distance 一个编辑距离 Given two strings s and t, determin...
    99+
    2022-11-12
  • Python如何实现距离和相似性计算
    本篇内容主要讲解“Python如何实现距离和相似性计算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现距离和相似性计算”吧!欧氏距离也称欧几里得距离,是指在m维空间中两个点之间...
    99+
    2023-07-05
  • 运筹学-Python实现图论与最短距离
    目录1 概述1.1 贪心算法1.2 图论及求解最短距离 1.2.1 方法选择1.2.2 狄克斯屈拉(Dijkstra)算法2 案例1——贪心算法实现...
    99+
    2022-11-12
  • Python机器学习中实现距离和相似性计算详解
    目录欧氏距离曼哈顿距离切比雪夫距离马氏距离夹角余弦闵可夫斯基距离汉明距离杰卡德距离 & 杰卡德相似系数相关系数 & 相关距离信息熵欧氏距离 也称欧几里得距离,是指在m...
    99+
    2023-03-08
    Python距离计算 Python相似性计算 Python相似性
  • 【算法——Python实现】最大堆和最小
    # _*_ encoding:utf-8 _*_ """ 最大堆 """ class MaxHeap(object): # def __init__(self): # self.data = [] # 创...
    99+
    2023-01-31
    算法 大堆 最小
  • Python如何实现杰卡德距离以及环比算法
    这篇文章将为大家详细讲解有关Python如何实现杰卡德距离以及环比算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言NLP-字符串相似性计算、集合相似性度量杰卡德距离是什么?杰卡德距离(Jaccard...
    99+
    2023-06-29
  • Python实现杰卡德距离以及环比算法讲解
    目录前言杰卡德距离是什么?定义Python实现环比是什么?Python实现前言 NLP-字符串相似性计算、集合相似性度量 提示:以下是本篇文章正文内容,下面案例可供参考 杰卡德距离是...
    99+
    2022-11-13
  • python实现计算器小功能
    本文实例为大家分享了python实现计算器功能的具体代码,供大家参考,具体内容如下 1. 案例介绍 本例利用 Python 开发一个可以进行简单的四则运算的图形化计算器,会用到 Tk...
    99+
    2022-11-12
  • Python 编程算法能否实现实时计算?
    Python 编程语言已经成为数据科学、机器学习和人工智能领域中最受欢迎的编程语言之一。Python 的易用性、可读性和可维护性使其成为许多开发人员和数据科学家的首选编程语言。但是,一个值得关注的问题是: Python 编程语言的解释执行...
    99+
    2023-07-04
    编程算法 numy 实时
  • python怎么实现计算器小功能
    python怎么实现计算器小功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 案例介绍本例利用 Python 开发一个可以进行简单的四则运算的图形化计算器,会用到 T...
    99+
    2023-06-26
  • Python编程算法:如何实现并行计算?
    在计算机科学领域中,计算机的速度一直是一个瓶颈。为了克服这个瓶颈,现代计算机通常采用并行计算方法。并行计算是指通过同时执行多个计算任务来提高计算机的效率。 Python作为一种高级编程语言,也可以实现并行计算。在本篇文章中,我们将探讨如何...
    99+
    2023-06-27
    编程算法 开发技术 git
  • python中的selenium实现自动向下滚动页面并指定最大滑动距离
    需要selenium控制的chrome向下滑动,自动加载一些内容,核心代码是: browser.execute_script("window.scrollBy(0,300)") 这行...
    99+
    2022-11-13
  • 实现用python算法计算圆周率的小诀窍
    目录一、圆周率的历史1、中国2、印度3、欧洲二、用python计算圆周率π【方法】【程序设计思路】【软件环境】【代码】【结果展示】【常见问题答疑】一、圆周率的历史 1、中国 魏晋时期...
    99+
    2022-11-12
  • python基础编程小实例之计算圆的面积
    目录题目代码解析总结编程语言:python3.9 题目 编写程序,要求程序能根据用户输入的圆半径数据计算圆的面积(圆的面积公式:S=πr^2),并分别输出圆的直径和面积 imp...
    99+
    2023-03-13
    python计算圆的面积代码
  • 浅谈算法之最小生成树Kruskal的Python实现
    目录一、前言二、树是什么三、从图到树四、解决生成问题五、从生成树到最小生成树六、实际问题与代码实现七、结尾一、前言 我们先不讲算法的原理,也不讲一些七七八八的概念,因为对于初学者来说,看到这些术语和概念往往会很头疼。...
    99+
    2022-06-02
    Python 最小生成树 Python Kruskal
  • python中的selenium如何实现自动向下滚动页面并指定最大滑动距离
    这篇文章给大家分享的是有关python中的selenium如何实现自动向下滚动页面并指定最大滑动距离的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需要selenium控制的chrome向下滑动,自动加载一些内容,...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作