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!