Определение того, насколько сложно набрать слово на QWERTY-клавиатуре
Я ищу достаточно простой алгоритм, чтобы определить, насколько сложно набрать слово в макете QWERTY.
Слова не обязательно должны быть словарными словами, поэтому список слов с ошибками и т. П. Не подходит. Я уверен, что должен быть существующий, хорошо проверенный алгоритм, но я ничего не могу найти.
Может ли кто-нибудь предложить какую-либо помощь или совет? Я кодирую алгоритм на python, но любой другой язык или псевдокод приветствуются.
4 ответа
Существует такое сравнение между раскладками QWERTY, Colemak и Dvorak, которое вычисляет расстояние между набранными ключами, процентное соотношение ключей на одной руке и т. Д. С исходным кодом на Java. Эти метрики в комбинации должны дать очень хорошую оценку "типичности" слова.
У меня нет никаких алгоритмов, чтобы предложить, но несколько советов:
Я использую обе руки для ввода текста, это означает, что клавиатура примерно разделена на две половины, часто возникают проблемы с координацией между двумя руками, что означает, что каждая печатает буквы в "правильном" порядке, но чередование является неправильным. Это особенно верно, если в одной руке набрано больше букв, чем в другой, типично: "the", потому что тип левой руки
t
а такжеe
и типы правой рукиh
,частые "промахи" означают, что часто человек пропускает клавишу и нажимает другую; Также часто встречаются "добавление" / "удаление", то есть ввод дополнительной клавиши или недостаточно сильное нажатие -> это означает, что (очевидно) чем больше букв, тем сложнее правильно понять слово.
Смешанный регистр усложняет задачу, он требует синхронизации между нажатием CAPS и нажатием клавиш, поэтому вполне вероятно, что соседние клавиши не будут иметь правильного верхнего / нижнего регистра.
Надеюсь это поможет...
Возьмите свой набор Эрудит, запишите баллы для каждой буквы, суммируйте баллы за слово, эй, заранее, у вас есть свой алгоритм. Не уверен, что он полностью соответствует вашим требованиям, но он может указать вам полезное направление. Вы можете, например, захотеть присвоить баллы не только отдельным буквам, но и ди- и триграммам.
Я не знаю ни о каком существующем источнике необходимой вам информации, возможно, вы могли бы придумать свои собственные буквенные оценки, исследуя клавиатуру и назначая более высокие оценки более сложным буквам: так 1 для "a", 8 для "q" ', 2 для' м ', и так далее.
РЕДАКТИРОВАТЬ: Кажется, я запутал людей больше, чем я обычно, когда я отвечаю на SO. Вот скелет моего предложения:
а) Перечислите все триграммы и диграммы, которые встречаются на английском (или на вашем языке). Каждому из них присваивают оценку сложности набора текста. Сделайте то же самое для отдельных букв (в конце концов, 4-буквенное слово может состоять из триграммы и буквы, а не из двух цифр).
б) Оценка сложности ввода слова как сумма сложности ввода его компонентов.
Что касается оценки сложности, я понятия не имею, но вы могли бы начать с 1 для буквы на клавишах дома на клавиатуре, 2 для буквы, которая использует указательные пальцы, но не является клавишей дома, 3 для буквы который использует 2-й или 3-й пальцы на вашей руке, и так далее. Затем для биграмм: низкий балл для простых букв слева и справа (или справа и слева) по порядку, высокий для сложных букв с одной стороны по порядку (например, qz, хотя, возможно, это не подходит для английского языка). И вы идете.
Я думаю, что алгоритм расстояний между людьми может быть ближе всего к тому, на что вы смотрите. Этот алгоритм учитывает расстояние от цели до источника в четырехугольной форме.
Что касается реализации в python, для вашей конкретной потребности в сложности QWERTY вам придется написать ее для себя, в противном случае можно найти несколько реализаций расстояний в человеко-ручном режиме, если вы заглянете в Google, чтобы найти "n Puzzle Solver in Python".