A survey of computational methods for understanding, generating, and manipulating human language, which offers a synthesis of classical representations and algorithms with contemporary machine learning techniques. This textbook provides a technical perspective on natural language processing--methods for building computer software that understands, generates, and manipulates human language. It emphasizes contemporary data-driven approaches,...