当Damerau-Levenshtein距离等于1

时间:2017-07-18 21:43:05

标签: python pandas damerau-levenshtein

我有一个庞大的Pandas数据帧,其中包含在键盘输入的数据。数据框中的一列代表英国邮政编码数据。不可避免地,对于大型数据集,存在许多键入错误。我使用pyxDamerauLevenshtein库来计算无法识别的邮政编码与包含所有可能的邮政编码的数组之间的编辑距离,然后将只有一次编辑的邮政编码提供给用户,作为可能的替代方案,用于输入数据(DL距离= 1) 。这很好用,我对速度感到相当满意。但是,邮政编码术语中的单个编辑意味着可能有50-60个替代方案。我希望能够根据所识别的编辑类型订购替代品。因此,举一个例子,G代替F(在QWERTY键盘上相邻)可能比L代替F更可能。另外,插入相同的字母两次将比插入相邻字母更可能,反过来,比从键盘的另一端插入完全不同的字母更有可能。提供替代邮政编码的顺序应该反映这些概率。

marmeladze在Edit distance such as Levenshtein taking into account proximity on keyboard的回答建议使用键盘键之间的欧几里德距离;这似乎是一个合理的想法。但是,我的问题是,当Damerau-Levenshtein距离等于1时,如何有效地提取2个字符串之间的特定编辑?

作为一个例子,如果我有一个邮政编码ZE2 9YM(不存在),代码应该识别所有其他只是一个编辑的邮政编码,但也应该指出编辑的性质,可能是这样的:

Entered code    Possible alternative    DL dist       Edit type    Edit
     ZE2 9YM                 ZE2 9YA          1    Substitution     A-M
     ZE2 9YM                 ZE2 9YN          1    Substitution     N-M
         ...

并且,在上述情况下,M更有可能代替N(相邻键)而不是M代替A。

是否有人知道将计算Damerau-Levenshtein距离的Python库并将输出矩阵(连同编辑摘要)?

0 个答案:

没有答案