Distancia de edición de Python

Zeeshan Afridi 21 junio 2023
Distancia de edición de Python

Hoy aprenderemos sobre la distancia de edición en Python. También exploraremos la inserción, eliminación, sustitución e implementación recursiva de la cadena de caracteres.

Editar distancia en Python

La distancia de edición es la cantidad requerida para la transposición de una Cadena a otra Cadena. Esta transposición se realiza por recursión, sustitución, inserción y borrado de los caracteres de una cadena.

El número de eliminaciones, inserciones y reemplazos de caracteres necesarios para convertir una palabra en otra depende de qué tan cerca se hayan editado las dos palabras.

También se trata como la distancia Levenshtein en Python porque no necesita que dos cadenas tengan la misma longitud para comparar; la distancia Levenshtein tiene una influencia significativa.

La distancia Levenshtein es sencilla de comprender intuitivamente. El número total de modificaciones de un solo carácter determina la distancia entre los dos.

La distancia de salida indica cuántas modificaciones se requirieron para que las dos palabras fueran idénticas. Cuanto menor sea la distancia de salida, menos cambios serán necesarios.

Entendamos la distancia de edición utilizando el siguiente código de ejemplo para la implementación de inserción, eliminación, sustitución y recursividad de la cadena de caracteres.

Inserción de la cadena de caracteres

En el siguiente código, se inserta t entre i y n en la máquina de palabras.

Código de ejemplo:

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

Producción :

Machitne

Eliminación de la cadena de caracteres

En el siguiente código, la c se elimina entre a y h en la máquina de palabras.

Código de ejemplo:

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

Producción :

Mahine

Sustitución de la cadena de caracteres

En el siguiente código, c se reemplaza por a entre a y h en la máquina de palabras.

Código de ejemplo:

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

Producción :

Maahine

Implementación recursiva de la cadena de caracteres

La distancia de edición entre máquina y aprendizaje es cinco, como se muestra en el resultado a continuación.

Podemos tomar cualquier entrada de cadena del usuario, y la distancia Levenshtein se implementa recursivamente en el siguiente método de Python.

Esta técnica recursiva es ineficiente ya que las distancias de Levenshtein de las subcadenas idénticas se calculan repetidamente.

Código de ejemplo:

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])

Producción :

Type here for word 1: machine
Type here for word 2: learning
5
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn