Intyper, the Intelligent Typing Tutor

2014-02-12 18:24:04 | Post by: Yuri
Blog entry cover image.

A touch-typing tutor software called Intyper was a proof-of-concept type of software that was supposed to show a possibility of using machine learning algortithms in an application that otherwise would not be known for using particularly advanced techniques of interaction with the user. The area in which the algorithm was used was touch-typing tuition, which is known for being particularly boring and repetitive when done using conventional touch-typing training techniques.

Traditionally touchtyping was done in a classroom environment and the whole trend started in the middle of the last century. Of course at the time there was no computers in the way we understand it now and students were most often secretaries that were looking to improve their career prospects by learning to touchtype using a regular typewriter.

They had to follow a set of predefined exercises coming from some sort of a training manual by repeatedly typing them many hundred, if not thousands of times. There was a tutor who would oversee the process and assess the student's performance and would decide whether they are complete with an exercise by counting the number of errors a student would have made, as well the amount of text they had managed to type in a specific time interval.

If the touch-typing tutor was any decent, they would pay attention to the patterns of the errors that a student was making and send them to repeat only those exercises that would stress only those specific areas that are problematic for that student. It would help the student to save time and some boredom by not having to go through the same exercises again and again but only those that would improve their results upon successful completion.

The boredom was indeed a rather serious issue, because oftentimes pupils would have to:

  • Type nonsentical letter combinations, like afgha afgha afgha, or rfv rfv rfv and so on.
  • Do it many thousand times in order to get typing mechanics into their circuits.
Ideally of course there would be no need to go through so much pain if the exercises were:
  • Not repetitive and had some variation within.
  • Used common words of the language of training.
  • Specifically targeted at the problematic areas of the student.
While it would be possible to achieve this with a real tutor, it would have to be done on an individual basis and would be rather time consuming because the tutor would have to calculate the statistics and make up exercises manually. Of course that would be extremely expensive and not worthwhile for many willing to learn how to touch type — up till now.

The recent developments in computing power, linguistics and artificial intelligence led to a situation where it is now possible to implement a role of an intelligent typing tutor in software. Moreover, not only that but also with a very substantial benefit of a very low cost of supervision, and in case of our Intyper project, in fact for free. You can have a look at such a tutor by following this link.

While the procedure of learning touch-typing in Intyper appears to be rather straight-forward to anyone who has spent even a small amount of type using other touch-typing software, it took several years in the backstages to develop the idea of its functionality and over a month of full time work to implement that in code. The details of the exact implementation may seem to be complex and elusive but it should be easy enough to get an overall feel of its operation.

Shortly, the whole structure is based on a database of common words of the English langugage, 10000 words to be exact, which would probably cover around 99.9% percent of the active vocabulary of a regular educated speaker. Of course simply having a bunch of words would not be enough and there is a large amount of overhead in the database describing common letter combination structures, as well as how they are linked to a QWERTY keyboard layout. The database also collects the information on the words that the user has typed, as well as the errors that they made.

The typing process goes as this:

  • First, a random combination of words presented to the user to type.
  • Second, as the user types, the data about the words that they type and errors they make is passively collected and stored in the database.
  • Third, when the exercise is finished, the gathered data is analysed and a new exercise is generated for the user on the basis of their performance.
In this fashion the user step by step is working on their troublesome areas, the ones in which they tend to make a greater number of errors. Moreover, the boredom factor is reduced because the user is not typing the same exercise over and over but rather is typing a brand new exercise each time during their training session, which still does not diminish its effectiveness in terms of getting the mechanics of typing into the students' muscle memory.

It appears that this way of interaction of a computer program with the user is a rather novel way to operate for modern software. Most commonly we have to deal with static interfaces that we may tailor to our needs to an extent (think of Firefox plugins) but it is rather infrequent when we can witness the software tailoring itself to the needs of the user. The only example that springs into mind is the autocompletion feature in address bars of the modern browsers, but that is about where it ends.

At Disclosure we believe that with the technology used in development of Intyper we are placing ourselves on the border of a huge uncharted land of a new type of human-machine interaction that is up to us to explore. We are really looking forward to take part in development of new age software that will change the way people expect computer programs to behave and that will become a partner in their work, rather than a tool.