Natural language understanding is a sub-field of artificial intelligence research devoted to making computers "understand" statements written in human languages.
Early systems such as SHRDLU, working in restricted "blocks worlds" with restricted vocabularies, worked extremely well, leading researchers to excessive optimism which was soon lost when the systems were extended to more realistic situations with real-world ambiguity and complexity.
Natural language understanding is sometimes referred to as an AI-complete problem, because natural language recognition seems to require extensive knowledge about the outside world and the ability to manipulate it. The definition of "understanding" is one of the major problems in natural language processing.
Some examples of the problems faced by natural language understanding systems:
- The sentences We gave the monkeys the bananas because they were hungry and We gave the monkeys the bananas because they were over-ripe have the same surface grammatical structure. However, in one of them the word they refers to the monkeys, in the other it refers to the bananas: the sentence cannot be parsed properly without knowledge of the properties and behaviour of monkeys and bananas.
- A string of words may be interpreted in a myriad of ways. For example, the string Time flies like an arrow may be interpreted in a variety of ways:
- time moves quickly just like an arrow does;
- measure the speed of flies like you would measure that of an arrow;
- measure the speed of flies like an arrow would;
- measure the speed of flies that are like arrows;
- a type of fly, "time-flies," enjoys arrows (compare Fruit flies like a banana.)
- English and several other languages don't specify which word an adjective applies to. For example, in the string "pretty little girls' school".
- Does the school look little?
- Do the girls look little?
- Do the girls look pretty?
- Does the school look pretty?
- linguistics, including Computational linguistics
- machine translation
- speech recognition
- natural language processing