I knew it was coming, but it’s still a bit of a shock. I hit the inevitable wall…this is indeed a “hard” problem to take on. Maybe I can’t do it after all!
The title of the post (from MIT EECS 6.864) illustrates a little corner of the problem. As an English-language sentence, what does it mean? The problem is with the ambiguity inherent in a natural language, and there isn’t a correct interpretation. The sentence is grammatically correct and semantically ambiguous. Here are the possible meanings I can think of:
- I used a telescope to observe a small web-footed broad-billed swimming bird belonging to a female person.
- I observed a small web-footed broad-billed swimming bird belonging to a female person. The bird had a telescope.
- I observed a female person move quickly downwards. The person had a telescope.
- I used a telescope to observe a female person move quickly downwards.
- I used a telescope to cut a small web-footed broad-billed swimming bird belonging to a female person.
- I used a telescope to observe heavy cotton fabric of plain weave belonging to a female person.
- I used a telescope to cut heavy cotton fabric of plain weave belonging to a female person.
There are several other possible meanings as well. The problem is that more information is needed to establish the real meaning of the sentence. It is not just world knowledge (i.e., characteristics and typical behaviors of duck and telescopes) that’s needed. I’ve already used that kind of knowledge to generate the list of meanings above. The extra information needed comes from the context in which the sentence occurs. Were the speaker and listener just talking about odd things to see ducks doing? Is this a cartoon? Are we discussing tent-making methods?
My short-term approach is likely going to be the same. I’m going to try to use PHP or C# (maybe Python), connected to WordNet and MySQL, to build a conceptual analyzer that can gradually learn the world knowledge needed to understand what I tell it in English. There are other projects (e.g., Babel, Dashboard, Mindlog, and even Godwhale) that may be trying to do the same kind of thing, so collaboration might be in the future.
It’s going to be harder than I thought!
My limited research to date has led me to the conclusion that learning to talk is hard to do unless there is some level of intelligence behind the learner. That’s where the chatterbots fall short. They exhibit a superficial ability to talk to you, but there’s nothing behind the curtain. They respond credibly only if you stick to the kind of discussion anticipated by their creators. Any deviation produces nonsense that is obvious to the human but not to the machine.
So, teaching a machine to understand normal English is going to require some kind of intelligence. Like many of the ideas I’ve been exploring, this is a well-worn intellectual path. Most of the material on the Internet that I can actually understand is from research done in the 1970s and 1980s. Some researchers concluded that coding up a program with all of the grammer rules of a language will not allow the program to capture the meaning of even a simple sentence. Most of what we say requires some kind of “world knowledge” beforeyou can make sense of it. You figure out what a sentence means by parsing the meaning as much as you parse the grammer, or maybe by doing both together. Some of the buzzwords I’ve come across in this regard are conceptual dependency, procedural semantics, and conceptual analysis. All have to do with knowledge representation and I won’t take the space here to define them as Google does a fine job of covering the topic. SHRDLU (and here) was a program written in 1972 that seemed to capture much of what I’d like to do, albeit in a very small domain. I can’t quite figure out why it was never extended.
I think I’m going to start with a simple program that’s based on these ideas about using world knowledge as as a means of understanding language. A lot of what I’ll try first is described in online course materials from GA Tech and Cardiff Univ among others. The first decisions are going to be how to represent world knowledge, what should the machine “know” to begin with (all of WordNet, for example?), and how will the machine learn new things.
I also look over my shoulder every now and then wondering when Sarah Connor is going to show up to prevent the birth of Skynet. Is this a thing that should be done?
I’ve been thinking lately about how a computer might learn to speak normal English. Of course, there are lots of really bright people working in the area of natural language processing (NLP), and it seems to be a difficult problem to solve. I wonder how children seem to do it so easily, also a topic much studied, and if a computer might be programmed to do it in the same kind of way.
Children learn languages in the context of a body existing in a physical world. They learn to match words, or sounds really, to things they see. Later they learn to connect word-sound-things to actions in order to interact with other speakers. Children seem to naturally want to communicate with others and interact with things. Even so, it takes several years of constant interaction to learn the vocabulary and grammar of a language.
Computer programs don’t really seem to have a direct connection to the physical world. I expect this means the learning process would be different. It’s pretty easy to start the program off with a large vocabulary of words (e.g., WordNet) and some fairly sophisticated grammar rules for parsing sentences. What’s hard is to do is get the program to “understand” what the words and sentences mean. The program might be able to parse a sentence given it, and generate a grammatically correct response, but it doesn’t really understand the language yet. There are lots of these kinds of programs floating about (e.g., Alicebot) and they’re pretty impressive…but they don’t understand.
So, what does it mean for a computer program to understand English? How would a program learn to understand?
Unfortunately, you’ll probably need to go elsewhere to find anything new and exciting. I have concluded that the likelihood of my having an original thought is down in the vicinity of winning the lottery. That’s pretty low considering I don’t buy lottery tickets. In any case, I will share those thoughts I do have and ignore the fact that I’m just repeating what’s already been said. At least it’s new for me!