Определение того, насколько сложно набрать слово на QWERTY-клавиатуре - PullRequest
11 голосов
/ 16 декабря 2010

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

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

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

Ответы [ 4 ]

5 голосов
/ 16 декабря 2010

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

1 голос
/ 17 декабря 2010

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

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

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

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

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

1 голос
/ 16 декабря 2010

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

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

РЕДАКТИРОВАТЬ: Я, кажется, запутал людей больше, чем я обычно, когда я отвечаю на SO.Вот суть моего предложения:

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

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

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

0 голосов
/ 16 декабря 2010

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

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

...