Определение того, как сложно вводить слово на клавиатуре QWERTY

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

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

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

Ответ 1

Существует это сравнение между макетами QWERTY, Colemak и Dvorak, которые вычисляют расстояние между введенными ключами, процентное соотношение клавиш на одном и том же ручной и т.д. с исходным кодом на Java. Эти метрики в комбинации должны давать очень хорошую оценку "печатаемости" слова.

Ответ 2

Выньте свой набор Scrabble, запишите оценки для каждой буквы, суммируйте оценки для слова, эй, предварительно, у вас есть свой алгоритм. Не уверен, что он полностью удовлетворяет вашим требованиям, но он может указать вам в полезном направлении. Например, вы можете присвоить оценки не только отдельным буквам, но также и ди- и триграмм.

Я не знаю ни одного существующего источника необходимой вам информации, возможно, вы могли бы придумать свои собственные баллы, изучив клавиатуру и присвоив более высокие баллы более трудным буквам: так что 1 для 'a', 8 для 'q', 2 для 'm' и т.д.

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

a) Перечислите все триграммы и диграмы, которые происходят на английском языке (или на вашем языке). Каждому из них присваивается сложный балл. Сделайте то же самое для отдельных букв (ведь буква из 4 букв может состоять из триграммы и буквы, а не двух цифр).

b) Оцените сложность ввода слова как суммы трудности ввода его компонентов.

Что касается оценок сложности, у меня нет подсказки, но вы можете начать с 1 для письма на домашних клавишах на клавиатуре, 2 для письма, которое использует указательные пальцы, но не является домашним ключом, 3 для письма, которое использует 2 или 3 пальца на руке и так далее. Затем для диграмм, забивайте низкие для простых букв слева и справа (или справа и слева) последовательно, высоко для сложных букв с одной стороны в последовательности (например, qz, хотя это, возможно, не подходит для английского). И вы идете.

Ответ 3

У меня нет никаких алгоритмов для предложения, но несколько советов:

  • Я использую обе руки для ввода, а это означает, что клавиатура грубо разделена на две половины, часто возникают проблемы координации между двумя руками, что означает, что каждый тип буквы в "правильном" порядке, но неправильное чередование. Это особенно верно, если одна рука имеет больше букв для ввода, чем другая, типичная: "the", потому что левая рука t и e, а правая - h.

  • "промахи" часто встречаются, а это означает, что часто время промахивается клавишей и ударяет другой ключ; "добавление" / "удаление" также является частым, например, набрав дополнительный ключ или недостаточно сильно нажав → это означает, что (очевидно), чем больше букв есть, тем труднее получить правильное слово.

  • Смешивание делает это сложнее, для этого требуется синхронизация между нажатием CAPS и нажатием клавиш, поэтому вероятно, что близлежащие клавиши не будут иметь правый верхний/нижний регистр.

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

Ответ 4

Я думаю, manhatten distance алгоритм может быть самым близким к тому, что вы смотрите. В этом алгоритме учитывается расстояние до цели от источника четырехугольным образом.

Что касается реализации на python, для вашей конкретной потребности в трудностях в QWERTY вам придется написать один для себя, иначе несколько вариантов реализации manhatten можно найти, если вы google для "n головоломка в python"