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, focusing on techniques from supervised and
unsupervised machine learning. The first section establishes a
foundation in machine learning by building a set of tools that will be
used throughout the book and applying them to word-based textual
analysis. The second section introduces structured representations of
language, including sequences, trees, and graphs. The third section
explores different approaches to the representation and analysis of
linguistic meaning, ranging from formal logic to neural word embeddings.
The final section offers chapter-length treatments of three
transformative applications of natural language processing: information
extraction, machine translation, and text generation. End-of-chapter
exercises include both paper-and-pencil analysis and software
implementation.
The text synthesizes and distills a broad and diverse research
literature, linking contemporary machine learning techniques with the
field's linguistic and computational foundations. It is suitable for use
in advanced undergraduate and graduate-level courses and as a reference
for software engineers and data scientists. Readers should have a
background in computer programming and college-level mathematics. After
mastering the material presented, students will have the technical skill
to build and analyze novel natural language processing systems and to
understand the latest research in the field.