le calcul de la Distance de Levenshtein, à l'aide de listes de mots
d'abord je tiens à dire que je suis un débutant en python. J'ai essayé de calculer la Distance de Levenshtein pour de nombreuses listes de mot. Jusqu'à maintenant, je réussir à écrire le code pour une paire de word, mais je vais avoir quelques problèmes à le faire pour les listes. Je viens de habe deux listes avec des mots un en dessous de l'autre comme ceci:
carlos
stiv
peter
Je veux utiliser le Levenshtein d'une similitude d'approche. Pourrait somebady me dire comment je peux charger les listes et ensuite utiliser une fonction pour calculer de la distance?
Je vais apprécié!
Voici mon code juste pour deux chaînes:
#!/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)
- Que voulez-vous faire? Calculer la distance de chaque paire dans la liste?
- Étape 1. Ajouter le code pour lire votre liste (ou est-ce deux listes?). Étape 2. Ajouter une boucle pour parcourir par le biais de votre liste (ou est-ce deux listes?). Étape 3. Post le nouveau code afin que nous puissions commenter. Le code que vous avez posté est bon, mais vous devez écrire les deux prochaines parties, aussi.
- Thans pour les réponses rapides. Larsmans: je veux calculer la distance de chaque mot d'une liste de tous les mots de la deuxième liste. S. Lott: il y a deux listes!
- Des idées comment puis-je le faire avec deux listes?
Vous devez vous connecter pour publier un commentaire.
J'ai finalement obtenu le code de travail avec l'aide d'un ami 🙂
Vous pouvez calculer la distance de Levenshtein et de le comparer à chaque mot de la deuxième liste de modification de la dernière ligne dans le script, j'.e: print(list1[0], liste2[i]), pour comparer le premier mot de la liste 1 de chaque mot dans la liste 2.
Grâce
Ne pas réinventer roues:
http://pypi.python.org/pypi/python-Levenshtein/