Part of what has impressed and worried me about Watson winning at Jeopardy is how difficult context must be to program. A coworker said "Meredith is Genesis" to the intern yesterday. Only about half the people present, all of whom work in the NH mental health system, understood what was being said.
If you play with it, you could find a dozen possible meanings for the reference, but would likely be wrong. (Michael and Retriever might pull it out.) The full meaning of the phrase is "The town of Meredith, NH is in the service region of the community mental health center Genesis Behavioral Health in Laconia."
That degree of subtlety would be difficult to teach a computer. One can see how it could be programmed to know it is in a NH mental health context and thus assign certain meanings to words that have multiple referents. Or one could also program it to recognise "Meredith" as a girl's name or a surname, and "Genesis" as a rock band or a book of the Bible, but even that gets tricky. Meredith is also a lakeport here, and of course many things in the town are named after it.
Plus subtle mishearings. These things are so tricky, in fact, that human beings often get them wrong in conversation. Minimalist references are common in our speech and we get by them 90% of the time. But not all the time. (Does this happen more frequently to married couples, or is it just because there is more conversation about diverse topics, and thus more opportunity? Or because one is male and one female?)
I don't know how you teach a computer to sort through those many meanings, some of which have never been associated before in all of human speech.