Имитация опечаток в Java без всей занятой работы - PullRequest
1 голос
/ 08 июля 2011

Как мне моделировать естественные опечатки в Java? Я думал об использовании Map<Character, char[]> и использовании метода для перебора символов в строке, в которой я хочу имитировать опечатки, а затем получить значения для этого символа на карте и случайно выбрать один из них. Проблема в том, что много работы, добавление всех символов на клавиатуре и добавление соседей.

Я на правильном пути, или есть более легкий путь?

Ответы [ 2 ]

5 голосов
/ 08 июля 2011

Я думаю, у вас уже есть правильная идея.Единственное предложение, которое я хотел бы сделать, это то, что вы можете автоматически сгенерировать эту карту, взяв массив String[] со строками "qwertyuiop", "asdfghjkl" и "zxcvbnm" (предполагая клавиатуру QWERTY) и повторяя символы в каждомвставка в карту всех соседних символов для каждой клавиши.

Обновление : Опять же, может быть, это больше проблем, чем стоит .

РазмерJava-программы, чтобы сделать то, что я только что описал: 2418 символов.
Размер вывода: 517 символов.

Я предполагаю, что одно преимущество для вашего решения в коде состоит в том, что он позволяет поддерживать более одной клавиатурырасположение.

4 голосов
/ 08 июля 2011

Что такое натуральная опечатка и для чего она нужна?

Вы должны думать о

  1. возможно удваивает и символы, полностью пропуская отдельные символы
  2. отсутствует правильное действие сдвига
  3. Примите во внимание, что если нажата неправильная клавиша, статус смены будет по-прежнему применяться (@ можно легко ошибиться с W, а не с w)
  4. хотите ли вы имитировать проблему случайного нажатия Capslock вместо вкладки
  5. хотите ли вы имитировать опечатки поведения «мертвого ключа» (в некоторых локалях IME установлен на «мертвый ключ»), что означает, что ' a становится á волшебным образом, если цитата не повторяется. Это подлинный источник частых человеческих опечаток
...