Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写一个Python方法,根据字符串生成打字错误_Python_Levenshtein Distance - Fatal编程技术网

编写一个Python方法,根据字符串生成打字错误

编写一个Python方法,根据字符串生成打字错误,python,levenshtein-distance,Python,Levenshtein Distance,我可以添加一些东西,根据Levenshtein距离2,或者类似的东西,或者反向工程来创建打字错误 然而,最常见的打字错误是什么 有人写过方法吗?没有一般的打字生成算法,因为这种算法取决于目标语言和应用程序-即要生成垃圾邮件域,您基本上需要应用以下策略(以meta.stackoverflow.com为例): 缺少的点:met*as*tackoverflow.com(应该很简单;) 字符插入:meta.stackoverfo*ww*.com(只需为每个字符添加一个副本) 字符省略:meta.stac

我可以添加一些东西,根据Levenshtein距离2,或者类似的东西,或者反向工程来创建打字错误

然而,最常见的打字错误是什么


有人写过方法吗?

没有一般的打字生成算法,因为这种算法取决于目标语言和应用程序-即要生成垃圾邮件域,您基本上需要应用以下策略(以meta.stackoverflow.com为例):

  • 缺少的点:met*as*tackoverflow.com(应该很简单;)
  • 字符插入:meta.stackoverfo*ww*.com(只需为每个字符添加一个副本)
  • 字符省略:meta.stackoverf*lw*.com(只需删除一个字符)
  • 字符排列:meta.stackove*fr*low.com(这里是纯数学)
  • 字符替换:meta.*d*tackoverflow.com(现在我们至少可以有两种策略,见下文)
  • 在字符替换的情况下,我们至少可以有两种情况:

  • 根据语言的不同,发音相似的字母(如c、k、z、T)
  • 附近的字母接近打字错误(即qwerty s d,d f)Duh,我在这里用s d case做了一个打字错误:)

  • 希望这能有所帮助。

    我觉得单靠Levenshtein距离是不够的,因为它没有考虑键盘,例如kitten和kitten的距离应该比Kittn和kitten(在qwerty键盘上)的距离大得多。哦,顺便说一句,你的用户名有两个输入错误。你知道,这是“请”。有趣的是,我问了一个问题,考虑到你的第二个“字符替换场景(键盘接近度)”,是否存在某种Levenshtein距离。你可能知道吗?@PascalvKooten可能是这样的: