[ View menu ]
Main

How to remember numbers

Filed in Encyclopedia ,Ideas ,Research News
Subscribe to Decision Science News by Email (one email per week, easy unsubscribe)

RESOLVE TO MEMORIZE NUMBERS WITH THE DIGIT-SOUND METHOD

At Decision Science News, we have all kinds of numbers memorized: IP addresses, passport numbers, phone numbers, bank account numbers, logarithms, etc. Once you have stuff like this memorized, you’ll  realize how much of a hassle it was to look all this stuff up all the time. Besides, it’s fun.

But how is it done?

It is done with the digit-sound method, which we learned from Professor Jaap Murre’s neuroMod site at the University of Amsterdam. According to Murre, this amazing method traces back to 1648!

You associate a digit with a sound or sounds like this

0 z, s, soft-c ‘z’ is the first letter of zero
1 t, th, d ‘t’ has one downstroke
2 n ‘n’ has two legs (downstrokes)
3 m ‘m’ has three legs (downstrokes)
4 r ‘r’ is the last sound in fouR
5 l ‘l’ or L is the Roman numeral 50
6 soft-g, j, sh, ch ‘g’ when turned around gives ‘6’
7 k, q, hard-c, hard-g ‘k’ is made of two 7’s back-to-back
8 f, v ‘f’ when written in script looks like ‘8’
9 p, b ‘p’ when turned around gives ‘9’

Then, when you want to remember a number, you simply replace the digits with sounds and try to make a vivid phrase. Any vowels or sounds not included in the chart are ignored when you are reading back the phrase. For example, suppose you want to memorize Jenny’s phone number: 867-5309.

Here’s how we might do it:

  • Change 867 to sounds, such as “f”, “sh” and “k”
  • Change 5309 to sounds, such as “l”, “m”, “s” and “b”
  • Now insert vowels and letters not on the chart in order to generate a vivid phrase from those sounds.

We came up with the following dialog involving a parent and child at the dinner table:

–“Fish, ok?”
–“Lame! *sob*”

In this mini play, we have “f”, “sh”, “k” “l”, “m”, “s” and “b” in order, and can easily reconstruct 867-5309. Remember, when reading it back, you ignore all vowels and letters that aren’t in the chart.

The only start-up cost is memorizing the chart, but that’s not hard. There’s even a training tool so you can practice until you have the associations down pat.

Of course, since there can be a few possible sounds for each letter, you need to play around a bit to find a phrase that works for you. To generate possibilities for long numbers, we’ve written the following python script.

NOTE 1: In this code, we’ve simplified the digit-sound method to include fewer letters since we always get confused with hard vs soft letters. We find the simplified method works just fine for us.
NOTE 2: This code is written in a hackish, randomized way that generates wasteful dupes. However, we don’t care since it doesn’t output the dupes, it runs super fast, and if you have a huge number of possibilities, you don’t want to see them all anyway. That said, if people have better implementations, we’re open for suggestions. Thanks to Dan Reeves for tightening up the code a bit!
NOTE 3: You can take the output of this program and hunt for words that fit the patterns with a linux call like this.
grep -E ‘^l[aieouy]*m[aieouy]*n[aeiouy]*$’ wordlist.txt
Where you are looking for words that match “l”, “m”, “n” and wordlist.txt is a list of words, one per line. You can find many wordlists here.

#Usage. Save this file as generate.py
#Then to use, do generate.py 867 (if 867 is the number for
#which you want to generate letters)
from cStringIO import StringIO
import random
from sys import argv
from time import strftime
mstr=str(argv[1])
def genString():
        numsounds = [['s','z'], ['t','th','d'],['n'],['m'],['r'],\
['l'],['j','ch','sh',],['k','q'],['f','v'],['p','b']]
        return [random.choice(numsounds[int(i)]) for i in mstr]
i=0
myDict={}
while i<10000:
        astr=' '.join(genString())
        if not myDict.has_key(astr):
                myDict[astr]=1
                print '%-20s ==> %2d : %20s' % \
(astr,i,strftime("%Y-%m-%d %H:%M:%S"))
        i=i+1

Photo credit: http://memory.uva.nl/memimprovement/eng/phon_peg_1.htm

12 Comments

  1. Daniel Reeves says:

    Eep, Dan, I’m all for quick, brute-forcey hacks so I won’t complain about the dupiness but that genString is hurting my eyes. Allow me to blow your mind with the most elegant feature of Python: list comprehensions!

    Here’s a nicer version of the part that generates a single random mnemonic:

    numsounds = [[‘s’,’z’], [‘t’,’th’,’d’],[‘n’],[‘m’],[‘r’],[‘l’],[‘j’,’ch’,’sh’],[‘k’,’q’,’g’],[‘f’,’v’],[‘p’,’b’]]

    [random.choice(numsounds[int(i)]) for i in “8675309”]

    January 6, 2012 @ 10:52 pm

  2. dan says:

    @Daniel Reeves. Mind blown and improvement implemented (minus a few sound possibilities to make the output manageable)!

    January 7, 2012 @ 9:42 am

  3. Andrew Gelman says:

    Why do you need to memorize IP addresses?

    January 8, 2012 @ 2:06 pm

  4. dan says:

    @Andrew Because registering domain names for back-end servers would be a hassle and a waste of money. That said, I still need to ssh into them from odd places pretty regularly.

    January 8, 2012 @ 2:55 pm

  5. Daniel Reeves says:

    Also in case the SOPA bill becomes law!

    January 8, 2012 @ 10:18 pm

  6. Daniel Reeves says:

    You’ve actually sold me on this now. I tried it on my passport number and sure enough, it’s burned into my brain a couple days later. (And the mapping back to numbers works reliably too.)

    One question: Do you recommend going by phonetics or orthographics (or whatever the fancy linguistic term is for the opposite of phonetics)?

    For example, would you translate “nation” to “212” or “262”?

    The mapping seems phonetics-oriented, like how phonemes that are the same except for voicing (s & z, t & d, ch & j, k & g, f & v, p & b) are treated as equivalent. So maybe that’s an argument for focusing on the phonetics (nation->262) but I’ll probably go with whatever you consider tried and true.

    PS: And thanks for the great lifehack!

    January 8, 2012 @ 11:17 pm

  7. dan says:

    @Daniel. Glad you like it. The next time you fill in a landing card or form without having to get up and look for your documents you’ll have a special thrill.

    As a sidenote, I use the phonetics to help me remember the mappings. For instance t is easy to remember b/c it looks like a 1, but d is harder, so I use the fact they both tap the tongue on the roof of the mouth to remember they are a pair. Similarly, p looks like a backwards 9 and is easy to remember but b is harder; nonetheless p and b are easy to remember as a pair b/c they are both closed-lip plosives.

    However, to your question, I don’t use the phonetics *alone* to make mnemonics. I look for mnemonics that have *both* the phonetics and the spelling that fit into my (simplified) chart.

    So, I’d never use chimera /kimeeruh/ in a mnemonic because the k sound suggests a 7 but the spelling suggests a 6. Similarly, I wouldn’t use “nation” for 262 or 212 … too much chance I might get confused later. For the record, I might use “nosh on!” for 262. Or, keeping with the same theme, “nacho! now!”.

    I will come up different mnemonics for 262 depending on the numbers that follow it, in order to make a story. One tip, suggested by both a scientific article by L. Standing in 1973 and a recent book by magician Derren Brown, is to use a striking image. Brown suggests lewd mnemonics are more memorable and I have to agree.

    January 9, 2012 @ 12:32 am

  8. Daniel Reeves says:

    I followed your link to the source and they say unequivocally that it’s only phonetics that matter. So “nation” is “262” and “debt” is “11” not “191”. I had also been worried about double letters and avoided those initially, but it’s now clear. For example, “letter” is “514” not “5114”.

    Btw, you mention the similarity of, for example, “p” and “b”. It’s more than similarity: all of those pairs (s/z, t/d, ch/j, k/g, f/v, p/b) are actually indistinguishable when whispered. Handy for saying your lewd mnemonics to yourself under your breath!

    January 9, 2012 @ 1:59 am

  9. dan says:

    @Daniel. Nation is 262, I thought that was clear. My point is that I would never *use* nation to encode 262, as it is an accident waiting to happen. I don’t want to make myself take a version of the Stroop Task every time I decode a number. Accordingly, I make mnemonics in which the spelling and phonetics are in line with my simplified chart.

    The fact that nation is 262 would be relevant if this system were a language for communicating numbers to other people. However, for me, a single user who wants to minimize error and effort, it is irrelevant since I would not create such technically correct but begging-for-trouble mnemonics in the first place.

    January 9, 2012 @ 9:04 am

  10. Daniel Reeves says:

    Ah, I hadn’t considered the Stroop angle. I figured if there was no ambiguity then I’d just go with the official rules.

    I’m still kind of inclined that way, given that this system has centuries of history. Your Stroop argument is compelling but maybe the potential confusion is surmountable with practice and that might be worth it if it gives you more flexibility to generate memorable (ie, lewd) phrases.

    January 9, 2012 @ 11:11 am

  11. dan says:

    @Danny To each his own. The numbers I choose to remember include some I want to get exactly right so I choose play it safe. Or I should say I’ve chosen to play it safe after experimenting with this system for several years. Also, as I mention in the post (where I say “if you have a huge number of possibilities, you don’t want to see them all anyway”), I think it’s better to have some constraints on the possible space of mnemonics. It’s easier to be creative when you have some constraints in effect (a little something I picked up doing improv).

    January 9, 2012 @ 12:22 pm

  12. Tools to help you remember numbers | Decision Science News says:

    […] Two posts ago we showed you the digit sound system for remembering numbers. This week we provide two Python programs (and one R program) to help you create mnemonics. […]

    January 17, 2012 @ 7:07 pm

RSS feed Comments

Write Comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>