primero quiero decir que soy un novato en python. Estoy tratando de calcular la distancia de Levenshtein para muchas listas de palabras. Hasta ahora, he logrado escribir el código para un par de palabras, pero estoy teniendo problemas para hacerlo por listas. Acabo de habe dos listas de palabras con uno debajo del otro como esto: Carlos stiv Petercalculando distancia de Levenshtein usando listas de palabras
quiero usar la distancia Levenshtein de un enfoque similitud. ¿Podría alguien decirme cómo puedo cargar las listas y luego usar una función para calcular la distancia?
¡Lo apreciaré!
Aquí está mi código sólo por dos cadenas:
#!/usr/bin/env python
# -*- coding=utf-8 -*-
def lev_dist(source, target):
if source == target:
return 0
#words = open(test_file.txt,'r').read().split();
# Prepare matrix
slen, tlen = len(source), len(target)
dist = [[0 for i in range(tlen+1)] for x in range(slen+1)]
for i in xrange(slen+1):
dist[i][0] = i
for j in xrange(tlen+1):
dist[0][j] = j
# Counting distance
for i in xrange(slen):
for j in xrange(tlen):
cost = 0 if source[i] == target[j] else 1
dist[i+1][j+1] = min(
dist[i][j+1] + 1, # deletion
dist[i+1][j] + 1, # insertion
dist[i][j] + cost # substitution
)
return dist[-1][-1]
if __name__ == '__main__':
import sys
if len(sys.argv) != 3:
print 'Usage: You have to enter a source_word and a target_word'
sys.exit(-1)
source, target = sys.argv[1], sys.argv[2]
print lev_dist(source, target)
¿Qué quieres hacer? Calcule la distancia para cada par en la lista? –
Paso 1. Agregue código para leer su lista (¿o son dos listas?). Paso 2. Agregue un ciclo para iterar a través de su lista (¿o son dos listas?). Paso 3. Publica el nuevo código para que podamos comentar sobre él. El código que publicaste es bueno, pero también debes escribir las dos partes siguientes. –
Thans para las respuestas rápidas. Larsmans: quiero calcular la distancia para cada palabra de una lista a cada palabra de la segunda lista. S.Lott: ¡hay dos listas! –