Алгоритм оценки сложности слова - PullRequest
5 голосов
/ 25 мая 2009

Мне нужно оценить сложность слов для машинисток. Например, «страдать» легче, чем «люди», потому что «о» и «р» сложнее, чем «е» и «г». Любая клавиша, нажатая мизинцем, сложнее нажать, чем указательным пальцем. И переместить палец из основного положения сложнее, чем не двигаться. И используйте клавишу Shift также добавить твердость.

Какой подход может быть реализован в этом случае?

Ответы [ 8 ]

12 голосов
/ 25 мая 2009

Я бы зашел на сайт Carpalx . На сайте подробно рассказывается, как они оценивают различные раскладки клавиатуры для машинисток, и уже имеется некоторое программное обеспечение с открытым исходным кодом, которое реализует их алгоритмы для любой данной раскладки клавиатуры. (Обязательно проверьте усилие при наборе текста , параметры модели и оценка клавиатуры разделы.)

3 голосов
/ 25 мая 2009

Простой подход:

Оценка каждой буквы на основе позиции пальцев. Добавьте модификатор или множитель для сдвига. Может быть, добавить сокращение для повторяющихся букв?

Прими слово, сложи оценки, и у тебя должен быть один подход.

Тестируйте, изменяйте оценки по мере необходимости, повторяйте, пока не получите осмысленное распределение.

1 голос
/ 26 мая 2009

Вместо того, чтобы угадывать, измерить его.

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

Конечно, будут некоторые пары букв, которые нигде не встречаются в ваших словах (например, ZQ). Но эти пары букв, вероятно, в любом случае не будут иметь отношения к вашей работе, если только вам не нужно набирать случайные последовательности букв.

Вам также необходимо каким-то образом учитывать опечатки. Вы можете либо просто отбросить эти буквы, либо использовать опечатки, чтобы добавить какое-то наказание к этой паре букв (что отражает неправильный ввод одной из букв, указывающий на то, что эту пару букв сложно ввести).

1 голос
/ 25 мая 2009

Сложность при наборе текста очень субъективна - это похоже на обучение игре на музыкальном инструменте, поэтому слово, которое одному человеку очень сложно набрать, - это кусок пирога для другого. Возьмите, например, кого-то, кто никогда раньше не сидел за клавиатурой, и попросите его напечатать слово «Microsoft» ... они будут охотиться и клевать, и, вероятно, им потребуется несколько секунд, чтобы набрать его. Возьмите своего обычного программиста, который набирает это слово несколько десятков раз в день, и они дадут о себе знать менее чем за секунду.

С другой стороны, возьмите первого человека и попросите его ввести слово «Микроскоп», и они, вероятно, займут очень похожее время, как и «Microsoft», но программист получит « s "и либо завершите слово как" Microsoft "перед удалением и заменой символов на правильные, либо они заметно замедлятся, когда нажимают" s ", когда их пальцы не сразу узнают шаблон для" Микроскопа "- на самом деле, мне просто нужно было набрать его 3 раза, потому что мои пальцы автоматически заканчивают рисунок для меня, и я не думаю об этом.

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

1 голос
/ 25 мая 2009

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

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

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

1 голос
/ 25 мая 2009

Вы можете хранить двумерное представление вашей клавиатуры в массиве в виде некоего связанного графа с именем ключа и координатами в виде узлов, а 2 координаты - в том месте, где находятся ваши руки (вокруг F и J? ), затем для каждой клавиши ввода вы рассчитываете расстояния от клавиши на графике до двух ваших «парящих клавиш», берете минимум, прибавляете штраф за смену (прописные буквы) и выводите (возможно, взвешенный) результат.

0 голосов
/ 25 мая 2009

Чисто исходя из расстояния между клавишами, рассчитайте расстояние, используя таблицу ключей, и суммируйте расстояния.

0 голосов
/ 25 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...