当DamerauLevenshtein距离等于1时使用Python提取特定的编辑

2024-09-29 22:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大熊猫数据帧,包含在键盘上输入的数据。dataframe中的一列表示英国的邮政编码数据。对于大型数据集,不可避免地会出现一些键入错误。我使用pyxDamerauLevenshtein库来计算未识别的邮政编码与包含所有可能邮政编码的数组之间的编辑距离,然后将与输入数据仅一次编辑的邮政编码(DL distance=1)呈现给用户作为可能的替代。速度和速度我很满意。然而,在邮政编码术语中,一次编辑意味着可能有50-60个备选方案。我希望能够根据确定的编辑类型来订购备选方案。所以,举个例子,G代替F(QWERTY键盘上的相邻字母)可能比L代替F的可能性更大。同样,插入同一个字母两次的可能性比插入相邻字母的可能性更大,而相邻字母的插入又比从键盘另一端插入完全不同的字母的可能性更大键盘。备选邮政编码的呈现顺序应反映这些概率。在

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

例如,如果我有一个邮政编码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

有没有人知道有一个Python库可以计算Damerau-Levenshtein距离并输出矩阵(以及编辑摘要)?在


Tags: 数据编辑距离字母方案键盘可能性edit

热门问题