Why might you want a computer to understand natural language? Why might you not want a computer to understand natural language? What would it mean for a computer to really understand natural language? What components might contribute to the implementation of a natural language understanding system? How hard is this problem? The spirit is strong, but the flesh is weak. -> The vodka is good but the meat is rotten. AI completeness Levels of language analysis Signal level (raw acoustical signal) Phonetic level (language-specific sounds) Lexical level (words and morphology) Syntactic level (grammatical sentences) Semantic level (meanings) Pragmatic level (relations to goals, intentions, dialog roles, etc.) In what order should these levels be processed? Difficulties in computing natural language syntax Language classes and the difficulty/possibility of generation/parsing Type 3 languages (regular). Each production has only a single nonterminal symbol on its left-hand side and either a single terminal symbol or a terminal symbol followed by a nonterminal symbol on its right-hand side. Can be parsed by a finite state automaton. Type 2 languages (context-free). The left-hand side of each production must always consist of exactly one nonterminal symbol. Can be parsed by a push-down automaton. Type 1 languages (context-sensitive). The left-hand side of each production must not have a length greater than that of the right-hand side. Can be parsed by a linear bounded automaton. Type 0 languages (recursively-enumerable). No restrictions. Can be parsed with a Turing machine. Linguistic theories often make use of Type 0 languages, but because of their computational properties, most implemented systems are based on Type 2 languages. Difficulties in computing natural language semantics Assumptions about the audience made by speakers Representing events Representing complex human activities Semantic primitives Semantics of quantity Semantics of time Semantics of space Semantics of knowing and belief