tags:

views:

311

answers:

8

I need to estimate a complexity of words for typists. For example "suffer" is easy than "people" becouse "o" and "p" is harder than "e" and "r". Any key pressed by little finger is more hard to hit than by index finger. And move finger from basic position is more harder than do not move. And use shift key also add hardness.

What approach can be imlemented in this case?

+3  A: 

A simple approach:

Score each letter based off the finger positions. Add a modifier or multiplier for shift. Maybe add a reduction for repeated letters?

Take the word, add up the scores, and you should have one approach.

Test, modify scores as needed, repeat until you have a meaningful distribution.

Reed Copsey
Repeated letters, yeah it's another one.
FFire
+1  A: 

You could hold a 2-D representation of your keyboard in an array as a sort of a connected graph, with the key name and coordonates as nodes, and 2 coordonates to where your hands are hovering over (around F and J?), then for each input key you calculate the distances from the key in the graph to your 2 "hover keys", take the minimum, add in a shift (caps) penalty and output a (possibly weighted) score.

Blindy
Not only F and J hover keys, ASD and KL: also hover keys. But thanks any way.
FFire
A: 

You may want to try a very basic approach by giving a value to each key that may be typed, and simply add the value of all keys of the word you want to evaluate...

Benoît
A: 

Purely based on distance between keys, calculate the distance using a table of keys, and add up distances.

Dmitri Farkov
+10  A: 

I would check out the Carpalx website. The site details how they rate different keyboard layouts for typists, and already has some open-source software that implements their algorithms for any given keyboard layout. (Make sure to check out the typing effort, model parameters and keyboard evaluation sections.)

Daniel Lew
+1  A: 

As a base, you can give each key a difficulty rating and then just add the ratings.

Then you probably want to spot difficult finger patterns. For example the combination "sle" is more difficult than "sfe", because the former is a left-right-left combination. It's more difficult for the brain to coordinate between left and right hand as they are connected to each half of the brain, than it is to coordinate fingers on the same hand. It's common to press the keys in the wrong order in such combinations.

How common a word is also has an effect on the difficulty. More common words are typed more often so the brain learns the patterns. Also when a word contains a common word it's easier to type, like "hand" as it contains "and". On the other hand, words that contain only a part of a more common word becomes harder, as the brain wants to follow the more common pattern.

Guffa
+1  A: 

Typing difficulty is very subjective - it's akin to learning to play a musical instrument, so a word that is very difficult for one person to type is a piece of cake for another. Take for instance someone who's never sat at a keyboard before and ask them to type the word "Microsoft"... they'll hunt and peck and it'll probably take them a few seconds to type it. Take your average programmer that types this word a few dozen times a day and they'll rattle it off in less than a second.

On the other hand, take the first person and have them type the word "Microscope" and they'll likely take a very similar amount of time as they did to type "Microsoft", but the programmer will get to the "s" and either finish the word as "Microsoft" before deleting and replacing the characters with the correct ones, or they'll noticeably slow as they hit the "s" when their fingers don't immediately know the pattern for "Microscope" - in fact, I just had to type it 3 times because my fingers automatically finish the pattern for me without me thinking about it.

As far as word complexity goes therefore, it's not quite as straightforward as calculating the distance from the home keys, it comes down to the background environment of the typist, their usual typing speed, their literacy with the keyboard and a host of other things.

BenAlabaster
I catch the point, thanks.But it's measuring for persons who deal with touch typing, not for newbie.
FFire
+1  A: 

Instead of guessing, measure it.

Come up with a list of 100 words and ask a handful of people to type them in. Measure the amount of time between each keystroke. For every pair of letters, accumulate the total time taken by the user to move from the first to the second and divide by the number of times that letter pair appears to get an average, which is an actual direct estimate of the difficulty of moving between those two keys.

Of course, there will be some pairs of letters that don't appear anywhere in your words (e.g. ZQ). But those letter pairs will probably be irrelevant to your work anyway, unless you need to score random sequences of letters.

You'll also need to somehow account for mistyped letters. You could either discard these outright, or use mistyped letters to add some sort of penalty to that letter pair (reflecting the fact that mistyping one of the letters indicates that this letter pair may be difficult to type).

j_random_hacker