Part 1: Probable keyboard events
This is the first in a series of blog posts about typing accuracy.
For my master Computer Science at Leiden University and for Telenor Digital I am working on a research project to improve the accuracy of touch screen keyboards on low end devices. I think it is awesome that there are Firefox OS phones available for a price as low as 2000TK (~25$). So lets try to make the user experience as good as possible! The hardware in these low end phones has some quirks that hinder accurate typing (Read The real deal-breaker: typing). We will try to mitigate for those errors and come up with a model that adapts itself to the user and the phone they use.
All prototypes will be written in JavaScript, as I intend to improve the performance of the Firefox OS keyboard. The ideas are generic though, so except for implementation details it should not be too hard to port these ideas to other platforms.
I will write 4 other posts about the project, the topics are as follows
- Part 2: Implementing a touch model from scratch
- Part 3: Collecting touch data and re-executing touch events
- Part 4: Low end touchscreen limitations (Touching your keyboard with two fingers, no way!)
- Part 5: Test method, Results and //TODO’s
Accuracy and autocorrection
So what what is my definition of an accurate keyboard? I would call a keyboard accurate when it allows me to make errors and still give me the result I expected. To meet the expectation of the user, most keyboards use some kind of autocorrection algorithm that tries to correct typos and misspellings. The autocorrect algorithm tries to determine the users’ intention by evaluating the input against a (word frequency) dictionary/language model (LM). Corrections occur only when the algorithm finds a candidate word that meets a certain probability threshold. This threshold is important because the candidate word might not be very likely to occur. Determining when to replace the input is a difficult problem, especially when the users’ input does not exist in the vocabulary (out-of-vocabulary or OOV).