This document provides an introduction to natural language processing (NLP). It defines NLP as teaching computers to process human language. The two main components of NLP are natural language understanding (NLU), which is deriving meaning from language, and natural language generation (NLG), which is generating language from meaning representations. The document discusses the history of NLP from early rule-based systems to current deep learning approaches. It also outlines several applications of NLU like classification and summarization, and of NLG like machine translation and caption generation. Finally, it introduces regular expressions as a tool for text processing in NLP.