Matriz de distância de string em Python usando pdist

Como calcular a matriz de distâncias Jaro Winkler de strings em Python?

Eu tenho uma grande variedade de seqüências digitadas à mão (nomes e números de registros) e estou tentando encontrar duplicatas na lista, incluindo duplicatas que podem ter pequenas variações na ortografia. UMAresposta a uma pergunta semelhante sugerido o uso da função pdist do Scipy com uma função de distância personalizada. Eu tentei implementar esta solução com a função jaro_winkler no pacote Levenshtein. O problema é que a função jaro_winkler requer uma entrada de string, enquanto a função pdict parece exigir uma entrada de matriz 2D.

Exemplo:

import numpy as np
from scipy.spatial.distance import pdist
from Levenshtein import jaro_winkler

fname = np.array(['Bob','Carl','Kristen','Calr', 'Doug']).reshape(-1,1)
dm = pdist(fname, jaro_winkler)
dm = squareform(dm)

Saída esperada - algo como isto:

          Bob  Carl   Kristen  Calr  Doug
Bob       1.0   -        -       -     -
Carl      0.0   1.0      -       -     -
Kristen   0.0   0.46    1.0      -     -
Calr      0.0   0.93    0.46    1.0    -
Doug      0.53  0.0     0.0     0.0   1.0

Erro real:

jaro_winkler expected two Strings or two Unicodes

Estou assumindo que isso ocorre porque a função jaro_winkler está vendo um ndarray em vez de uma string, e não sei como converter a entrada da função em uma string no contexto da função pdist.

Alguém tem uma sugestão para permitir que isso funcione? Desde já, obrigado!

questionAnswers(2)

yourAnswerToTheQuestion