This document provides an introduction and background on natural language processing (NLP). It discusses the key categories of linguistic knowledge needed for NLP, including phonetics, morphology, syntax, semantics, pragmatics, and discourse. It also explains that NLP tasks involve resolving ambiguity at these different levels of language. Common models and algorithms used in NLP are described, such as state machines, formal rule systems, logic, and probabilistic models. Machine learning approaches are also discussed for automatically learning NLP representations.