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?
InformationsquelleAutor El_Patrón | 2011-04-05