迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 编辑距离

作者:迹忆客 最近更新:2023/06/29 浏览次数:

今天,我们将学习Python中的编辑距离。 我们还将探讨字符串的插入、删除、替换和递归实现。


在 Python 中编辑距离

编辑距离是将一个字符串转置为另一个字符串所需的量。 这种转置是通过递归、替换、插入和删除字符串的字符来完成的。

将一个单词变成另一个单词所需的字符删除、插入和替换次数取决于两个单词编辑的紧密程度。

它在 Python 中也被称为 Levenshtein 距离,因为它不需要比较两个字符串的长度相同; Levenshtein 距离有很大的影响。

编辑距离很容易直观地理解。 单字符修改的总数决定了两者之间的距离。

输出距离表示需要多少修改才能使两个单词相同。 输出距离越小,需要的改变就越少。

让我们通过以下字符串插入、删除、替换和递归实现的示例代码来了解编辑距离。

字符串的插入

在下面的代码中,t 被插入到字机中的 i 和 n 之间。

示例代码:

w= "Machine"
w= w[:5] + "t" + w[5:]
print(w)

输出:

Machitne

字符串的删除

下面的代码中,在字机中a和h之间删除了c。

示例代码:

w= "Machine"
w = w[:2] + w[3:]
print(w)

输出:

Mahine

字符串的替换

在下面的代码中,c在字机中的a和h之间被a替换。

示例代码:

w = "Machine"
w = w[:2] + "a" + w[3:]
print(w)

输出:

Maahine

字符串的递归实现

机器和学习之间的编辑距离为 5,如下面的输出所示。

我们可以获取用户输入的任何字符串,并在以下 Python 方法中递归实现编辑距离。

这种递归技术效率低下,因为重复计算相同子串的编辑距离。

示例代码:

w1=input("Type here for word 1: ")
w2=input("Type here for word 2: ")

len1=len(w1)
len2=len(w2)

a =[[0]*(len2+1) for _ in range(len1+1)]

for m in range(0,len1+1):
    a[m][0]=m
    
for n in range(0,len2+1):
    a[0][n]=n
    
for m in range (1,len1+1):
    for n in range(1,len2+1):
        if w1[m-1]==w2[n-1]:
            a[m][n] = a[m-1][n-1]
        else :
            a[m][n]= min(a[m][n-1],a[m-1][n],a[m-1][n-1])+1
print(a[m][n])

输出:

Type here for word 1: machine
Type here for word 2: learning
5

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Pandas read_csv()函数

发布时间:2024/04/24 浏览次数:254 分类:Python

Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。

Pandas 追加数据到 CSV 中

发布时间:2024/04/24 浏览次数:352 分类:Python

本教程演示了如何在追加模式下使用 to_csv()向现有的 CSV 文件添加数据。

Pandas 多列合并

发布时间:2024/04/24 浏览次数:628 分类:Python

本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。

Pandas loc vs iloc

发布时间:2024/04/24 浏览次数:837 分类:Python

本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便