Advertisement

Humanistic typing

Started by February 17, 2005 01:37 AM
5 comments, last by rai_chu 20 years ago
I've gone and written a few chatbots, and one of them had an ok representation of a human typing. I want something better. My one, currently just selects a random time between letters, and goes and makes single letter mistakes and always corrects them. What i would want to do, is to make it impossible (or near enough to), for someone to determine if it is a person or a program typing, if they can see each keypress in realtime. From, Nice coder
Click here to patch the mozilla IDN exploit, or click Here then type in Network.enableidn and set its value to false. Restart the browser for the patches to work.
One thing that you have to keep in mind is that it is more often that a person will stop typing after a word. not necessarily in the middle of a word. For instance a person usually does not have a pause when typing the work "the". It is one of those words that are completely in muscle memory.

To be able to accurately get results that are similar to humans typing write a program that logs the delays when writing a text. Then get some people to write in the program say 200 words, and send you the log file. By studying these logs you can come up with a better understanding on how people type.
BRING BACK THE BLACK (or at least something darker)
Advertisement
you could have it randomly use "teh" instead of "the"
--- krez ([email="krez_AT_optonline_DOT_net"]krez_AT_optonline_DOT_net[/email])
Some typos are more common than others - try replacing a certain character with one that's physically next to it on a keyboard (b->v, o->i, etc.)
I'm quite sure you could get some data on the commen typo's, frequency and which letters most people screw up. Useing that every time a characters is typed, use the typo frequency data as a weighting for if they screw up and what they do when they do screw up. Its very rare that people will type 'tqh' but its quite common to put 'teh' as krez mentioned. Also i think you should base the time between characters on distance and fequency. I know when typing the letter 'q' it takes alot longer then when hitting any of 'asdf' for instance - both because I use it less and its further away from normal typing pos. When typing 'x' I quite litterally have to stop sometimes to get it right.

So if it was me I would:
- base time between keys on both distance from resting pos and frequency of use (with little variations of course)
- try to find some data on which keys are the worst offenders for typing errors and add mistakes weighted by that. Google will probably help you out with the data.
ok, thanks for your input so far. My problem now, is that many different people type differently, and this is meant to be one person, so it should type uniquely.

perhaps i should type a few thousand lines, so that i can get something like a markov model, which will tell me how long it should take (on average) per key. (also, it can tell me how many times (on average) i'll make a typo and which key (on average) i'm going to hit). I could then just use rand to figure these out. (this could also be quite useful in something like word, where it corrects all of your typos for you. (and it can tell, even if your typo changed one word into another, because then you have statistically lower typos then what you should have had, so you can go back over the bit which didn't have enough typos and look for words which can be turned into a more common word using few keys. You keep doing this until you find the word that will correct the stistics.) thos you will have to keep updating the statistics, so that if they are copying from a book, and as such making only a few space typos, you don't accidentally change a word, when they just shoved two words together accidentally.

From,
Nice coder
Click here to patch the mozilla IDN exploit, or click Here then type in Network.enableidn and set its value to false. Restart the browser for the patches to work.
Advertisement
Quote:
Original post by Nice Coder
ok, thanks for your input so far. My problem now, is that many different people type differently, and this is meant to be one person, so it should type uniquely.
Nice coder


sound true to me, so I think you should consider define categories of mistake, and let your bot perform one or several of those list, but not random of all items.
another behaviors, you might consider is some people doesn't fix the keyword typo right away, they wait until they complete sentense and then review it, then they backspace to fix it. :)

This topic is closed to new replies.

Advertisement