如何在 Python 中计算字符串的 Jaro Winkler 距离矩阵?
我有大量手动输入的字符串(名称和记录编号),我正在尝试在列表中查找重复项,包括拼写可能略有不同的重复项。对类似问题的回答建议使用 Scipy 的 pdist 函数和自定义距离函数。我尝试使用 Levenshtein 包中的 jaro_winkler 函数来实现这个解决方案。问题在于 jaro_winkler 函数需要字符串输入,而 pdict 函数似乎需要二维数组输入。
例子:
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)
预期输出 - 像这样:
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
实际错误:
jaro_winkler expected two Strings or two Unicodes
我假设这是因为 jaro_winkler 函数看到的是 ndarray 而不是字符串,并且我不确定如何在 pdist 函数的上下文中将函数输入转换为字符串。
有没有人建议允许这个工作?提前致谢!