Напишите метод Python для генерации опечаток на основе строки - PullRequest
3 голосов
/ 15 сентября 2011

Я мог бы просто добавить что-то, что создает опечатки, основанные на расстоянии Левенштейна в два, или что-то в этом роде, или обратный инжиниринг Статья Норвиг о проверке орфографии .

Однако, каковы наиболее распространенные способы опечаток?

Кто-нибудь написал метод?

1 Ответ

2 голосов
/ 15 сентября 2011

Не существует такого понятия, как общий алгоритм генерации опечаток, потому что этот тип алгоритма зависит от целевого языка и приложения - т.е. для генерации спам-доменов вам в основном необходимо применять следующие стратегии (на примере meta.stackoverflow.com):

  1. пропущенных точек: встречено * как * tackoverflow.com (должно быть просто;)
  2. вставка символов: meta.stackoverflo * ww *. Com (просто добавьте дубликаты для каждого символа)
  3. пропуск символа: meta.stackoverf * lw *. Com (просто перетащите символ)
  4. перестановка символов: meta.stackove * fr * low.com (чистая математика здесь)
  5. замена символов: мета. * d * tackoverflow.com (теперь здесь у нас может быть как минимум две стратегии, см. Ниже)

В случае замены персонажа у нас может быть как минимум два сценария:

  1. Схожие звучащие буквы (например, c <-> k, z <-> ts) в зависимости от языка
  2. Ближайшие буквенные опечатки (т. Е. Для qwerty s <-> d, d <-> f) Да, я действительно сделал здесь опечатку с s <-> d case:)

Надеюсь, это поможет ..

...