Matriz de distancia de cadena en Python usando pdist

¿Cómo calcular la matriz de distancia de cadenas de Jaro Winkler en Python?

Tengo una gran variedad de cadenas ingresadas a mano (nombres y números de registro) y estoy tratando de encontrar duplicados en la lista, incluidos los duplicados que pueden tener ligeras variaciones en la ortografía. UNArespuesta a una pregunta similar sugirió usar la función pdist de Scipy con una función de distancia personalizada. Intenté implementar esta solución con la función jaro_winkler en el paquete Levenshtein. El problema con esto es que la función jaro_winkler requiere una entrada de cadena, mientras que la función pdict parece requerir una entrada de matriz 2D.

Ejemplo:

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)

Resultado esperado: algo como esto:

          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

Error real

jaro_winkler expected two Strings or two Unicodes

Supongo que esto se debe a que la función jaro_winkler está viendo un ndarray en lugar de una cadena, y no estoy seguro de cómo convertir la entrada de la función en una cadena en el contexto de la función pdist.

¿Alguien tiene una sugerencia para permitir que esto funcione? ¡Gracias por adelantado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta