Thoughts on predictive text

28 January 2008
4:09 PM

I was sending a message from my cell phone the other day and I started thinking about predictive text, the system that makes typing on a keypad tolerable. Without it we’d have to make do with multi-tap—the default setup on many phones—where you just press keys repeatedly until the letter you need shows up. To write “c”, you just press the 2-key three times, cycling through the available letters. Writing “See you tonight” takes 31 keystrokes: 77773333 99966688 8666664444448.

Predictive text works by matching numbers with likely words from a dictionary, and it substantially reduces the number of key presses necessary to type. If you want to write “hello”, you spell the word by pressing each key once. The system knows that “43556” only match up with “hello” and you save keystrokes. Now writing “See you tonight” only takes 15 keystrokes: 733 968 8664448. That’s a giant improvement (although it only gets us back to the efficiency of a real keyboard).

One of the consequences of this system is that occasionally there are multiple words that match a certain number combination. I’ve found two of the most problematic are 46, which is both “go” and “in,” and 43, which is “he” and “if.” When these conflicts arise, you just press a key to cycle through the matching words. As I cycled through words the other day I got to wondering what key combinations had the most overlapping words, so I threw together a little script. It ran through a dictionary file and converted all the entries to their predictive text equivalent and then tallied the results. Here are the top key combinations that match seven words or more.

  1. 22737 (12 words) acres, bards, barer, bares, baser, bases, caper, capes, cards, carer, cares, cases
  2. 72837 (10 words) pater, pates, paves, rater, rates, raver, raves, saver, saves, scuds
  3. 2273 (8 words) acre, bard, bare, base, cape, card, care, case
  4. 7867 (8 words) pump, puns, rump, runs, stop, sump, sums, suns
  5. 74337 (8 words) rider, rides, riffs, sheds, sheep, sheer, sider, sides
  6. 46637 (7 words) goods, goofs, homes, hones, hoods, hoofs, inner
  7. 34637 (7 words) dimer, dimes, diner, dines, finds, finer, fines
  8. 2877 (7 words) burp, burr, burs, cups, curs, cusp, cuss
  9. 7627 (7 words) roar, robs, rocs, snap, soap, soar, sobs
  10. 752837 (7 words) plates, skater, skates, slater, slates, slaver, slaves
  11. 7337 (7 words) peep, peer, reds, refs, seep, seer, sees
  12. 76737 (7 words) popes, pores, poser, poses, ropes, roses, sores
  13. 4663 (7 words) gone, good, goof, home, hone, hood, hoof
  14. 269 (7 words) any, bow, box, boy, cow, cox, coy
  15. 24337 (7 words) aider, aides, bides, cheep, cheer, chefs, cider

The one major problem I’ve encountered with predictive text is when I try to write words that aren’t in the built-in dictionary. If I enter sister’s name, Erin, the best the phone can do is “Drin.” “Caitlin” ends up being “Baitlin,” and it’s a hassle to switch back to multi-tap mode and made the correction. One solution would be to add words to the build-in dictionary, but my phone doesn’t seem to have that option. As I was thinking about the best way to accomodate all the names you might want to write and I came up with a nifty idea that developers could implement easily: all the names found in your phonebook should be added automatically to the phone’s dictionary. That way the phone could reasonably predict any of your friends’ strange or unusual names. In short, adding a name to your phonebook would be like adding it to your predictive text dictionary.

It wouldn’t be an interface breakthrough, but it would be a nice stopgap until we all have iPhones.